KR20220164038A - 메모리 어레이의 매칭 패턴 - Google Patents

메모리 어레이의 매칭 패턴 Download PDF

Info

Publication number
KR20220164038A
KR20220164038A KR1020227038570A KR20227038570A KR20220164038A KR 20220164038 A KR20220164038 A KR 20220164038A KR 1020227038570 A KR1020227038570 A KR 1020227038570A KR 20227038570 A KR20227038570 A KR 20227038570A KR 20220164038 A KR20220164038 A KR 20220164038A
Authority
KR
South Korea
Prior art keywords
pattern
memory
memory array
input pattern
array
Prior art date
Application number
KR1020227038570A
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 KR20220164038A publication Critical patent/KR20220164038A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2468Fuzzy queries
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0026Bit-line or column circuits
    • GPHYSICS
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Fuzzy Systems (AREA)
  • Neurology (AREA)
  • Automation & Control Theory (AREA)
  • Probability & Statistics with Applications (AREA)
  • Databases & Information Systems (AREA)
  • Semiconductor Memories (AREA)
  • Dram (AREA)
  • Logic Circuits (AREA)

Abstract

본 개시는 메모리 디바이스에서 패턴 매칭 동작을 수행하기 위한 시스템들 및 방법들에 관한 것이다. 메모리 디바이스는 제어기 및 메모리 어레이들을 포함할 수 있으며, 여기서 메모리 어레이들은 비트 라인들을 따라 상이한 패턴들을 저장한다. 입력 패턴은 패턴이 메모리 디바이스에 저장되어 있는지 여부를 결정하기 위해 메모리 어레이(들)에 적용된다. 워드 라인들은 메모리 어레이 내의 패턴들을 검색하기 위해 직렬 또는 병렬로 활성화될 수 있다. 메모리 어레이는 이진 숫자들, 이산 값들 또는 아날로그 값들을 저장하는 메모리 셀들을 포함할 수 있다.

Description

메모리 어레이의 매칭 패턴
관련 출원
본 출원은 2020년 6월 16일에 출원된, "메모리 어레이의 매칭 패턴"이라는 명칭의 미국 특허 번호 제16/902,685호의 우선권을 주장하고, 그 전체 개시는 본 명세서에 참고로 포함된다.
메모리 디바이스들은 상이한 메모리 어레이들로 구성되며, 여기서 메모리 어레이는 개별 메모리 셀들로 더 구성된다. 데이터는 메모리 셀들에 저장된다. 메모리 셀은 메모리 셀에 저장된 값들을 판독하기 위해 워드 라인들 및 비트 라인들을 활성화함으로써 액세스될 수 있다. 메모리 셀들은 또한 메모리 셀들에 값들을 기록함으로써 값들을 저장할 수 있다. 일반 프로세서는 메모리 디바이스에 결합되고 메모리 디바이스에 저장된 데이터를 처리하기 위해 판독 및 기록 동작들을 수행하도록 구성될 수 있다.
양태들은 첨부된 도면들을 참조하여 더 잘 이해될 수 있다. 도면들의 컴포넌트들은 반드시 일정한 비율로 그려진 것은 아니며, 대신에 본 개시의 원리들을 명확하게 예시하는 데 중점을 둔다. 또한, 도면들에서, 동일한 참조 번호들은 여러 도면들에 걸쳐 대응하는 부분들을 나타낸다.
도 1은 다양한 실시예들에 따른 패턴 매칭을 수행하는 메모리 디바이스의 도면이다.
도 2a 내지 도 2b는 다양한 실시예들에 따라 병렬로 워드 라인들을 활성화함으로써 패턴 매칭을 수행하도록 구성된 메모리 디바이스의 도면들이다.
도 3a 내지 도 3d는 다양한 실시예들에 따라 직렬로 워드 라인들을 활성화함으로써 패턴 매칭을 수행하도록 구성된 메모리 디바이스의 도면들이다.
도 4는 다양한 실시예들에 따른 기준 전류 또는 전압을 사용하여 패턴 매칭을 수행하도록 구성된 메모리 디바이스의 도면이다.
도 5는 다양한 실시예들에 따른 아날로그 값들의 퍼지 매칭(fuzzy matching)을 수행하도록 구성된 메모리 디바이스의 도면이다.
도 6은 다양한 실시예들에 따른 메모리 디바이스에서 패턴 매칭을 수행하는 다양한 예들을 예시하는 흐름도이다.
도 7은 본 개시의 일부 실시예들에 따른 메모리 디바이스를 포함하는 네트워크 시스템의 예를 예시한다.
도 8은 본 개시의 일부 실시예들에 따라 수행될 수 있는 컨볼루션 동작(convolutional operation)의 예를 예시한다.
본 개시는 메모리 디바이스에서 패턴 매칭을 수행하는 것에 관한 것이다. 동작들을 수행하고 데이터의 저장을 관리하기 위해 일반 컴퓨터 프로세서(예를 들어, 호스트 프로세스)에 의존하는 대신, 제어기 및 메모리 어레이들을 포함하는 메모리 디바이스는 패턴을 저장하고 입력 패턴들을 저장된 패턴들과 매칭시킨다. 본 명세서에서 다양한 실시예들에 설명된 바와 같이, 이러한 동작들을 수행하도록 메모리 디바이스를 구성함으로써, 처리 시간 및 리소스들은 기존 접근 방식들과 비교할 때 줄어들 수 있다.
패턴 매칭은 데이터 검색을 위한 기본 기반이며, 데이터 검색은 수많은 애플리케이션들에 대한 핵심 동작이다. 패턴 매칭을 사용할 수 있는 많은 고급 애플리케이션들이 있을 수 있다. 예를 들어, 신경망 기반 동작(neural network-based operation)들, 컨볼루션 동작들, 키-값 쌍 조회 동작(key-value pair lookup operation)들, 데이터베이스 검색들, 검색 엔진들, 콘텐츠 어드레스가능한 메모리(CAM)들은 패턴 매칭을 사용할 수 있는 몇 가지 예들에 불과하다. 패턴 매칭 동작에서, 입력 패턴이 수신된다. 입력 패턴은 일련의 값들(예를 들어, 이진 값들, 이산 값들, 아날로그 값들)일 수 있다. 동작의 결과는 패턴이 메모리에 저장되었는지 여부 및/또는 패턴이 메모리에 저장된 위치이다.
도 1은 다양한 실시예들에 따른 패턴 매칭을 수행하는 메모리 디바이스(100)의 도면이다. 메모리 디바이스(100)는 집적 회로이다. 메모리 디바이스(100)는 반도체 칩 또는 다이 또는 다이 스택일 수 있다. 메모리 디바이스(100)는 하나 이상의 메모리 어레이들(103)을 포함할 수 있다. 메모리 어레이(103)는 복수의 로우(row)들과 컬럼(column)들을 포함하고 로우-컬럼 크기에 관하여 정의될 수 있다. 도 1의 예는 r1 내지 rn으로 라벨링된 로우들 및 c1 내지 cn 컬럼들을 갖는 메모리 어레이(103)를 도시한다. 각 로우 및 컬럼 교차점에는 값을 저장하도록 구성된 메모리 셀이 있다. 예를 들어, 데이터 어레이는 [A, B, C, D]와 같은 4개의 요소들을 포함할 수 있고, 여기서 제1 요소는 A, 제2 요소는 B, 제3 요소는 C, 및 제4 요소는 D이다. 데이터 어레이 [A, B, C, D]는 데이터 어레이의 각 요소가 대응하는 메모리 셀에 저장되도록 메모리 어레이(103)에 저장될 수 있다. 예를 들어, 요소 A는 셀(r1, c1)에 저장될 수 있고, 요소 B는 셀(r1, c2)에 저장될 수 있고, 요소 C는 셀(r1, c3)에 저장될 수 있고, 및 요소 D는 셀(r1, c4)에 저장될 수 있다. 따라서, 이 예에서, 데이터 어레이 [A, B, C, D]는 제1 로우를 따라 저장되고 처음 4개의 컬럼들을 차지한다 . 이를 "비트 병렬(bit-parallel)" 구성이라고 지칭된다. 또 다른 예로서, 데이터 어레이 [A, B, C, D]는 처음 4개의 로우들을 차지하는 제1 컬럼을 따라 저장될 수 있다. 여기서, 요소 A는 셀(r1, c1)에 저장될 수 있고, 요소 B는 셀(r2, c1)에 저장될 수 있고, 요소 C는 셀(r3, c1)에 저장될 수 있고, 및 요소 D는 셀(r4, c1)에 저장될 수 있다. 이를 "비트 직렬(bit-serial)" 구성이라고 지칭된다. 각 요소 [A, B, C, D]는 이진 숫자(예를 들어, 0 또는 1, 또는 높은 값과 낮은 값), 이산 값(예를 들어, 양자화된 값(quantized value), 유한 수, 정수), 또는 아날로그 값(예를 들어, 연속수, 무리수)일 수 있다. 따라서, 메모리 어레이(103)는 로우들 및 컬럼들에 의해 어드레스가능한 복수의 어레이 요소들로서 데이터를 저장하는 데 사용되는 하드웨어 컴포넌트이다.
데이터 어레이 [A, B, C, D]를 저장하는 순수 비트 병렬 및 순수 비트 직렬 방식들에 더하여, 데이터 어레이는 또한 하이브리드 방식으로 저장될 수 있다. 예를 들어, A 및 C는 제1 컬럼에 저장되지만, C 및 D는 제2 컬럼에 저장되도록 요소들 A 및 B는 제1 로우에 저장될 수 있고 요소들 C 및 D는 제2 로우에 저장될 수 있다. 따라서, A는 B와 로우 방향(row-wise)으로, 정렬되고, C는 D와 로우 방향으로, 정렬된다. 그러나, A는 C와 컬럼 방향(column-wise)으로, 정렬되고, B는 D와 컬럼 방향으로, 정렬된다. 게다가, A와 C는 로우 방향으로 인접할 필요가 없고, B와 D는 로우 방향으로 인접할 필요가 없다. 또한, A와 C는 컬럼 방향으로 인접할 필요가 없고, B와 D는 컬럼 방향으로 인접할 필요가 없다. 따라서, 다양한 실시예들에서, 비트 직렬 및 비트 병렬 배열들의 조합들이 고려된다.
실시예들에 따르면, 메모리 디바이스(100)는 저항성 랜덤 액세스 메모리(ReRAM), 3D 크로스 포인트(3DXP), 또는 저항성 메모리 셀들 또는 오히려 그들의 전도도(conductance)를 플랙스(flex)하거나 변조하도록 제안할 수 있는 메모리 셀들을 구현하는 다른 메모리 디바이스들일 수 있다. 이러한 셀들은 다이오드들, 부동 이득을 포함한 트랜지스터들 및 대체 게이트 트랜지스터들 등이 될 수 있다. 예를 들어, 저항성 메모리 셀들은 저장하는 데이터에 따라 메모리 셀의 저항을 변조하여 데이터를 저장한다. 저항성 메모리 셀이 이진 0("0")을 저장하는 경우, 저항은 메모리 셀이 단락 회로(예를 들어, 저항성 단락)을 형성하도록 하기 위해 낮은 값으로 설정될 수 있다. 메모리 셀은 이진 1("1")을 저장하며, 저항은 메모리 셀이 개방 회로(예를 들어, 저항성 개방)를 형성하도록 하기 위해 높은 값으로 설정될 수 있다. 저항은 또한 이산 값들(예를 들어, 양자화된 값들)을 저장하기 위해 중간 저항들로 설정될 수 있다. 저항은 또한 아날로그 값들을 저장하기 위해 저항들의 범위 내에서 설정될 수 있다. 메모리 셀들은 또한 전류가 한 방향으로 흐르지만 그렇지않으면 반대 방향으로 방해받는 다이오드들과 같은 비대칭 요소(asymetric element)들을 포함할 수 있다. 메모리 셀들의 역할을 할 수 있는 다른 비대칭 요소들은 예를 들어, 트랜지스터들 및 자기 터널 접합(MTJ)들을 포함한다.
메모리 디바이스는 제어기(109), 버퍼 메모리(112), 시스템 링크(115), 및 잠재적으로 다른 집적 컴포넌트들을 포함할 수 있다. 제어기(109)는 메모리 디바이스에 의해 실행되는 로직을 구현하는 특수 목적 프로세서 또는 다른 컴포넌트일 수 있다. 제어기(109)는 데이터를 상이한 패턴들로 조직화함으로써 메모리 어레이(103)에 데이터를 저장하기 위한 전용 집적 회로부를 포함할 수 있다.
일부 실시예들에서, 제어기(109)는 메모리 디바이스(100)에 결합되는 별도의 디바이스로서 구현될 수 있다. 예를 들어, 제어기(109)는 주문형 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이(FPGA), 또는 다른 특수 목적 프로세서에서 구현될 수 있다. 따라서 제어기는 메모리 디바이스(100)에 결합하는 호스트 디바이스의 일부일 수 있다.
게다가, 제어기(109)는 입력(예를 들어, 입력 패턴)을 수신하고, 입력 패턴이 메모리 디바이스(100)에 저장된 패턴과 매칭되는지 결정하기 위해 패턴 매칭 동작들을 수행할 수 있다. 제어기(109)는 어떤 워드 라인들과 비트 라인들이 어떤 시퀀스로 활성화되는지를 제어하는 마이크로코드(microcode)를 포함할 수 있다. 워드 라인들과 비트 라인들은 선택된 워드 라인들과 비트 라인들에 전압을 인가하거나 전류를 공급함으로써 활성화된다. 이는 활성화 신호라고 지칭될 수 있다. 일부 실시예들에서, 제어기(109)는 애플리케이션에 따라 전압 또는 전류를 변화시킴으로써 활성화 신호의 강도를 조정할 수 있다.
메모리 디바이스(100)는 또한 버퍼 메모리(112)를 포함할 수 있다. 버퍼 메모리(112)는 제어기(109)의 일부로서 포함될 수 있고 또는 제어기(109)의 외부에 있을 수 있다. 버퍼 메모리(112)는 내부 버스를 통해 제어기(109)와 연결될 수 있다. 대안적으로, 버퍼 메모리(112)는 본 명세서에서 설명된 버퍼 목적들을 위해 특별히 할당된 메모리 어레이(103)의 일부일 수 있다. 이와 관련하여, 하나의 메모리 어레이(103)는 다른 메모리 어레이들(103)에 대한 버퍼 메모리로서 역할을 할 수 있다. 제어기(109)는 버퍼 메모리(112)에 기록 또는 그로부터 판독할 수 있다. 예를 들어, 버퍼 메모리(112)는 중간 데이터 또는 중간 결과들을 저장하는 데 사용될 수 있는 반면 메모리 어레이(103)는 데이터를 처리하는 데 사용될 수 있다.
메모리 디바이스(100)는 또한 시스템 링크(115)를 포함할 수 있다. 시스템 링크는 메모리 디바이스(100)와 외부 시스템들 사이에 데이터 및/또는 제어 신호들을 제공할 수 있다. 시스템 링크(115)는, 예를 들어, 메모리 어레이(103), 제어기(109), 버퍼 메모리(112), 및 다른 컴포넌트들과 같은, 메모리 디바이스(100)의 다양한 컴포넌트들에 결합할 수 있다. 따라서, 시스템 링크(115)는 이들 컴포넌트들이 서로 간에 데이터 및/또는 제어 신호들을 교환할 수 있게 하는 메모리 디바이스(100)의 다양한 컴포넌트들을 내부적으로 연결할 수 있다. 시스템 링크(115)는 메모리 디바이스(100) 외부의 외부 시스템들에 결합하기 위한 입력/출력 포트들을 포함할 수 있다. 시스템 링크(115)는, 예를 들어, DDR5 버스 또는 PCIe 버스와 같은, 입력/출력(IO) 버스일 수 있다. 이와 관련하여, 외부 시스템은 메모리 어레이(103) 및 버퍼 메모리(112)에 데이터를 판독 또는 기록할 수 있다. 게다가, 외부 시스템들은 제어기(109)를 프로그래밍하거나 그렇지않으면 제어하기 위해 제어기(109)에 제어 신호들을 송신할 수 있다.
외부 시스템은 PCB 마더보드를 갖는 호스트 프로세서를 포함할 수 있으며, 여기서 메모리 디바이스(100)는 DDR4, DDR5 또는 PCIe 등과 같은 버스를 통해 호스트 프로세서에 연결된다. 외부 시스템은 운영 체제, 애플리케이션들, 라이브러리들, 스크립트들, 또는 프로그래밍 언어들을 실행할 수 있다. 외부 시스템은 하나 이상의 서버 랙(server rack)들 또는 컴퓨터들 또는 다른 배열들을 포함할 수 있다. 서버는 단일 설치이거나 많은 상이한 지리적 위치들에 분산될 수 있다. 외부 시스템은 호스트 컴퓨팅 리소스, 그리드 컴퓨팅 리소스 및/또는 임의의 다른 분산 컴퓨팅 배열을 함께 포함할 수 있는 복수의 컴퓨팅 디바이스들을 포함할 수 있다. 일부 경우들에, 외부 시스템은 처리, 네트워크, 저장소, 또는 다른 컴퓨팅 관련 리소스들의 할당된 용량이 시간에 따라 변할 수 있는 탄력적 컴퓨팅 리소스에 대응할 수 있다. 외부 시스템은 컴퓨팅 시스템의 리소스들을 사용하는 하나 이상의 가상 머신들을 구현할 수 있다. 다양한 소프트웨어 컴포넌트들은 하나 이상의 가상 머신들에서 실행될 수 있다. 외부 시스템은 또한 추가 메모리 디바이스들을 포함할 수 있다. 이와 관련하여, 메모리 디바이스(100)의 인스턴스는 시스템에 설치된 임의의 추가 메모리 디바이스들(100)의 데이터를 질문(query), 제어 또는 액세스할 수 있다.
시스템 링크(115)는 메모리 디바이스(100)가 컨볼루션 신경망을 함께 결합하거나 별도로 구현하거나 또는 다른 컨볼루션 동작들을 수행하는 외부 시스템들에 결합하도록 할 수 있다. 예를 들어, 메모리 디바이스(100)는 신경망 내의 레이어 또는 신경망 내의 다중 레이어들을 구현할 수 있다. 예를 들어, 메모리 디바이스(100)는 컨볼루션 레이어를 구현하는데 사용될 수 있다. 시스템 링크(115)는 메모리 디바이스(100)의 출력들을 추출하고 이들을 다른 메모리 디바이스들 또는 외부 시스템의 다른 부분들에 위치한 신경망의 상이한 레이어들에 입력할 수 있다. 신경망의 풀링 레이어(pooling layer)는 메모리 디바이스(100)의 시스템 링크(115)로부터 출력들을 획득할 수 있고, 풀링 동작들을 수행할 수 있고, 그 결과를 입력들로서 메모리 디바이스(100)에 전달할 수 있다. 예를 들어, 메모리 디바이스(100)에 의해 생성된 출력 데이터는 시스템 링크(115)에 의해 액세스되고 풀링 레이어에 의해 외부적으로 처리될 수 있고, 여기서 이러한 결과들은 추가 처리를 위해 시스템 링크(115)를 통해 메모리 디바이스(100)의 메모리 어레이(103)에 공급된다. 도 1은 전체 아키텍처의 설명을 제공하지만, 아래에서 논의되는, 나머지 도면들은 다양한 실시예들에 따른 메모리 디바이스(100)에서 데이터가 처리되는 방법의 보다 구체적인 예들을 제공한다.
도 2a 내지 도 2b는 다양한 실시예들에 따라 병렬로 워드 라인들을 활성화함으로써 패턴 매칭을 수행하도록 구성된 메모리 디바이스(100)의 도면들이다. 도 2a 내지 도 2b는 패턴들의 제1 세트를 저장하는 메모리 디바이스(100)의 제1 부분(203) 및 패턴들의 제2 세트를 저장하는 메모리 디바이스(100)의 제2 부분(206)을 도시한다. 메모리 디바이스(100)의 부분(203, 206)은 하나 이상의 메모리 어레이들(103)에 걸쳐 있을 수 있다. 예를 들어, 제1 부분(203)은 제1 메모리 어레이(103)의 부분일 수 있고 제2 부분(206)은 제2 메모리 어레이의 부분일 수 있다. 대안적으로, 제1 및 제2 부분들(203, 206)은 동일한 메모리 어레이(103)의 일부일 수 있다.
패턴들의 제2 세트는 제1 세트의 패턴들에 대해 반전된다. 예를 들어, 제1 부분(203)의 제1 패턴은 제2 부분(206)의 대응하는 버전을 가질 수 있고, 여기서 대응하는 버전은 제1 패턴에 대해 반전된다. 반전된 패턴(예를 들어, 안티 패턴)은 원래 패턴에 대해 각 비트가 반전된다. 예를 들어, 패턴 [0100]은 [1011]의 반전된 패턴을 갖는다. 비트들이 다중 상태인 경우, 그 다음 그들 개별의 다중 상태 값들이 반전된다(예를 들어, 이진 "01"을 저장하는 쿼드 상태(quad-state) 비트(2비트 이진 값을 인코딩할 수 있는 4개의 상태들을 가진 비트)는 이진 값 "10"에 대응하는 자신의 상태로 반전된다).
메모리 디바이스(100)는 비트 라인들(212) 및 워드 라인들(215)을 포함한다. 각 부분(203, 206)은 대응하는 비트 라인(212) 및 대응하는 워드 라인(215)에 의해 액세스가능한 메모리 셀들을 포함한다. 활성화 신호는 단일 메모리 셀에 액세스하기 위해 비트 라인(212) 및 워드 라인(215)을 선택할 수 있다. 게다가, 활성화 신호는 복수의 메모리 셀들에 병렬로 액세스하기 위해 다중 비트 라인들(212) 및/또는 다중 워드 라인들(215)에 인가될 수 있다.
메모리 디바이스(100)는 또한 감지 증폭기들(219)의 어레이를 포함한다. 어레이의 각 감지 증폭기(219)는 메모리 디바이스의 상이한 비트 라인들(212)에 결합되도록 재구성될 수 있다. 제어기(109)는 감지 증폭기들이 대응하는 비트 라인들(212)에 결합되는 방식을 제어하기 위해 그들을 재구성할 수 있다. 감지 증폭기는 하나 이상의 비트 라인들(212)에 결합할 수 있고 상이한 메모리 어레이들(103)의 상이한 비트 라인들(212)에 더 결합할 수 있다. 일 실시예에서, 감지 증폭기들의 어레이는 제1 부분(203) 및 제2 부분(206) 모두에 결합한다.
메모리 디바이스(100)는 입력 패턴(222)을 수신하고 입력 패턴이 메모리 디바이스에 저장되어 있는지 여부를 결정할 수 있다. 게다가, 메모리 디바이스(100)는 패턴의 메모리 위치에 대응하는 비트 라인(212) 및 잠재적으로 워드 라인들(215)을 식별함으로써 입력 패턴이 저장되어 있는 위치를 식별할 수 있다. 메모리 디바이스(100)는 식별된 위치와 연관된 다른 위치들에 더 액세스할 수 있다. 예를 들어, 액세스 값들은 식별된 키(키-값 조회)에 기초할 수 있다.
예를 들어, 제어기(109)는 입력 패턴(222)을 메모리 디바이스(100)의 제1 부분(203) 및 제2 부분(206)에 적용하도록 구성될 수 있다. 감지 증폭기들(219)의 어레이는 메모리 디바이스(100)의 제1 부분(203) 또는 제2 부분(206)의 입력 패턴(222)과 실질적으로 매칭되는 패턴을 저장하는 비트 라인(212)을 식별할 수 있다.
예시하기 위해, 도 2a는 패턴 매칭을 위한 제1 시퀀스를 도시하고 도 2b는 패턴 매칭을 완료하기 위한 제2 시퀀스를 도시한다. 패턴들의 제1 세트를 저장하기 위해, 패턴들의 제1 세트의 각 패턴은 비트 직렬 배향으로 저장될 수 있으며, 여기서 각 패턴은 비트 라인(212)을 따라 저장된다. 이 예에서, 패턴은 4비트 길이이다. 비트 라인 BL A1은 제1 패턴 MSB=>[0, 0, 0, 0]<=LSB를 저장하고, 비트 라인 BL A2는 제2 패턴 MSB=>[1, 0, 0, 0]<=LSB을 저장하는 방식이다. 도 2a는 16개의 고유한, 4비트 패턴들의 저장을 도시하지만 임의의 패턴들의 수가 저장될 수 있다. 게다가, 중복된 패턴(duplicate pattern)들이 저장될 수 있다. 4비트 길이 이상의 긴 패턴들이 저장될 수 있다. 패턴들은 임의의 순서로 저장될 수 있다. 메모리 디바이스에 저장된 패턴들은 패턴 매칭을 수행하기 전에 저장된다. 이와 관련하여, 패턴들은 입력 패턴(222)에 매칭될 수 있는 타겟 패턴들로 간주될 수 있다.
역 패턴들의 세트는 메모리(206)의 제2 부분과 같은, 메모리의 상이한 부분에 저장된다. 비트 라인 BL A1에 저장된 패턴의 역은 MSB=>[1, 1, 1, 1]<=LSB이고 비트 라인 BL B1을 따라 저장된다. 비트 라인 BL A2에 저장된 패턴의 역은 MSB=>[0, 1, 1, 1]<=LSB이고 비트 라인 BL B2, 등을 따라 저장된다. 따라서, 제1 부분(203)의 패턴들의 수는 제2 부분이 제1 부분(203)에 각 패턴의 역 버전을 저장하기 때문에, 제2 부분(206)의 패턴들의 수와 동일할 수 있다. 다른 실시예들에서, 패턴 및 그 역 패턴 모두는 동일한 비트 라인(212)을 따라 저장되고 일관된 MSB 대 LSB 방향을 갖는다. 방향 자체는 패턴들과 역 패턴들 모두에 대해 동일한 순서를 고수하는 한 중요하지 않다.
도 2a의 예에 도시된 바와 같이, 패턴 및 그에 대응하는 역 패턴은 동일한 감지 증폭기(219)에 결합된다. 예를 들어, 감지 증폭기 SA 1은 BL A1 및 BL B1에 결합하고, 감지 증폭기 SA 2는 BL A2 및 BL B2에 결합하는 방식이다. 그들은 상이한 감지 증폭기들에 결합될 수 있지만, 아래에서 더 자세히 논의되는 바와 같이 이들의 상관 관계(패턴의 위치 및 역 패턴의 연관된 위치)가 중요하다.
각 패턴은 몇몇의 비트들을 포함하며, 각 비트는 상이한 워드 라인(215)을 통해 액세스 가능하다. 예를 들어, WL A1은 패턴의 최하위 비트(LSB)에 액세스하는 반면 WL A4는 패턴의 최상위 비트(MSB)에 액세스한다. 제2 부분(206)에 저장된 역 패턴들에 대해, WL B1은 패턴의 LSB에 액세스하는 반면 WL B4는 패턴의 MSB에 액세스한다.
도 2a에 도시된 제1 시퀀스에서, 제1 부분(203)에 저장된 패턴들의 제1 세트는 패턴 매칭 동작의 일부로서 먼저 액세스된다. 입력 패턴(222)은 제어기에 의해 수신되며, 이 예에서, 입력 패턴(222)은 MSB로 시작하여, [1, 1, 0, 0]이다. 메모리 디바이스(100)는 이 입력 패턴이 메모리 디바이스(100)에 저장되어 있는지 및 어디에 저장되어 있는지를 결정하도록 구성된다. 도 2a에 도시된 바와 같이, 입력 패턴(222)은 BL A4에 저장된다. 다음 예는 이러한 결정이 어떻게 이루어지는지 설명한다.
제1 시퀀스에서, 제어기(109)는 활성화 신호(예를 들어, 전류 또는 전압 또는 주파수 또는 듀티 사이클 또는 유사한 신호)를 제1 부분(203)의 특정 워드 라인들(215)에 인가한다. 이 실시예에서 활성화 신호의 강도는 미리 결정된, 고정된 값일 수 있다. 활성화 신호를 수신하는 워드 라인들(215)은 워드 라인들(215)을 입력 패턴(222)에 매핑할 때 이진 1에 대응하는 워드 라인들(215)이다. 예를 들어, 입력 패턴(222[1, 1, 0, 0])은 워드 라인들 WL A4 내지 WL A1(MSB로 시작)에 적용된다. 따라서, WL A4 및 WL A3은 이진 1에 대응하는 반면 WL A2 및 WL A1은 이진 0에 대응한다. WL A4 및 WL A3은 입력 패턴(222)의 값들에 기초한 활성화 신호에 의해 활성화되기 위해 존재한다. 다음으로, 감지 증폭기(219)는 그것이 결합된 각 비트 라인(222)에서 신호를 수신한다. 이는 감지 증폭기 신호로 지칭될 수 있다. 감지 증폭기 신호는 전압 또는 전류일 수 있다. 강한 감지 증폭기 신호는 저항성 단락을 나타내는 반면 약한 감지 증폭기 신호는 저항성 개방을 나타낸다. 메모리 셀이 이진 0을 저장하는 경우, 전류가 메모리 셀을 거쳐 쉽게 흐르는 저항성 단락 상태로 설정될 수 있다. 감지 증폭기(219)는 이를 강한 감지 증폭기 신호로 검출하여, 저항성 단락을 나타내고, 이진 0이 메모리 셀에 의해 표시됨을 추가로 나타낸다. 다중 메모리 셀들이 활성화될 때, 메모리 셀들을 거쳐 전류 또는 전압이 집계된다. 여전히, 선택된 모든 메모리 셀들이 저항성 개방 상태로 설정될 경우, 감지 증폭기 신호가 모든 메모리 셀들이 이진 1 값을 나타내도록 약해질 수 있다.
도 2a의 예에서, BL A1 내지 BL A16 범위의 메모리 셀들을 어드레싱하는 WLA4 및 WLA3이 활성화된다. 저항성 단락으로 설정된 메모리 셀들 중 임의의 것은 관련 감지 증폭기(219)에 의해 감지되는 전류 또는 전압 신호를 생성할 것이다. 여기서, BL A1은 활성화된 셀들 중 적어도 하나에 대한 저항성 단락을 나타내는 감지 증폭기 SA 1에 신호를 생성한다. 도 2a는 이를 감지 증폭기 SA 1을 향한 BL A1의 상단에서 화살표로 묘사한다. 마찬가지로, BL A2는 활성화된 셀들 중 적어도 하나에 대한 저항성 단락을 나타내는 감지 증폭기 SA 2에 대한 강한 신호를 생성한다. 예를 들어, WL A4 및 BL A2에서 셀은 저항성 단락으로 설정되어, 강한 신호를 생성한다. 그러나, BL A4는 WL A4 및 WL A3이 활성화될 때 약한 신호를 생성한다. 이는 WL A4 및 BL A4의 셀과 WL A4 및 BL A4의 셀이 이진 1, 저항성 개방으로 설정되었음을 나타낸다. 이는 약한 신호이기 때문에, 화살표가 감지 증폭기 SA 4에 대한 BL A4의 상단에 도시되지 않는다. 저항성 개방 상태로 설정된 모든 셀들은 전류가 거의 또는 전혀 흐르지 않거나 전압 차이가 거의 또는 전혀 없다.
도 2a에 도시된 제1 시퀀스는 병렬 또는 직렬로 모든 비트 라인들 BL A1 내지 A16을 활성화할 수 있다. 활성화를 위한 비트 라인들의 활성화는 비트 라인을 특정 바이어스 레벨로 바이어싱하는 감지 증폭기들에 의해 수행될 수 있다. 제1 시퀀스가 완료되면, 감지 증폭기들(219)은 BL A4, BL A8, BL A12, 및 BL A16에서 강한 전류 또는 전압을 갖는 신호가 수신되지 않음을 검출했다. 이는 이러한 비트 라인들(212)이 입력 패턴(222)에 대해 부분적으로 매칭 패턴을 포함한다는 것을 의미한다. 구체적으로, 이들 비트 라인들(212) 각각은 입력 패턴(222)의 이진 것들과 동일한 위치에 이진 1을 갖는 개별의 패턴들을 포함한다. 도 2b는 제2 부분(206)에 저장된 역 패턴들의 세트에 대해 입력 패턴(222)의 이진 0들을 평가함으로써 패턴 매칭 동작을 완료하는 데 사용되는 제2 시퀀스를 도시한다.
도 2b에서, 입력 패턴(222)의 이진 0 값들에 대응하는 워드 라인들(215)은 제어기(109)에 의해 활성화된다. 이 경우, WL B1 및 WL B2는 입력 패턴(222)의 이진 0 값들에 매핑되므로, 활성화된다. WL B1 및 WL B2에서 저항성 개방들(예를 들어, 이진 것들)을 갖는 비트 라인들(212)은 전류 또는 전압이 거의 또는 전혀 없는 신호를 생성하는 반면 모든 다른 비트 라인들(212)은 검출된 전류 또는 전압을 나타내는 강한 신호들을 생성한다. 여기서, WL B1 내지 BL B4는 이진 것들로 설정된 셀들을 갖는다. WL B5 내지 BL B16은 적어도 하나의 이진 0을 갖는 셀들을 갖는다.
제1 시퀀스(도 2a) 및 제2 시퀀스(도 2b)의 완료에 대해, 감지 증폭기 SA 4는 두 시퀀스들에 대한 저항성 개방들의 존재를 검출한 유일한 감지 증폭기(219)였다. 그러므로, 메모리 디바이스(100)는 입력 패턴(222)이 하나의 매치를 갖고 그 매치가 BL A4에 저장된다고 결정했다. 또한, 패턴의 역이 BL B4에 저장된다. 이는 패턴 매칭 동작을 완료한다.
일부 실시예들에서, 각 감지 증폭기(219)는 제어기(109)에 의해 활성화 또는 비활성화될 수 있다. 제1 부분(203)에서 패턴 매칭을 수행하는 제1 시퀀스 이후, 감지 증폭기들(219)는 부분 패턴(예를 들어, SA 1, SA 2, SA 3, SA 5, SA 6, SA 7, SA 9, SA 10, SA 11, SA 13, SA 14, SA 15)을 감출하지 못한다. 다시 말해서, WL A3 및 WL A4가 활성화될 때 하나 이상의 저항성 단락들을 포함하는 비트 라인들(212)은 부분 매치가 없음을 나타내는 강한 전류 또는 전압 신호를 생성한다. 이들 비트 라인들에 대한 감지 증폭기(219)는 비활성화되고 BL B 세트로부터 비활성화된 감지 증폭기 비트 라인 연결들에 대응하여 고임피던스 상태(또는 바이어스 없음 상태)에 놓일 수 있다. 그런 다음, 제2 시퀀스에 대해, 오직 SA 4, SA 8, SA 13 및 SA 16이 그들이 부분 매치를 갖는 비트 라인들(212)에 결합되기 때문에 활성화된다.
일부 실시예들에서, 제1 세트의 각 패턴 및 제2 세트의 각 패턴은 비트 직렬(bit-serial) 배향으로 저장된다. 이와 관련하여, 단일 패턴은 단일 비트 라인(212)을 따라 저장될 수 있다. 일부 실시예들에서 제2 패턴의 매치/검색은 BL들 A에 대해 개시될 수 있는 반면 제1 패턴은 BL들 B에 대한 제2 패스 동안 여전히 매치/검색된다. 이는 파이프라이닝(pipelining)이라고 지칭될 수 있다.
도 2a 및 2b는 제어기(109)가 제1 부분(203)의 복수의 워드 라인들(215) 또는 제2 부분(206)의 복수의 워드 라인들(215)을 동시에 활성화함으로써 입력 패턴(222)을 적용하도록 구성된 예를 도시한다. 예를 들어, 제1 시퀀스에서, 워드 라인들 WLA1 내지 WL A4의 서브세트는 동시에 활성화될 수 있다. 서브세트는 입력 패턴(222)에 의해 정의된다. 예를 들어, 이진 1을 갖는 입력 패턴(222)의 비트 위치들에 대응하는 워드 라인들(215)은 동시에 활성화된다. 이는 병렬 처리를 위해 처리 시간을 줄이도록 한다. 유사하게, 제2 시퀀스에서, 워드 라인들 WL B1 내지 WL B4의 서브세트는 동시에 활성화될 수 있으며, 여기서 서브세트는 입력 패턴(222)의 역의 값들에 의해 정의된다.
메모리 디바이스가 데이터를 저장하기 위해 메모리 셀 저항 또는 전도도를 변조하는 ReRAM 또는 다른 기술을 포함하는 실시예들에서, 제어기(109)는 패턴 매칭을 수행하기 위한 단락 회로들 또는 개방 회로들을 검출한다. 도 2a 및 도 2b의 예들에서 논의된 바와 같이, 제어기(109) 및 감지 증폭기들(219)은 워드 라인 활성화들을 통한 시퀀싱의 코스에 걸쳐 패턴 매칭을 수행하기 위해 개방 회로들 및 단락 회로들을 갖는 메모리 셀들을 갖는 비트 라인들(212)을 검출하기 위해 함께 작동한다. 더욱이, 워드 라인 활성화들의 시퀀스들 사이에서, 제어기는 단락 회로들 또는 개방 회로들이 검출되었는지 여부에 따라 일부 감지 증폭기들(219)을 비활성화할 수 있다. 대안적으로, 감지 증폭기들(219) 그들 자체는 단락 회로가 검출되는 경우 제1 통과 후에 그들 자체를 비활성화하는 피쳐를 가질 수 있고 제어기(109)로부터의 공통 리셋 신호에 의해 다시 활성화될 수 있다. 이는 후속 시퀀스들에서 패턴 매칭에 대해 테스트되는 비트 라인들(212)을 필터링할 수 있다.
일부 실시예들에서, 제어기(109)는 입력 패턴(222)을 복수의 세그먼트(segment)들로 분할함으로써 복수의 파이프라인 단계(pipeline stage)들에서 입력 패턴(222)을 적용하도록 구성된다. 예를 들어, 입력 패턴(222)이 16비트의 길이인 경우, 입력 패턴은 또한 16비트 길이인 저장된 패턴들의 4비트 세그먼트들에 대해 매칭되는 4개의 4비트 세그먼트들로 분할될 수 있다. 그러나, 전체적으로, 한 번에 16비트 패턴을 적용하는 것도 가능하다. 4비트 패턴의 예는 단지 예시적인 이유들로 제공된다. 임의의 비트 길이 패턴이 가능하다. 입력 패턴(222)의 세그먼트들은 또한 각 입력 패턴 세그먼트가 메모리 디바이스(100)에 저장된 패턴들의 동일한 크기 세그먼트들에 대해 매칭되는 한 길이가 변할 수 있다. 입력 패턴(222) 및 저장된 패턴들을 분할할 때, 각 세그먼트는 직렬 또는 병렬로 처리될 수 있다. 각 세그먼트를 직렬로 처리할 때, 동작은 입력 패턴(222)이 더 큰 입력 패턴(222)의 세그먼트인 위에서 설명된 동작과 유사할 수 있다. 각 세그먼트를 병렬로 처리할 때, 입력 패턴(222)의 각 세그먼트는 분리된 메모리 어레이들(103) 또는 감지 증폭기들(219)의 분리된 어레이들 또는 감지 증폭기들(219)의 동일한 어레이에서 처리될 수 있지만 패턴의 비트 길이와 매칭하는 더 많은 워드 라인들을 사용한다.
도 2a 및 2b는 패턴 매칭을 수행하는 일 예를 제공하지만, 다른 변형들이 고려된다. 예를 들어, 입력 패턴(222)은 반전될 수 있다. 패턴들의 세트를 저장하는 제1 부분(203)을 테스트하는 제1 시퀀스에서, 입력 패턴(222)의 이진 0 값들에 대응하는 워드 라인들(215)(반전됨)이 활성화된다. 역 패턴들의 세트를 저장하는 제2 부분(206)을 테스트하는 제2 시퀀스에서, 입력 패턴(222)의 이진 1 값들에 대응하는 워드 라인들(215)(반전됨)이 활성화된다. 두 시퀀스들 모두에 대한 개방 회로들을 검출한 감지 증폭기들(219)은 입력 패턴(222)의 역을 저장할 것이다.
제1 시퀀스 및 제2 시퀀스는 동시에 또는 직렬로 수행될 수 있다. 동시에 수행되는 경우, 제1 부분(203)은 제2 부분(206)의 메모리 어레이(103)로부터 상이한 메모리 어레이(103)를 포함할 수 있다. 따라서, 패턴들의 세트는 제1 메모리 어레이(103)에 저장되는 반면 패턴들의 세트의 역 패턴들은 제2 메모리(103)에 저장된다. 두 메모리 어레이들 모두는 동시에 테스트될 수 있다. 직렬로 수행되는 경우, 패턴들의 세트 및 패턴들의 세트의 역 패턴들은 동일한 메모리 어레이(103) 또는 잠재적으로 상이한 메모리 어레이들에 저장될 수 있다. 일부 실시예들에서, 각 감지 증폭기(219)는 각 시퀀스의 결과들을 저장하기 위한 자체 메모리 레지스터를 가질 수 있다. 이와 관련하여, 감지 증폭기(219)가 비트 라인의 개방 또는 단락 회로를 검출했는지 여부의 결과는 감지 증폭기(219)의 메모리 레지스터에 저장될 수 있다.
일부 실시예들에서 제1 시퀀스 및 제2 시퀀스는 패턴 및 그 역 패턴 둘 모두가 동일한 비트 라인에 저장되지만 메모리 어레이(103)의 제1 부분(203)의 다른 워드 라인 세그먼트들(예를 들어, 하나의 다른 것보다)일 때 동시에 수행될 수 있다. 이 경우, 입력 패턴(222) 및 그 역은 위에서 설명한 바와 동일한 방식으로 입력 패턴(222) 및 그 역의 관련 비트 값들에 대응하는 워드 라인들을 활성화함으로써 개별의 워드 라인들에 적용된다. 이 경우, 입력 패턴(222)과 그 역이 동시에 매치에 대해 테스트되고 결과는 병렬 워드 라인 활성화에 의해 단일 단계에서 획득된다(순차 월드 라인 활성화(sequential world line activation)도 가능하기 때문에 제한 없이).
유사한 방식으로, 몇몇 패턴들 및 그 역들은 동일한 비트 라인에 저장될 수 있다. 한 번에 그룹으로 몇몇 패턴들을 매칭/검색하는 것은 그룹에 대한 정보를 찾아야 할 때 바람직하다. 이 경우에 대한 일반적인 동작들은 데이터 프레임 동작들(예를 들어, 스파크 데이터프레임(spark dataframe) 또는 판다스 데이터프레임(pandas dataframe) 또는 SQL 데이터베이스 동작들)이다. 다음은 위에서 설명된 실시예들을 사용하여 구현될 수 있는 상위 레벨 동작들의 예이다: '그룹바이(groupBy)' 동작, '그룹바이-집계(groupBy- ggregate)' 동작, '그룹화 기준에 의한 조인' 동작, '그룹화 키에 의한 병합' 동작 등.
일부 실시예들에서, 입력 패턴(222)은 피쳐 검출의 일부일 수 있고 입력 데이터를 하나 이상의 컨볼루션 필터들과 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 입력 데이터를 포함할 수 있다. 이 실시예에서, 저장된 패턴들은 컨볼루션 필터들을 나타낼 수 있다. 다른 실시예들에서, 입력 패턴(222)은 컨볼루션 필터들을 포함하거나, 피쳐 검출의 일부일 수 있고 입력 패턴(222)을 메모리 디바이스(100)에 저장된 데이터와 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 컨볼루션 필터의 일부일 수 있다. 이 실시예에서, 저장된 패턴들은 컨볼루션 동작들을 통해 피쳐 검출의 대상이 되는 데이터를 나타낼 수 있다. 컨볼루션 동작들은 CNN 또는 DNN(Deep Neural Network)의 일부일 수 있다. 설명된 기술을 사용하면 정확한 피쳐 검출을 수행할 수 있다. 이에 대한 예는 도 8과 관련하여 설명된다.
일부 실시예들에서, 제2 부분(206)은 비트 플립(bit flip) 동작에 응답하여 역 패턴들을 저장할 수 있다. 비트 플립 동작은 각 메모리 셀을 반전시키기 위해 메모리 어레이(103)(또는 그 적어도 일부)에 적용된다. 여기서, 제1 시퀀스 후에, 비트 플립 동작은 역 패턴들을 저장하는 제2 부분(206)을 생성하기 위해 제1 부분의 각 메모리 셀을 반전시키도록 적용될 수 있다. 적어도 두 가지 경우들이 가능하다. 첫 번째 경우, 비트 반전이 제자리에서 발생할 때(예를 들어, 반전 동작을 적용한 후 제1 부분(203)이 제2 부분(206)이 되고, 여기서 이러한 반전 동작은 입력 패턴(222)을 적용할 때 사용되는 메모리 셀들 또는 상이한 주파수 또는 전압 또는 듀티 사이클에 적용된 반대 극성의 바이어스일 수 있음), 그 다음, 제2 시퀀스는 비트 플립 동작 후에 수행될 수 있다. 두 번째 경우에, 제2 시퀀스는 메모리 셀이 상이한 자극(예를 들어, 다이오드 메모리 셀 또는 부동 게이트 트랜지스터 메모리 셀)을 다르게 응답하는 경우 비트 플립 동작 동안 이 동작의 일부로 수행될 수 있다. 비트 플립 동작을 사용하는 이 실시예에서, 제1 부분(203) 및 제2 부분(206)은 동일한 물리적 메모리 셀들을 포함하지만, 이들은 상이한 시점들에서 값들을 저장한다. 따라서, 제어기(109)는 제2 시퀀스를 수행하기 전에 제1 부분(203)의 값들을 반전시키도록 구성될 수 있다. 일부 메모리 셀들은 가역적일 수 있다(특정 조건들(예를 들어, 자기장 또는 전기장, 인가된 전압의 극성, 특정 전압 바이어스)의 존재 하에 그들의 값을 1에서 0으로 또는 0에서 1로 변경). 따라서, 예를 들어, 셀들에 인가된 전압의 극성을 단순히 반전시킴으로써 역 패턴을 테스트하는 것이 가능하다. 예를 들어, 값이 '1'인 비트를 테스트하는 제1 시퀀스에서, 제1 전압 바이어스는 패턴의 해당 값을 가진 모든 비트들에 적용된다. 제2 시퀀스에서, '0'비트 값을 가진 비트들은 패턴에서 해당 값을 가진 모든 비트들에 대해, 혹시 제1 전압의 역 또는 상이한, 제2 전압을 적용하여 테스트한다. 일부 실시예들에서, 전압들을 인가하는 대신에, 전자기장은 저장된 비트들을 반전시키기 위해 메모리 어레이에 인가될 수 있다. 장은 메모리 어레이 부분의 위 또는 아래 부분에 위치한 플레이트에서 방출될 수 있다.
패턴 매칭을 위한 상위 레벨 애플리케이션의 한 예는 키 검색(주요 부분) 및 연관된 값 찾기에 기초하여, 키-값 쌍 검색을 수행하는 것이다. 키-값 쌍 검색은 키를 수신하고 키에 대응하는 값인, 키-값 쌍을 찾는 것을 포함한다. 키는 상대적으로 짧은 수들의 시퀀스일 수 있는 반면 값은 길 수 있다. 예를 들어, 키는 사용자 이름일 수 있고 값은 사용자 이름과 연관된 긴 보고서일 수 있다. 일부 실시예들에서, 키는 값에 비해 길 수 있다. 예를 들어, 상대적으로 긴 학생 이름이 키가 될 수 있고 연관된 등급이 상대적으로 짧은 값일 수 있다. 일부 실시예들에서, 키는 하나 이상의 값들에 대응할 수 있다. 일부 실시예들에서, 키는 대응하는 값들을 갖지 않을 수 있다. 키-값 룩업을 구현할 때, 입력 패턴(222)은 키일 수 있다. 패턴 매칭 동작은 어떤 비트 라인들(212)이 키를 포함하는지 식별한다. 키를 저장하는 비트 라인(들)(212)은 값의 위치에 매핑할 수 있다. 패턴 매칭 동작의 출력은 키를 저장하는 비트 라인(212)과 연관된 값이다. 예를 들어, 입력 패턴(222)이 키를 나타내는 경우, 메모리 디바이스(100)는 그들의 키가 비트 라인 BL A4에 저장되어 있다고 결정한다. 즉, 이 비트 라인(212)은 키-값 연관 값을 저장하는 메모리 디바이스(100)의 부분(예를 들어, 특정 메모리 어레이, 특정 워드 라인 범위, 및/또는 특정 비트 라인 범위, 등)에 매핑하는 BL A4의 비트 라인 식별자를 갖는다. 따라서, 입력은 입력 패턴(222)(예를 들어, 키)이고 출력은 입력 패턴(222)을 저장하는 비트 라인(예를 들어, BL A4)에 의해 참조되는 메모리 위치에 저장된, 값이다. 일부 실시예들에서 값은 키 위 또는 아래의 동일한 비트 라인에 저장될 수 있다. 일부 실시예들에서, 비트 라인은 값과 함께 인덱스를 저장할 수 있다. 인덱스은 액세스될 수 있으며 값의 위치를 지칭할 수 있다. 일부 실시예들에서, 키 또는 연관된 인덱스는 키의 제2 부분 또는 제2 키의 위치를 지칭할 수 있고, 이는 차례로 키의 제3 부분 또는 제3 키 등을 지칭할 수 있고, 이는 계층적 룩업들 및 검색들의 구현을 허용할 수 있다. 파이프라이닝으로 보강된, 이러한 룩업들은 예를 들어, 운영 체제(OS) 페이지 테이블 워크들의 경우들에, OS가 예를 들어 페이지 폴트 이벤트 동안 페이지 테이블 엔트리들을 검색할 때, 유용하다. 키는 일치하지만, 매핑(예를 들어, 각 키에 대한 값이 메모리 디바이스(100) 내에서 위치될 수 있는 곳을 정의하는 고정 방식)이 있는 한 값들은 어디에나 저장될 수 있다. 예를 들어, 제1 메모리 어레이(103)는 키들을 저장할 수 있고 제2 메모리 어레이(103)는 각 키에 대해 동일한 위치들에 값들을 저장할 수 있다. 또한, 키-값 매핑들은 다양할 수 있다(예를 들어, 일대일, 위로, 다대다). 패턴들은 그래프들, 신경망들에서 사용되는 데이터(예를 들어, 필터들 검색 입력들 등), 맵들, 사전들 등을 나타낼 수 있다.
도 3a 내지 도 3d는 다양한 실시예들에 따라 직렬로 워드 라인들을 활성화함으로써 패턴 매칭을 수행하도록 구성된 메모리 디바이스의 도면들이다. 도 3a 내지 도 3d는 메모리 어레이의 일부의 복수의 워드 라인들을 순차적으로 활성화함으로써 메모리 어레이의 일부에 입력 패턴(222)을 적용하도록 구성된 제어기(109)를 도시한다. 워드 라인들의 순차적 활성화는 역 패턴들을 저장하지 않고 패턴 매칭을 허용한다. 이는 패턴들을 저장하는 데 필요한 메모리의 양이 줄어들 수 있지만, 패턴 일치 동작을 수행하는 데 걸리는 시간이 증가할 수 있다. 도 3a 내지 도 3d는 또한 각 순차적 워드 라인 활성화에 대해, 각 감지 증폭기가 개별의 감지 증폭기에 결합된 비트 라인들에 대한 전류 또는 전압 차의 흐름을 측정한다는 것을 도시한다.
도 3a에서, 패턴들의 세트는 메모리 디바이스(100)의 부분에 저장된다. 부분은 하나 이상의 메모리 어레이들에 걸쳐 있을 수 있다. 이 예에서, 부분은 BL A1 내지 BL A16으로 식별된 비트 라인들(212)에 걸쳐 있다. 이 부분은 또한 WL A1 내지 WL A4로 식별되는 워드 라인들(215)에 걸쳐 있다. WL A1은 각 패턴의 LSB를 나타내고 WL A4는 각 패턴의 MSB를 나타낸다. 개별의 감지 증폭기(219)는 대응하는 비트 라인(212)에 결합된다. 도 2a 및 2b의 예들과 달리, 역 패턴들을 저장하는 제2 부분은 없다.
도 3a에서, 입력 패턴(222)은 입력 패턴(222)의 각 비트 또는 요소가 대응하는 워드 라인(215)에 매핑하기 위해 워드 라인들(215)의 범위에 매핑된다. 도 3a는 WL A4가 활성화되는, 제1 워드 라인 활성화(예를 들어, 제1 시퀀스)를 도시한다. 제어기는 워드 라인(215)을 활성화하기 위해 활성화 신호를 인가할 수 있다. 이진 0을 포함하는 메모리 셀들은 저항성 단락으로 설정되는 반면 이진 1을 포함하는 메모리 셀들은 저항성 개방으로 설정된다. 각 감지 증폭기(219)는 그것이 결합된 비트 라인(212)에 대한 개방 또는 단락 회로의 존재를 검출한다. 예를 들어, BL A1은 이 워드 라인 활성화 시퀀스에서 저항성 단락으로 설정된다. 이는 감지 증폭기 SA 1에 의해 검출되는 강한 전류 또는 전압 신호를 생성할 수 있다. BL A2는 이 워드 라인 활성화 시퀀스에서 저항성 개방으로 설정된다. 이는 감지 증폭기 SA 2에 의해 검출되는 약한 전류 또는 전압 신호를 생성할 수 있다.
일부 실시예들에서, 각 감지 증폭기(219)는 개방 또는 단락 회로를 검출했는지 여부를 기록하기 위해 메모리 레지스터 또는 래치를 포함할 수 있다. 다른 실시예들에서, 메모리 디바이스의 버퍼 메모리는 각 감지 증폭기의 판독값들을 기록할 수 있다. 감지 증폭기의 판독값은 전류 또는 전압 또는 전압 차의 흐름을 판독하는 것이다. 제1 워드 라인 활성화가 완료되고 감지 증폭기들(219)이 개방 또는 단락 회로를 검출한 후, 제어기(109)는 활성화된 워드 라인에 대응하는 입력 패턴(222)의 값 위치와 판독하는 각 감지 증폭기(219)를 비교할 수 있다. 이 예에서, 워드 라인 WL A4의 값 위치는 이진 1이다. 값 위치는 특정 비트 또는 요소 위치의 값이다. 이 예에서, 위치는 MSB이다. 제어기(109)는 활성화된 워드 라인(215)에 대응하는 값 위치와 동일한 값을 검출한 그 감지 증폭기들(219)을 선택한다. 즉, 이 예에서, 제어기(109)는 개방 회로(이진 1에 대응함)를 검출한 감지 증폭기들을 선택한다. 일부 실시예들에서, 감지 증폭기들은 판독의 래칭된 값에 기초하여 스스로를 선택할 수 있다.
항목(306)에 도시된 바와 같이, 비트 라인들 BL A2, BL A4, BL A6, BL A8, BL A10, BL A12, BL A14 및 BL A16에 결합된 감지 증폭기들은 선택된다. 이는 제1 워드 라인 활성화 시퀀스를 완료한다. 일부 실시예들에서, 선택되지 않은 비트 라인들(212)은 제1 워드 라인 활성화 시퀀스에 기초하여 입력 패턴과 동일한 패턴을 포함하지 않는 것으로 결정되기 때문에, 비활성화된다. 일부 실시예들에서, 감지 증폭기들(219)은 판독의 래칭된 값에 기초하여 스스로를 비활성화할 수 있다. 일부 실시예들에서, 감지 증폭기들(219)은 차동 유형(differential type), 또는 비교기 유형(comparatoar type)일 수 있다. 제어기(109)는 모든 감지 증폭기들(219)에 공통 신호를 발송할 수 있으며, 여기서 신호는 매치하는 전류 비트의 참 값에 대응한다. 제1 시퀀스의 경우, 신호는 비트 값 '1'에 대응할 수 있고, 따라서 감지 증폭기들(219)은 수신된 이 값(모든 감지 증폭기들에 공통됨)에 기초하여 차동 감지 또는 비교를 수행할 수 있다. 일부 실시예들에서, 제어기(109)가 발송하는 신호는 제어기(109)와 동일한 워드 라인 활성화 신호가 WLA4를 구동하여 알려진 참 값 '1'(제1 시퀀스 경우에서와 같이 또는 다른 경우들에서와 같이 상이한 값)을 저장하는 기준 메모리 셀을 바이어싱할 때 기준 신호에 기초하여 생성될 수 있다. 따라서, 각 감지 증폭기(219)는 자신의 신호를 메모리 셀의 알려진 참 값의 기준 신호와 구별하거나 비교할 수 있다.
도 3b는 WL A3가 활성화되는 제2 워드 라인 활성화 시퀀스를 도시한다. 제어기(109)는 이 워드 라인에 활성화 신호를 인가하고 임의의 활성화된 감지 증폭기들(219)은 그들의 대응하는 비트 라인들이 개방 또는 단락 회로에 설정된 메모리 셀들을 포함하는지 여부를 검출한다. 그 다음, 제어기(109)는 각 감지 증폭기 판독을 활성화된 워드 라인(215)(WL A3)에 대응하는 위치 값에 비교한다. 대안적으로, 각 감지 증폭기(219)는 자신의 신호를 값 '1'에 대응하는 기준 신호와 비교하고 위에서 설명한 바와 같이 자신의 신호를 래칭한다. 이 경우, 활성화된 워드 라인은 이진 1의 위치 값에 대응한다. 항목(306)에 도시된 바와 같이, 제어기(109)는 비트 라인들 BL A4, BL A8, BL A12, BL A16에 결합된 감지 증폭기들(219)을 선택한다. 일부 실시예들에서, 감지 증폭기들(219)은 판독의 래칭된 값 및 기준과의 비교에 기초하여 스스로를 선택할 수 있다. 이들 비트 라인들(212)은 활성화된 워드 라인(215)을 따라 이진 1을 포함한다. 나머지 감지 증폭기들(219)은 비활성화될 수 있다. 일부 실시예들에서, 감지 증폭기들(219)은 판독의 래칭된 값 및 기준과의 비교에 기초하여 스스로를 비활성화될 수 있다.
도 3c는 WL A2가 활성화되는 제3 워드 라인 활성화 시퀀스를 도시한다. 제어기(109)는 이 워드 라인에 활성화 신호를 인가하고 임의의 활성화된 감지 증폭기들(219)은 그들의 대응하는 비트 라인들이 개방 또는 단락 회로에 설정된 메모리 셀들을 포함하는지 여부를 검출한다. 그 다음, 제어기(109)는 각 감지 증폭기 판독을 활성화된 워드 라인(215)(WL A2)에 대응하는 위치 값과 비교한다. 대안적으로, 각 감지 증폭기(219)는 자신의 신호를 '0' 값에 대응하는 기준 신호와 비교하고 위에서 설명한 바와 같이 자신의 신호를 래칭한다. 이 경우, 활성화된 워드 라인은 이진 0의 위치 값에 대응한다. 항목(306)에 도시된 바와 같이, 제어기(109)는 비트 라인들 BL A4 및 BL A12에 결합된 감지 증폭기들(219)을 선택한다. 일부 실시예들에서, 감지 증폭기들은 판독의 래칭된 값 및 기준과의 비교에 기초하여 스스로를 선택할 수 있다. 이들 비트 라인들(212)은 활성화된 워드 라인(215)을 따라 이진 0을 포함한다. 나머지 감지 증폭기들(219)은 비활성화될 수 있다. 일부 실시예들에서, 감지 증폭기들(219)은 판독의 래칭된 값 및 기준과의 비교에 기초하여 스스로를 비활성화할 수 있다.
도 3d는 WL A1이 활성화되는 제4 워드 라인 활성화 시퀀스를 도시한다. 제어기(109)는 이 워드 라인에 활성화 신호를 인가하고 임의의 활성화된 감지 증폭기들(219)은 그들의 대응하는 비트 라인들이 개방 또는 단락 회로로 설정된 메모리 셀들을 포함하는지 여부를 검출한다. 그 다음, 제어기(109)는 활성화된 워드 라인(215)(WL A1)에 대응하는 위치 값과 각 감지 증폭기 판독을 비교한다. 대안적으로, 각 감지 증폭기(219)는 자신의 신호를 '0' 값에 대응하는 기준 신호와 비교하고 위에서 설명한 바와 같이 자신의 신호를 래칭한다. 이 경우, 활성화된 워드라인은 이진 0의 위치 값에 대응한다. 항목(306)에 도시된 바와 같이, 제어기(109)는 비트 라인 BL A4에 결합된 감지 증폭기들(219)을 선택한다. 일부 실시예들에서, 감지 증폭기들(219)은 판독의 래칭된 값 및 기준과의 비교에 기초하여 스스로를 선택할 수 있다. 이 비트 라인들(212)은 활성화된 워드 라인(215)을 따라 이진 0을 포함한다.
각 워드 라인을 활성화한 후, 나머지 감지 증폭기(들)는 입력 패턴(222)을 포함하는 비트 라인(212)에 결합되는 것으로 결정된다. 이 경우, SA 4에 결합된, BL A4는 매칭 입력 패턴(222)을 포함한다. 대안적으로, 나머지 감지 증폭기(들)는 모든 워드 라인 활성화 주기들을 통과한 1비트 누적 비교 값, 즉 각 주기에서 비교의 결과들의 이진 AND를 포함하는 것으로 결정된다. 대안적인 실시예에서, 오류의 양은 각 비트 위치에 대해 기록될 수 있다. 기준 및 저장된 값 사이의 오류 또는 차이의 양은 아날로그에서 디지털로 변환하여 얻을 수 있다. 이 차이를 사용하여, 비교 동작들을 수행하는 것도 가능하며, 비교 동작들에 기초하여 정렬 동작들은 메모리에서 수행될 수 있고: 정렬은 상대적인 양의 차이를 기준으로 한다.
일부 실시예들에서, 입력 패턴(222)은 특징 검출의 일부일 수 있고 입력 데이터를 하나 이상의 컨볼루션 필터들과 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 입력 데이터를 포함할 수 있다. 이 실시예에서, 저장된 패턴들은 컨볼루션 필터들을 나타낼 수 있다. 다른 실시예들에서, 입력 패턴(222)은 컨볼루션 필터들을 포함하거나 피쳐 검출의 일부일 수 있고 입력 패턴(222)을 메모리 디바이스(100)에 저장된 데이터와 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 컨볼루션 필터들의 일부일 수 있다. 이 실시예에서, 저장된 패턴들은 컨볼루션 동작들을 통한 피쳐 검출의 대상이 되는 데이터를 나타낼 수 있다. 컨볼루션 동작들은 CNN 또는 DNN의 일부일 수 있다. 오류의 양은 데이터와 필터에 인코딩된 기능 사이의 차이를 결정하는 데 사용될 수 있다.
게다가, 검출이 워드라인들의 순차적으로 활성화함으로써 수행되는 경우, 각 워드 라인 위치를 유의 값(significance value)으로 사용할 수 있다. 이 기술을 사용하면, 각 데이터 포인트는 숫자로 저장되고 필터 벡터 또한 숫자로 저장된다. 그러나, 각 디지털 데이터는 MSB에서 워드 라인들에 매핑된 LSB까지의 비트 그룹들에서 청크된다. 따라서, 불일치는 MSB에 더 가까운 비트의 그룹이 LSB에 더 가까운 그룹보다 더 높은 중요도를 갖도록 양자화된다. 각 그룹의 결과들은 순차적인 방법으로 누적되고 가중치가 부여되는 경우, 그 다음 i 단일 출력 번호는 각 컬럼에 대해 생성되고, 여기서 단일 출력 번호는 피쳐 필터와 데이터 사이의 불일치의 양을 나타낸다.
도 3a 내지 3d는 이진 값들로 구성된 입력 패턴의 예를 도시하지만, 입력 패턴은 이산 값(discrete value)들(예를 들어, 양자화된 값들) 또는 아날로그 값들을 포함할 수 있다. 어느 경우에서든, 감지 증폭기(219)는 활성화된 메모리 셀의 상태에 대응하는 전압의 전류를 검출할 수 있다. 검출된 전류 또는 전압은 메모리 셀의 값을 결정하는 데 사용될 수 있다. 게다가, 워드 라인들을 활성화하는 시퀀스는 예를 들어, 상단 워드 라인에서 하단 워드 라인으로의 시퀀스, 하단 워드 라인에서 상단 워드 라인으로의 시퀀스, 홀수 워드 라인들 및 그 다음 짝수 워드 라인들, 또는 임의의 다른 미리정의된 시퀀스와 같이 미리정의된 시퀀스로 수행될 수 있다. 이는 나머지 도면들과 관련하여 더 자세히 설명된다.
도 4는 다양한 실시예들에 따른 교류(AC) 또는 직류(DC) 형태의 기준 전류 또는 전압을 사용하여 패턴 매칭을 수행하도록 구성된 메모리 디바이스의 도면이다. 특히, 도 4의 예는 속도를 증가시키기 위해 병렬로 복수의 워드 라인들의 활성화를 허용하면서 또한 역 패턴의 사용 없이 패턴 검출을 도시한다. 다중 워드 라인들을 병렬로 활성화함으로써(일련의 활성화들과 반대됨), 각 비트 라인을 따라 다중 메모리 셀들도 활성화된다. 따라서, 각 셀의 전류 또는 전압은 비트 라인을 따라 결합된다. 병렬 워드 라인 활성화는 감지 증폭기(219)를 단일 셀의 상태를 검출하는 것을 어렵게 만든다. 이를 어드레스하기 위해, 비트 라인의 전류 또는 전압은 매치의 정도를 결정하기 위해 측정되고 기준 전류 또는 전압과 비교될 수 있다. 이는 퍼지 비교(fuzzy comparison)라고 지칭될 수 있다.
예시하기 위해, 도 4는 MSB에서 LSB까지의 범위인 [1, 1, 0, 0]인 입력 패턴(222)을 도시한다. 이는 MSB 위치의 WL A4로 시작하여 LSB 위치의 WL A1으로 끝나는 워드 라인 범위에 매핑된다. 이들 워드 라인들(215) 각각은 제어기가 동시에 이들 워드 라인들(215) 각각에 활성화 신호를 인가하도록 병렬로 활성화될 수 있다. 비트 라인들 BL A1 내지 BL A4는 비트 직렬 배향으로 상이한 패턴들의 세트들을 저장한다. 예를 들어, 제1 패턴은 BL A1을 따라 저장되고, 제2 패턴은 BL A2를 따라 저장되는 방식이다. 이는 이전에 논의된 도면들과 유사하다.
각 감지 증폭기(219)는 비교기 회로 또는 차동 증폭기 회로를 포함하거나 이에 결합될 수 있다. 감지 증폭기, 보다 구체적으로, 비교기는 기준 신호(407)를 수신한다. 기준 신호는 제어기(109)에 의해 생성되며, AC 또는 DC 형태의 전류 신호 또는 전압 신호일 수 있다. 기준 신호는 입력 패턴이 완벽하게 매칭될 때 값을 나타내기 위해 선택된다. 감지 증폭기(219)의 비교기는 기준 신호 및 감지 증폭기 판독 사이의 차이를 나타내는 차동 신호(410)를 생성한다. 감지 증폭기 판독은 그것이 부착된 개별의 비트 라인(212)을 따라 검출된 전류 또는 전압이다. 따라서, 차동 신호(410)가 0일 때, 비교기 및 연관된 감지 증폭기(219) 및 비트 라인은 입력 패턴과 실질적으로 동일한 패턴을 저장한 것으로 검출된다. 퍼지 매치를 구현하기 위해, 미리결정된 허용오차가 실질적으로 근접한 매치를 결정하기 위해 적용된다. 예를 들어, 차동 신호(410)가 0 차이로부터 떨어진 미리정의된 범위 내에 있으면, 퍼지 매치가 검출된다. 따라서 퍼지 매치는 검출된 전류 흐름 또는 비트 라인의 전압 차(감지 증폭기(219)에 의해 측정됨)와 차동 신호(410) 사이의 차이를 결정함으로써 결정된다. 그 차이가 미리정의된 허용 오차 내에 있는 경우, 퍼지 매치가 검출된다. 일부 경우들에서, 신호(410)는 각 감지 증폭기에 의해 디지털 형태로 변환되고 감지 증폭기 레지스터에 로컬로 래칭된다. 이러한 경우들에 퍼지 매치는 기준과 저장된 패턴 사이의 디지털 차이의 형태로 정량화된다. 일부 경우들에서 각 감지 증폭기로부터의 신호(410)는 승자 독식(winner-take-all) 동작에 참여할 수 있다: 즉, 신호(410)가 가장 작은 값을 갖는 감지 증폭기(들)가 매치들로 선택된다. 일부 경우들에서 제어기(109)는 임계값 또는 범위를 제공하고 변환 후 그의 아날로그 또는 디지털 형태의 신호(410)에 대한 특정 임계값 또는 범위 기준을 충족하는 감지 증폭기들 및 연관된 비트 라인들을 선택할 수 있다. 따라서, 도 4의 예에 도시된 바와 같이, 퍼지 매칭을 수행하면 매칭들을 식별할 뿐만 아니라 불일치 패턴과 입력 패턴 사이의 차이 정도를 추정하게 된다. 게다가, 기준과 저장된 값의 오류 또는 차이의 양은 아날로그에서 디지털로 변환하여 얻을 수 있다. 이 차이를 사용하여, 비교 동작들을 수행하는 것도 가능하며, 비교 동작들에 기초하여 정렬 동작들은 메모리에서 수행될 수 있고: 정렬은 상대적인 양의 차이를 기준으로 한다.
일부 실시예들에서, 입력 패턴(222)은 피쳐 검출의 일부일 수 있고 입력 데이터를 하나 이상의 컨볼루션 필터들과 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 입력 데이터를 포함할 수 있다. 이 실시예에서, 저장된 패턴은 컨볼루션 필터들을 나타낼 수 있다. 다른 실시예들에서, 입력 패턴(222)은 컨볼루션 필터들을 포함하거나, 피쳐 검출의 일부일 수 있고 입력 패턴(222)을 메모리 디바이스(100)의 저장된 데이터와 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 것의 일부일 수 있다. 이 실시예에서, 저장된 패턴들은 컨볼루션 동작들을 통해 피쳐 검출의 대상이 되는 데이터를 나타낼 수 있다. 컨볼루션 동작들은 CNN 또는 DNN의 일부일 수 있다.
이 프로세스를 사용하면, 혼합 신호 컨볼루션이 구현될 수 있다. 예를 들어, 각 데이터 포인트는 숫자로 저장되고 필터 벡터도 숫자이다. 각 필터 비트는 각 비트의 중요도(위치)가 드라이브 신호의 강도에 대응하도록(최하위 비트는 더 작은 드라이브 강도를 갖고 최상위 비트는 더 높은 드라이브 강도를 가짐) 드라이브 신호로 변환된다. 따라서, 비트 라인의 임의의 단락(또는 불일치)은 이를 통해 전달된 신호의 관점에서 중요도가 있을 수 있다. 더 큰 신호(전압 또는 전류의 관점에서)일수록 기능에 대한 더 많은 차이/불일치가 감지된다. 연관 '가중치 <=> 비트 위치'는 드라이브 강도로 인코딩된다. 따라서, 드라이브 강도에 따라 인코딩 '가중치 <=> 비트 위치'를 병렬로 다중 워드 라인들을 활성화함으로써 병렬 등급 컨볼루션을 제공한다.
제어기는 또한 패턴의 MSB에 대한 판독들이 패턴의 LSB에 대한 판독들보다 더 가중되도록 가중치들(413)을 적용한다. 예를 들어, 입력 패턴(222)의 MSB에 매핑된, WL A4는 4의 큰 가중치(413)에 의해 가중된 활성화 신호를 수신한다. WL A3에 매핑되는, 다음 비트 위치는 3의 중간 가중치(413)에 의해 가중된 활성화 신호를 수신한다. WL A2에 매핑되는, 다음 비트 위치는 2의 상대적으로 더 작은 가중치(413)에 의해 가중된 활성화 신호를 수신한다. WL A1에 매핑되는, LSB는 1 중 가장 작은 가중치(413)로 가중된 활성화 신호를 수신한다. 따라서, 패턴의 가장 중요한 값 위치에 대응하는 워드 라인 활성화는 더 낮은 중요성의 패턴의 값 위치에 대응하는 워드 라인 활성화에 대한 전류 또는 전압 판독과 연관된 가중치보다 더 큰 가중치와 연관된다. 이는 패턴의 MSB가 패턴의 LSB에 더 많은 영향을 미치도록 한다. 이와 관련하여, 패턴의 임의의 비트는 비트 중요성에 따라 영향을 미칠 수 있다.
도 4는 대응하는 포지션 가중치에 비례하는 개별의 활성화 강도로 각 월드 라인이 어떻게 활성화되는지를 도시한다(예를 들어, MSB는 LSB보다 더 가중된다). 각 감지 증폭기(219)는 복수의 워드 라인들의 활성화들을 위해 결합된 비트 라인에서 전류의 흐름 또는 전압 차이를 측정하도록 구성된다. 예를 들어, 워드 라인들 WL A1 내지 WL A4가 제어기가 개별의, 가중된 활성화 신호에 의해 각 워드 라인(215)을 구동하도록 활성화된다고 가정한다. 그 다음, BL A1(선택 시)은 메모리 셀 상태들에 의해 정의되는 특정 전류 흐름 또는 전압 차이를 생성할 것이다. 각 셀 상태는 저장하는 패턴에 의해 지정된 저항성 단락 또는 저항성 개방 상태로 설정될 수 있다. 이 비트 라인(212)에 결합된 감지 증폭기(219)는 비트 라인을 따라 총 합산된 전류 또는 전압을 검출한다. 비교기는 검출된 총 합산 전류 또는 전압을 비교하고 이를 기준 신호(407)와 비교한다. 위에서 언급한 바와 같이, 기준 신호는 완벽하게 매칭된 패턴의 전류 또는 전압과 동일한 전류 또는 전압 값을 갖는 전류 또는 전압이다. 이러한 완벽하게 매칭된 패턴의 전류 또는 전압과 동일한 전류 또는 전압값은 패턴값과 매치하는 기준값을 저장하는 기준 비트 라인의 워드 라인들을 구동함으로써 얻을 수 있다. 이러한 기준 비트 라인은 제어기(109)의 일부로 기준 레지스터일 수 있다.
도 4의 예에서, BL A2에 결합된, SA 2는 입력 패턴(222)과 매치하는 패턴을 저장하기 때문에, 기준 신호와 거의 매치하는 전류 또는 전압을 생성할 것이다. SA 2에 대한 차이 신호(410)는 0 또는 0에 가까울 것이다.
도 5는 다양한 실시예들에 따른 아날로그 값들의 퍼지 매칭을 수행하도록 구성된 메모리 디바이스의 도면이다. 입력 패턴(222)의 각 요소는 워드 라인들을 활성화하는 드라이버들의 일부일 수 있는, 디지털-아날로그 변환기(DAC)들에 의해 디지털 값을 아날로그 값으로 변환함으로써 생성될 수 있는, 아날로그 값일 수 있다. 게다가, 메모리 디바이스(100)에 저장된 패턴들은 각 메모리 셀의 아날로그 값들도 포함할 수 있다. 예를 들어, 메모리 셀에 아날로그 값을 저장하기 위해, 메모리 셀은 완전히 프로그래밍되지 않고(예를 들어, 순수한 저항성 단락 또는 순수한 저항성 개방) 특정 저항 또는 전도도 값이 있는 이러한 상태들 사이의 일부 상태로 설정된다. 여기서, 감지된 신호의 강도는 부분 매치의 강도의 결정에 사용된다. 이는 퍼지 로직의 신경망들에 적용될 수 있다. 도 5의 예에 도시된 바와 같이, 퍼지 매칭을 수행하면 매치들을 식별할 뿐만 아니라 불일치 패턴과 입력 패턴 사이의 차이 정도를 추정할 수 있다.
개요를 제공하기 위해, 제어기(109)는 대응하는 위치(예를 들어, 값 위치)에서 입력 패턴의 값에 비례하여 활성화 신호를 인가함으로써 각 워드 라인(215)을 구동할 수 있다. 메모리 어레이(103)의 비트 라인들 중 하나가 입력 패턴(222)(도 5의 BL A2)과 거의 매치하는 타겟 패턴을 저장한다고 가정한다. 여기서, 이 비트 라인은 감지 증폭기(219)에 의해 감지되는 특정 값의 전류 또는 전압을 제공한다. 감지 증폭기의 비교기는 비트 라인 전류 또는 전압을 기준 신호(407)와 비교한다. 이는 차이 신호(410)를 생성한다. 차이 신호는 도 4의 예에서 설명한 바와 같이 매치의 정도를 나타낸다. 차이 신호가 0에 가까울수록(예를 들어, 기준 신호(407)와 비트 라인 상의 전류 또는 전압 사이의 0 차이), 매치에 더 가깝다.
게다가, 도 5에서, 각 월드 라인(215)은 입력 패턴의 대응하는 값 위치에 비례하는 개별의 활성화 강도로 활성화된다. 따라서, 입력 패턴 내의 비트 위치를 고려하기 보다, 활성화 신호는 패턴의 각 값에 기초한다.
자세히 설명하면, 도 5는 [.11, .03, .56, .89]와 같은 입력 패턴(222)을 도시한다. 제1 값은 .11이고 마지막 값은 .89이다. 각 워드 라인(215)은 이들 값에 대응하는 강도를 갖는 활성화 신호에 의해 구동된다. 예를 들어, WL A1은 .89에 비례하는 활성화 신호에 따라 제어기(109)에 의해 구동되는 반면 WL A4는 .11에 비례하는 활성화 신호에 따라 제어기(109)에 의해 구동된다. 여기서 비트 라인 BL A2는, 워드 라인들 WL A1 내지 WL A4에 의해 활성화될 때, 기준 신호(407)에 가장 근접한 매치인, SA 2에 의해 감지되는 전압 또는 전류 신호를 생성한다. 기준 신호(407)와 정확히 동일하지 않을 수 있지만, 비트 라인 BL A2을 따라 전압 또는 전류 신호는 기준 신호(407)의 미리정의된 허용 오차 내에 있는 경우 퍼지 매치이다. 게다가, 기준과 저장된 값 사이의 오류 또는 차이의 양은 아날로그에서 디지털로 변환하여 얻을 수 있다. 이 차이를 사용하여, 비교 동작들도 가능하고, 비교 동작들에 기초하여 정렬 동작들은 메모리에서 수행될 수 있다. 정렬은 상대적인 양의 차이에 기초할 수 있다.
일부 실시예들에서 입력 패턴(222)은 피쳐 검출의 일부일 수 있고 입력 데이터를 하나 이상의 컨볼루션 필터들과 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 입력 데이터를 포함할 수 있다. 이 실시예에서, 저장된 패턴들은 컨볼루션 필터들을 나타낼 수 있다. 다른 실시예들에서, 입력 패턴(222)은 컨볼루션 필터들을 포함하거나 피쳐 검출의 일부일 수 있고 입력 패턴(222)을 메모리 디바이스(100)에 저장된 데이터와 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 것의 일부일 수 있다. 이 실시예에서, 저장된 패턴들은 컨볼루션 동작들을 통한 피쳐 검출의 대상이 되는 데이터를 나타낼 수 있다. 컨볼루션 동작들은 CNN 또는 DNN의 일부일 수 있다.
일부 실시예들은 아날로그 컨볼루션 동작들을 포함한다. 이 실시예에서, 각 데이터 포인트는 그것이 나타내는 숫자의 강도에 대응하는 아날로그 저항 또는 전도도로 저장된다(예를 들어, 더 높은 숫자는 더 강한 저항). 원본 디지털 데이터는 원본 데이터의 각 숫자가 아날로그 데이터의 각 저항에 매핑하는 것으로 알려지도록 또 다른 어레이의 다른 곳에 저장될 수 있다. 제어기(109)는 필터로부터의 숫자의 값에 비례하여 각 워드 라인 상의 전류/전압을 구동한다(예를 들어, 더 높은 수의 더 강한 구동). 어레이 또는 특수 아날로그 레지스터의 컬럼들 중 하나는 필터 패턴과 정확히 매치하는 기준 패턴을 저장한다. 따라서, 기준 컬럼은 기준 전류 또는 전압을 제공한다. 어레이의 각 감지 증폭기(219)는 대응하는 비트 라인의 전류/전압을 기준과 비교하는 차동 감지를 갖는다. 감지된 값의 차이는 매치의 정도를 나타내고: 더 적은 차이는 더 강한 매치를 의미한다.
일부 실시예들에서, 단일 아날로그 값은 다양한 위치들에서 입력 패턴으로 분할될 수 있다. 예를 들어, 아날로그 숫자 "0.11035689"는 4개의 요소들의 길이인 "[.11,03 56,89]"인 입력 패턴(222)으로 변환될 수 있다. 이는 단일 대 큰 아날로그 값들의 패턴 매칭을 허용한다.
도 6은 다양한 실시예들에 따른 메모리 디바이스(100)의 기능의 다양한 예들을 예시하는 흐름도이다. 흐름도의 박스들은 제어기(109) 또는 메모리 디바이스(100)의 다른 로직에 의해 실행가능한 마이크로코드, 머신 코드, 펌웨어, 또는 다른 소프트웨어를 나타낼 수 있다.흐름도의 박스들은 대안적으로 방법(600)의 단계들을 나타낼 수 있다. 방법은 메모리 디바이스(100)에 의해 수행될 수 있다.
601에서, 메모리 디바이스(100)는 패턴들의 세트를 하나 이상의 메모리 어레이들에 저장한다. 일부 실시예들에서, 메모리 디바이스는 역 패턴들의 제2 세트를 저장하고, 이들 각각은 패턴들의 세트의 패턴들에 대응한다. 패턴들의 세트는 각 비트 라인이 감지 증폭기에 결합되는 비트 직렬 배향으로 저장될 수 있다. 이와 관련하여, 각 패턴은 전용 감지 증폭기에 대해 저장될 수 있다. 더욱이, 저장된 패턴들 내의 각 위치는 제어기에 의해 활성화될 수 있는 워드 라인에 대응한다.
604에서, 메모리 디바이스(100)는 입력 패턴에 따라 워드 라인들을 활성화할 수 있다. 입력 패턴은 입력 패턴이 일련의 위치 값들이 되도록 상이한 위치들에 값들을 가질 수 있다. 각 위치 값은 제어기(109)에 의해 활성화될 수 있는 상이한 워드 라인에 대응한다. 실시예에 따라, 워드 라인들은 병렬 또는 직렬로 선택될 수 있다. 다중 워드 라인들은 상이한 워드 라인 활성화들의 시퀀스의 일부로 선택될 수 있다. 게다가, 비트 라인들은 병렬 또는 직렬로 선택될 수 있다. 일부 실시예들에서, 워드 라인을 구동하는 활성화 신호는 워드 라인에 매핑되는 입력 패턴 위치에 기초한다. 다른 실시예들에서, 워드 라인을 구동하는 활성화 신호는 워드 라인에 매핑되는 위치에서의 값인, 값 위치에 기초한다.
610에서, 메모리 디바이스(100)는 감지 증폭기들에서 전류 흐름 또는 전압 차이를 검출한다. 이와 관련하여, 각 감지 증폭기는 결합된 비트 라인에서 전류 또는 전압을 판독한다. 이 비트 라인 전류 또는 전압은 메모리 셀 상태들(예를 들어, 저항성 단락, 저항성 개방 또는 중간 저항)에 의해 정의된다.
613에서, 메모리 디바이스(100)는 매칭 패턴을 포함하는 비트 라인(들)을 식별한다. 예를 들어, 워드 라인들이 시퀀스에 따라 직렬로 활성화되는 경우, 제어기(109)는 각 비트 라인의 각 개별 메모리 셀에 걸친 전류 또는 전압이 대응하는 위치에서 입력 패턴에 대응하는 값과 매치하는지 여부를 검출함으로써 어느 비트 라인(들)이 매칭 패턴을 포함하는지 식별할 수 있다. 워드 라인들이 병렬로 활성화되는 경우, 제어기(109)는 각 비트 라인에서 감지된 전류 또는 전압이 기준 신호와 매치하는지 비교할 수 있다. 퍼지 매칭을 수용하는 실시예들에서, 제어기(109)는 비트 라인 전류 또는 전압이 기준 신호와 매치하는 정도를 측정한다. 불일치의 정도가 미리결정된 허용 오차 또는 범위 내에 있는 경우, 퍼지 매치가 결정된다. 예를 들어, 퍼지 매치 동작은 타겟 패턴과 입력 패턴 사이의 대응이 임계값보다 크고 패턴의 비트의 완전한 매치보다 적을 때 퍼지 매치를 초래할 수 있다. 예를 들어, 퍼지 매치는 완전한 매치 판독에서 벗어나도록 허용 오차 또는 임계값 전류/전압을 고려한다.
흐름도는 실행의 특정 순서를 도시하지만, 실행의 순서는 표시된 순서와 다를 수 있다. 예를 들어, 두 개 이상의 박스들의 실행의 순서는 도시된 순서와 관련하여 스크램블될 수 있다. 또한, 연속적으로 도시된 두 개 이상의 박스들은 동시에 또는 부분적으로 동시 실행될 수 있다. 더욱이, 일부 실시예들에서, 하나 이상의 박스들은 건너뛰거나 생략될 수 있다. 게다가, 카운터들, 상태 변수들, 경고 신호기(semaphore)들, 또는 메시지들의 임의의 수가 향상된 유틸리티, 계정, 성능 측정, 또는 문제 해결 지원 제공 등을 위해, 본 명세서에서 설명된 논리적인 흐름에 추가될 수 있다. 모든 이러한 변형들은 본 개시의 범위 내에 있는 것으로 이해된다.
흐름도의 동작들을 수행하는 컴포넌트들은 또한 예를 들어, 컴퓨팅 시스템의 프로세서와 같은 명령어 실행 시스템에 의해 또는 이와 관련하여 사용하기 위해 임의의 비일시적 컴퓨터 판독가능 매체에서 구현될 수 있는 소프트웨어 또는 코드를 포함할 수 있다. 이러한 감지에서, 로직은 예를 들어, 컴퓨터 판독가능 매체로부터 페치될 수 있고 명령어 실행 시스템에 의해 실행될 수 있는 명령어들 및 선언들을 포함하는 성명서들을 포함할 수 있다. 본 개시의 맥락에서, "컴퓨터 판독가능 매체"는 명령어 실행 시스템에 의해 또는 그와 관련하여 사용하기 위해 본 명세서에서 설명된 로직 또는 애플리케이션을 포함, 저장 또는 유지할 수 있는 임의의 매체일 수 있다.
도 7은 본 개시의 일부 실시예들에 따른, 메모리 디바이스(100)를 포함하는 예시적인 네트워크 시스템(700)을 예시한다. 도 7은 네트워크 시스템(700)의 일부인 컴퓨팅 디바이스(702)의 예의 일부들을 예시한다. 도 7은 그러한 컴퓨팅 디바이스들이 IoT(사물 인터넷) 디바이스들, 모바일 디바이스들, 통신 네트워크 디바이스들 및 장치들(예를 들어, 기지국(730) 참조), 기기들(예를 들어, 기기(740) 참조), 차량들(예를 들어, 차량(750) 참조)과 같은, 다양한 머신들, 장치들, 및 시스템들에 통합될 수 있는 방법을 도시한다.
컴퓨팅 디바이스(702) 및 네트워크 시스템(700)의 다른 컴퓨팅 디바이스들(예를 들어, 컴퓨팅 디바이스들 722a, 722b, 722c, 및 722d 참조)은 하나 이상의 통신 네트워크들(720)에 통신 가능하게 결합될 수 있다. 컴퓨팅 디바이스(702)는, 예를 들어, 버스(706), 제어기(708)(예를 들어, CPU), 기타 메모리(710), 네트워크 인터페이스(712), 저장 시스템(714), 기타 컴포넌트들(716)(예를 들어, 모바일 또는 컴퓨팅 디바이스들에서 발견되는 임의의 유형의 컴포넌트들, GPS 컴포넌트들 , 다양한 유형들의 사용자 인터페이스 컴포넌트들, 센서들, 카메라 등과 같은 입력/출력(I/O) 컴포넌트들), 및 메모리 디바이스(100)를 포함한다. 기타 컴포넌트들(716)은 또한 하나 이상의 사용자 인터페이스들(예를 들어, GUI들, 청각 사용자 인터페이스들, 촉각 사용자 인터페이스들 등), 디스플레이들, 상이한 유형들의 센서들, 촉각들, 오디오 및/또는 시각적 입력/출력 디바이스들, 추가 애플리케이션별 메모리, 하나 이상 추가 제어기들(예를 들어, GPU), 또는 이들의 조합을 포함할 수도 있다. 버스(706)는 제어기(708), 기타 메모리(710), 네트워크 인터페이스(712), 데이터 저장 시스템(714) 및 기타 컴포넌트들(716)을 통신적으로 결합하고, 일부 실시예들에서 이러한 컴포넌트들을 메모리 디바이스(100)에 결합할 수 있다. 예를 들어, 메모리 디바이스(100)의 시스템 링크(115)는 버스(706)에 결합될 수 있다.
컴퓨팅 장치(702)는 적어도 제어기(708), 기타 메모리(710)(예를 들어, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리, 동기 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 교차점 또는 크로스바 메모리, 크로스바 메모리, 등), 메모리 디바이스(100), 및 버스(706)(다중 버스들을 포함할 수 있음)를 통해 서로 통신할 수 있는, 데이터 저장 시스템(714)을 포함하는 컴퓨터 시스템을 포함한다. 일부 실시예들에서, 메모리 디바이스(100)는 버스(706)를 통해 통신하지 않을 수 있다.
다시 말하면, 도 7은 본 개시의 실시예들이 동작할 수 있는 컴퓨터 시스템을 갖는 컴퓨팅 디바이스(702)의 블록도를 포함한다. 일부 실시예들에서, 컴퓨터 시스템은 실행될 때, 머신이 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 적어도 부분적으로 수행하게 하기 위한, 명령어들의 세트를 포함할 수 있다. 이러한 실시예들에서, 머신은 근거리통신망(LAN), 인트라넷, 엑스트라넷, 및/또는 인터넷(예를 들어, 네트워크(들)(720))의 다른 머신들에 연결될 수 있다(예를 들어, 네트워크 인터페이스(712)를 통해 네트워크로 연결됨). 머신은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신의 용량으로, 피어 투 피어(또는 분산) 네트워크 환경에서 피어 머신(peer machine)으로, 또는 클라우드 컴퓨팅 인프라 또는 환경에서 서버 또는 클라이언트 머신으로 동작할 수 있다.
제어기(708)는 마이크로프로세서, 중앙 처리 장치, 등과 같은 하나 이상의 범용 처리(general-purpose) 디바이스들을 나타낸다. 보다 구체적으로, 처리 디바이스는 복합 명령어 세트 컴퓨팅(CISC) 마이크로프로세서, 축소 명령어 세트 컴퓨팅(RISC) 마이크로프로세서, 초장 명령어 워드(VLIW) 마이크로프로세서, 단일 명령어 다중 데이터(SIMD), 다중 명령어들 다중 데이터(MIMD), 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 제어기(708)는 또한 ASIC, FPGA와 같은 프로그램가능 로직, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 등과 같은 하나 이상의 특수 목적 처리 디바이스들일 수 있다. 제어기(708)는 본 명세서에서 논의된 동작들 및 단계들을 수행하기 위한 명령어들을 실행하도록 구성된다. 제어기(708)는 (네트워크(들)(720)과 같은) 하나 이상의 통신 네트워크들을 통해 통신하기 위해 네트워크 인터페이스(712)와 같은 네트워크 인터페이스 디바이스를 더 포함할 수 있다.
데이터 저장 시스템(714)은 머신 판독가능 저장 매체(컴퓨터 판독가능 매체로도 알려짐)를 포함할 수 있으며 본 명세서에는 본 명세서에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 명령어들 또는 소프트웨어의 세트들이 저장된다. 데이터 저장 시스템(714)은 데이터 저장 시스템에 상주하는 명령어들을 적어도 부분적으로 실행할 수 있는 것과 같은 실행 능력들을 가질 수 있다. 명령어들은 또한 완전히 또는 적어도 부분적으로, 컴퓨터 시스템에 의한 실행 동안 기타 메모리(710) 및 메모리 디바이스(100) 중 적어도 하나 내에 및/또는 제어기(708) 내에 상주할 수 있으며, 기타 메모리(710) 및 메모리 디바이스(100) 중 적어도 하나는 물론 제어기(708)는 또한 머신 판독가능 저장 매체를 구성한다. 기타 메모리(710)는 컴퓨팅 디바이스(702)의 메인 메모리 또는 시스템 메모리이거나 이를 포함할 수 있다. 기타 메모리(710) 및 메모리 디바이스(100)는 컴퓨팅 디바이스(702)의 임의의 메모리에 상주하는 명령어들을 적어도 부분적으로 실행할 수 있는 것과 같은 실행 능력들을 가질 수 있다.
언급된 바와 같이, 네트워크 시스템(700)은 컴퓨팅 디바이스들을 포함하고, 컴퓨팅 디바이스들의 각각은 하나 이상의 버스들, 제어기, 메모리, 네트워크 인터페이스, 저장 시스템, 및 다른 컴포넌트들을 포함할 수 있다. 또한, 도 7에 도시되고 본 명세서에 설명된 컴퓨팅 디바이스들의 각각은 예를 들어, 스마트폰, 태블릿 컴퓨터, IoT 디바이스, 스마트 텔레비전, 스마트 시계, 안경 또는 다른 스마트 가전 제품, 차량 내 정보 시스템, 웨어러블 스마트 디바이스, 게임 콘솔, PC, 디지털 카메라 등과 같은 모바일 디바이스, 또는 이들의 조합을 포함하거나 그의 일부일 수 있다. 도시된 바와 같이, 컴퓨팅 디바이스들은 블루투스 등과 같은 로컬-투-디바이스 네트워크, 광역통신망(WAN), 근거리통신망(LAN), 인트라넷, 4G 또는 5G와 같은 모바일 무선 네트워크, 엑스트라넷, 인터넷, 및/또는 이들의 임의의 조합을 포함하는 네트워크(들)(720)에 연결될 수 있다. 일부 실시예들에서, 연결(719)과 함께 도시된 바와 같이, 메모리 디바이스(100)는 통신 네트워크(들)(720)를 통해 다른 디바이스들과 별도로 통신할 수 있도록 적어도 하나의 네트워크 인터페이스를 포함할 수 있다. 예를 들어, 시스템 링크(115)는 통신 네트워크(720)에 결합할 수 있다. 이와 관련하여, 메모리 디바이스(100)의 메모리 모듈 또는 메모리 모듈 시스템은 이러한 컴포넌트들이 통신 네트워크(들)(720)를 통해 다른 디바이스들과 별도로 통신할 수 있도록 자체 네트워크 인터페이스를 가질 수 있다.
본 명세서에 설명된 컴퓨팅 디바이스들의 각각은 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인 정보 단말기(PDA), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신에 의해 취해져야할 조치들을 지정하는 명령어들의 세트(순차적이든 아니든)를 실행할 수 있는 임의의 머신이거나 그에 의해 대체될 수 있다.
또한, 단일 머신이 도 7에 도시된 컴퓨팅 디바이스(702)에 대해 예시되어 있지만, "머신"이라는 용어는 본 명세서에 논의된 방법론들 또는 동작들 중 하나 이상을 수행하는 명령어들의 세트(또는 다중 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 모음을 포함하는 것으로 간주되어야 한다. 그리고, 컴퓨팅 시스템들 뿐만 아니라 예시된 컴퓨팅 디바이스들의 각각은 적어도 버스 및/또는 마더보드, 하나 이상의 제어기들(하나 이상의 CPU들과 같은), 임시 데이터 저장소를 포함할 수 있는 주 메모리, 적어도 한 유형의 네트워크 인터페이스, 영구 데이터 저장소를 포함할 수 있는 저장 시스템, 및/또는 이들의 임의의 조합을 각각 포함할 수 있다. 일부 다중 디바이스 실시예들에서, 하나의 디바이스는 본 명세서세 설명된 방법들의 몇몇 일부들을 완료할 수 있고, 그 다음 다른 디바이스들이 본 명세서에 설명된 방법들의 다른 단계들을 계속할 수 있도록 네트워크를 통해 다른 디바이스에 완료의 결과를 발송할 수 있다.
예시적인 실시예에서는 메모리, 제어기 및 데이터 저장 부분들이 각 단일 부분인 것으로 도시되어 있지만, 각 부분은 명령어들을 저장하고 그들 개별의 동작들을 수행할 수 있는 단일 부분 또는 다중 부분들을 포함하는 것으로 취해져야 한다. "기계 판독가능 저장 매체"라는 용어는 또한 머신에 의한 실행을 위한 명령어들의 세트를 저장하거나 인코딩할 수 있고 머신이 본 개시의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서 "기계 판독가능 저장 매체"라는 용어는 고체상태(solid-state) 메모리들, 광학 매체, 및 자기 매체를 포함하지만, 이에 제한되지 않는 것으로 간주되어야 한다.
도 8은 본 개시의 일부 실시예들에 따라 수행될 수 있는 컨볼루션 동작의 예를 예시한다. 도 8은 어떻게 비트 라인이 컨볼루션 동작의 일부로 매칭되는지를 예시한다. 일부 실시예들에서, 입력 패턴(222)은 피쳐 검출의 일부일 수 있고 입력 데이터를 하나 이상의 컨볼루션 필터들과 매칭하는 것에 기초하여 피쳐 맵을 구축할 수 있는 컨볼루션 동작을 위한 입력 데이터를 포함할 수 있다. 컨볼루션 동작은 특정 피쳐가 데이터 객체(예를 들어, 이미지)에 존재하는지 여부를 검출하는 데 사용될 수 있다. 예를 들어, 피쳐는 수평 가장자리, 수직 가장자리, 특정 형태, 특정 색상 패턴, 선, 등이 될 수 있다. 피쳐는 필터 값들의 행렬(matrix) 또는 어레이로 나타나질 수 있다.
예를 들어, 도 8은 제1 데이터(812)가 제2 데이터(815)에 적용되는 컨볼루션 동작을 도시한다. 곱셈 동작들(예를 들어, 내적 곱셈 결과들 누적)을 수행하는 대신, 컨볼루션 동작은 감지 증폭기들(219)로 구성된 감지 증폭기 어레이(803)에 의해 전압 또는 전류들을 검출함으로써 퍼지 매치 및 검색 동작을 사용하여 수행된다.
제1 데이터(812)는 입력 패턴을 생성하는 데 사용될 수 있는 반면 제2 데이터(815)는 입력 패턴(222)에 대해 매칭될 패턴들의 세트를 생성하는 데 사용될 수 있다. 패턴들의 세트들은 세트의 각 패턴이 개별의 컬럼 또는 비트 라인을 따라 저장되는 곳에 배열될 수 있다. 제1 데이터(812)는 컨볼루션 필터(예를 들어, 피쳐)의 값들을 나타낼 수 있다. 예를 들어, 제1 데이터(812)는 하나 이상의 행렬들을 포함할 수 있고, 여기서 하나 이상의 행렬들의 상이한 값들은 입력 패턴(222)으로 선택된다. 게다가, 제2 데이터(815)는 피쳐에 대해 분석되는 하나 이상의 데이터 객체를 나타내는 하나 이상의 행렬들을 포함할 수 있다.
다른 실시예들에서, 제1 데이터(812)는 피쳐에 대해 분석되는 데이터 객체의 적어도 일부를 나타낼 수 있는 반면 제2 데이터(815)는 하나 이상의 컨볼루션 필터들의 값들을 나타낼 수 있다.
"X, Y 또는 Z 중 적어도 하나"라는 문구와 같은 접속사 언어는, 달리 명시되지 않는 한, 항목, 용어 등이 X, Y 또는 Z, 또는 이들의 임의의 조합(예를 들어, X, Y 및/또는 Z)일 수 있음을 나타내기 위해 일반적으로 사용되는 문맥과 달리 이해된다. 따라서, 그러한 분리 언어는 일반적으로 특정 실시예가 각각 존재하기 위해 X 중 적어도 하나, Y 중 적어도 하나, 또는 Z 중 적어도 하나가 필요하다는 것을 의미하도록 의도되지 않았으며, 암시해서는 안 된다.
이전의 상세한 설명의 일부는 컴퓨터 메모리 내의 데이터 비트에 대한 동작의 알고리즘 및 기호 표현의 관점에서 제시되었다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 기술자가 자신의 작업 내용을 해당 기술 분야의 다른 사람에게 가장 효과적으로 전달하기 위해 사용하는 방법이다. 알고리즘은 본 명세서에서 일반적으로 원하는 결과로 이어지는 자체 일관된 동작들의 시퀀스로 간주된다. 동작들은 물리량의 물리적 조작이 필요한 동작이다. 일반적으로 반드시 그런 것은 아니지만 이러한 양은 저장, 결합, 비교 및 조작할 수 있는 전기 또는 자기 신호의 형태를 취한다. 이러한 신호를 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 지칭하는 것이 주로 일반적인 사용을 위해 때때로 편리한 것으로 입증되었다.
그러나, 이러한 모든 용어 및 유사한 용어는 적절한 물리량과 관련되어야 하며 단지 이러한 양에 적용되는 편리한 라벨일 뿐이라는 점을 염두에 두어야 한다. 본 개시는 컴퓨터 시스템의 레지스터와 메모리 내에서 물리적(전자적) 수량으로 표현된 데이터를 컴퓨터 시스템 메모리나 레지스터 또는 기타 정보 저장 시스템 내에서 물리적 수량으로 유사하게 표현된 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스를 참조할 수 있다.
본 개시는 또한 본 명세서의 동작을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성되거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이와 같은 컴퓨터 프로그램은 컴퓨터 판독가능 저장 매체, 예를 들어 플로피 디스크, 광 디스크, CD-ROM 및 광자기 디스크를 포함한 임의의 유형의 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어를 저장하기에 적합한 임의의 유형의 매체에 저장될 수 있으며, 각각 컴퓨터 시스템 버스에 결합된다.
본 명세서에 제시된 알고리즘 및 디스플레이는 본질적으로 특정 컴퓨터 또는 기타 장치와 관련이 없다. 다양한 범용 시스템이 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 이러한 다양한 시스템의 구조는 아래 설명에 설명된 대로 나타난다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에 설명된 바와 같이 본 개시의 교시를 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스)을 프로그래밍하는 데 사용될 수 있는 명령어가 저장된 머신 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 머신 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예에서, 머신 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 머신(예를 들어, 컴퓨터) 판독가능 저장 매체, 예를 들어 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트 등을 포함한다.
상술한 본 발명의 실시예는 본 발명의 원리에 대한 명확한 이해를 위해 설명된 구현예의 가능한 예일뿐이라는 점을 강조해야 한다. 본 개시의 사상 및 원리로부터 실질적으로 벗어남이 없이 전술한 실시예(들)에 많은 변형 및 수정이 이루어질 수 있다. 이러한 모든 수정 및 변형은 본 개시의 범위 내에 포함되고 다음 청구범위에 의해 보호되는 것으로 의도된다.

Claims (23)

  1. 시스템(system)에 있어서,
    패턴(pattern)들의 제1 세트를 저장하도록 구성된 메모리 디바이스(memory device)의 적어도 하나의 메모리 어레이(array)의 제1 부분;
    패턴들의 제2 세트를 저장하도록 구성된 상기 적어도 하나의 메모리 어레이의 제2 부분-여기서, 상기 제2 세트의 상기 패턴들은 상기 제1 세트의 상기 패턴들에 대해 반전됨-;
    감지 증폭기(sense amplifier)들의 어레이-여기서, 상기 어레이의 각각의 감지 증폭기는 상기 적어도 하나의 메모리 어레이의 상기 제1 부분 및 상기 메모리 어레이의 상기 제2 부분에 결합 가능함-; 및
    상기 적어도 하나의 메모리 어레이의 상기 제1 부분 및 상기 메모리 디바이스의 상기 제2 부분에 입력 패턴을 적용하도록 구성된 제어기를 포함하고;
    상기 감지 증폭기들의 상기 어레이는 상기 적어도 하나의 메모리 어레이의 상기 제1 부분 또는 상기 적어도 하나의 메모리 어레이의 상기 제2 부분의 상기 입력 패턴과 실질적으로 매칭되는 패턴을 저장하는 비트 라인(bit line)을 식별하도록 구성되고,
    상기 비트 라인의 식별된 부분은 키(key)에 대응하고, 상기 입력 패턴은 키에 대응하고, 상기 적어도 하나의 메모리 어레이는 키-값 연관들의 복수의 값들을 저장하는, 시스템.
  2. 제1항에 있어서, 상기 메모리 디바이스는 비트 직렬 배향(bit-serial orientation)으로 상기 제1 세트의 각각의 패턴 및 상기 제2 세트의 각각의 패턴을 저장하도록 구성되는, 시스템.
  3. 제1항에 있어서, 상기 제어기는 상기 적어도 하나의 메모리 어레이의 상기 제1 부분의 복수의 워드 라인들 또는 상기 적어도 하나의 메모리 어레이의 상기 제2 부분의 복수의 워드 라인들을 동시에 활성화함으로써 입력 패턴을 적용하도록 구성되는, 시스템.
  4. 제1항에 있어서, 상기 메모리 디바이스는 저항 랜덤 액세스 메모리(ReRAM) 디바이스를 포함하고, 상기 감지 증폭기들의 어레이는 상기 적어도 하나의 메모리 어레이의 상기 제1 부분 및 상기 적어도 하나의 메모리 어레이의 상기 제2 부분 내에 단락 회로(short circuit)들 또는 개방 회로(open circuit)들을 검출함으로써 상기 비트 라인의 부분을 식별하도록 구성되는, 시스템.
  5. 제6항에 있어서, 상기 감지 증폭기들의 어레이는 단락 회로들을 검출하는 것에 응답하여 또는 개방 회로들을 검출하는 것에 응답하여 상기 감지 증폭기들의 어레이 내의 감지 증폭기들을 비활성화함으로써 상기 비트 라인의 부분을 식별하도록 구성되는, 시스템.
  6. 제1항에 있어서, 상기 제어기는 상기 입력 패턴을 복수의 세그먼트(segment)들로 분할함으로써 복수의 파이프라인(pipeline) 단계들에서 상기 입력 패턴을 적용하도록 구성되는, 시스템.
  7. 시스템에 있어서,
    패턴들의 세트를 저장하도록 구성된 메모리 디바이스의 적어도 하나의 메모리 어레이의 부분;
    감지 증폭기들의 어레이-여기서, 상기 어레이의 각각의 감지 증폭기는 적어도 하나의 비트 라인에 결합 가능하고, 상기 비트 라인은 상기 적어도 하나의 메모리 어레이의 상기 부분에 적어도 부분적으로 있음-; 및
    상기 적어도 하나의 메모리 어레이의 상기 부분의 적어도 하나의 워드 라인에 입력 패턴을 적용하도록 구성된 제어기를 포함하고;
    상기 감지 증폭기들의 어레이는 전류의 흐름 또는 전압 차이를 검출함으로써 상기 입력 패턴을 저장하는 상기 적어도 하나의 메모리 어레이의 상기 일부에서 비트 라인을 식별하도록 구성되는, 시스템.
  8. 제8항에 있어서, 상기 패턴들의 세트의 각각의 패턴 및 각각의 패턴은 이산 값(discrete value)들을 포함하는, 시스템.
  9. 제7항에 있어서, 상기 패턴들의 세트의 각각의 패턴은 대응하는 저항의 레벨에 의해 정의된 아날로그 값들을 포함하는, 시스템.
  10. 제7항에 있어서, 상기 비트 라인의 식별된 부분은 키에 대응하고, 상기 입력 패턴은 키에 대응하고, 상기 적어도 하나의 메모리 어레이는 키-값 연관들의 복수의 값들을 저장하는, 시스템.
  11. 제7항에 있어서, 상기 제어기는 적어도 부분적으로, 상기 적어도 하나의 메모리 어레이의 상기 부분의 복수의 워드 라인들을 순차적으로 활성화함으로써 상기 적어도 하나의 메모리 어레이의 상기 부분에 상기 입력 패턴을 적용하도록 구성되고, 상기 감지 증폭기 어레이의 각각의 감지 증폭기는 상기 워드 라인들의 각각의 활성화에 대해 결합된 비트 라인에서 전류의 흐름 또는 전압 차이를 측정하도록 구성되는, 시스템.
  12. 제11항에 있어서, 상기 패턴의 가장 중요한 값 위치에 대응하는 워드 라인 활성화에 대한 전류 또는 전압 판독은 상기 패턴의 최소로 중요한 값 위치에 대응하는 워드 라인 활성화에 대한 전류 또는 전압 판독과 연관된 가중치보다 큰 가중치와 연관되는, 시스템.
  13. 제7항에 있어서, 상기 제어기는 상기 적어도 하나의 메모리 어레이의 상기 부분의 복수의 워드 라인들을 활성화함으로써 상기 적어도 하나의 메모리 어레이의 상기 부분에 복수의 값들을 포함하는 상기 입력 패턴을 적용하도록 구성되고, 각각의 월드 라인은 상기 입력 패턴의 대응하는 값 위치에 비례하는 개별의 활성화 강도로 활성화되고, 상기 감지 증폭기 어레이의 각각의 감지 증폭기는 상기 복수의 워드 라인들의 활성화들에 대해 결합된 비트 라인의 상기 전류의 흐름을 측정하도록 구성되는, 시스템.
  14. 제7항에 있어서, 상기 제어기는 상기 적어도 하나의 메모리 어레이의 상기 부분의 복수의 워드 라인들을 활성화함으로써 상기 적어도 하나의 메모리 어레이의 상기 부분에 복수의 값들을 포함하는 상기 입력 패턴을 적용하도록 구성되고, 각각의 월드 라인은 상기 입력 패턴의 대응하는 값 또는 위치에 비례하는 개별의 활성화 강도로 활성화되고, 상기 감지 증폭기 어레이의 각각의 감지 증폭기는 상기 복수의 워드 라인들의 활성화들에 대해 결합된 비트 라인의 상기 전류의 흐름을 측정하도록 구성되고 상기 워드 라인들의 상기 복수의 활성화들에 대해 입력 패턴의 값들에 대응하는 기준 전류의 흐름과 상기 전류의 흐름을 비교하도록 더 구성되는, 시스템.
  15. 제7항에 있어서, 상기 제어기는 상기 입력 패턴을 복수의 세그먼트들로 분할함으로써 상기 입력 패턴을 복수의 파이프라인 단계들에 적용하도록 구성되는, 시스템.
  16. 제7항에 있어서, 상기 제어기는 상기 입력 패턴을 저장하는 상기 적어도 하나의 메모리 어레이의 부분의 상기 비트 라인의 상기 부분을 식별하기 전에 상기 적어도 하나의 메모리 어레이의 상기 부분의 상기 값들을 반전시키도록 구성되는, 시스템.
  17. 방법에 있어서,
    메모리 디바이스의 적어도 하나의 메모리 어레이의 부분에 패턴들의 세트를 저장하는 단계-여기서, 각각의 패턴은 비트 직렬 배향으로 저장됨-;
    입력 패턴에 따라 상기 적어도 하나의 메모리 어레이의 상기 부분의 복수의 워드 라인들을 활성화하는 단계;
    감지 증폭기들의 어레이에 의해 전류 흐름 또는 전압 차이를 검출하는 단계-여기서, 상기 감지 증폭기들의 어레이의 각각의 감지 증폭기는 상기 적어도 하나의 메모리 어레이의 적어도 하나의 개별 비트 라인에 결합 가능함-;
    적어도 하나의 메모리 어레이의 매칭(matching) 비트 라인을 식별하는 단계를 포함하고, 상기 매칭 비트 라인은 상기 입력 패턴과 매칭되는 타겟 패턴(target pattern)을 저장하고,
    상기 식별된 비트 라인은 키에 대응하고, 상기 입력 패턴은 키에 대응하고, 상기 적어도 하나의 메모리 어레이는 키-값 연관들의 복수의 값들을 저장하는, 방법.
  18. 제17항에 있어서, 상기 패턴들의 세트의 각각의 패턴 및 각각의 패턴은 이산 값들을 포함하는, 방법.
  19. 제17항에 있어서, 상기 적어도 하나의 메모리 어레이의 상기 매칭 비트 라인을 식별하는 단계는 제1 시퀀스 및 제2 시퀀스를 포함하고, 제어기 또는 상기 감지 증폭기들은 상기 식별하는 단계를 수행하고, 상기 제어기 또는 상기 감지 증폭기들은 상기 제1 시퀀스에서 상기 매칭 비트 라인을 식별하지 않는 것에 응답하여 상기 식별하는 단계를 불가능하도록 구성되는, 방법.
  20. 제17항에 있어서, 상기 타겟 패턴은 상기 타겟 패턴과 상기 입력 패턴 사이의 대응이 임계치보다 크고 상기 패턴의 비트들의 완전한 매치보다 적은 퍼지 매치(fuzzy match)에 따라 상기 입력 패턴을 매칭하는, 방법.
  21. 제20항에 있어서, 상기 퍼지 매치는 상기 검출된 전류 흐름 또는 전압 차이와 기준 전류 또는 전압 사이의 상기 차이를 결정함으로써 결정되는, 방법.
  22. 제17항에 있어서, 각각의 월드 라인은 대응하는 값, 다른 값들에 대한 상기 워드 라인의 위치, 또는 상기 워드 라인 위치의 가중치 중 적어도 하나에 비례하는 개별의 활성화 강도로 활성화되고, 상기 감지 증폭기 어레이의 각각의 감지 증폭기는 상기 복수의 워드 라인들의 활성화들에 대해 결합된 비트 라인의 상기 전류의 흐름 또는 전압 차이를 측정하도록 구성되는, 방법.
  23. 제17항에 있어서, 상기 매칭 비트 라인은 컨볼루션 동작(convolutional operation)의 일부로서 매칭되고, 상기 입력 패턴 또는 상기 패턴들의 세트 중 적어도 하나는 컨볼루션 필터(convolution filter)를 나타내는, 방법.
KR1020227038570A 2020-06-16 2021-06-10 메모리 어레이의 매칭 패턴 KR20220164038A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/902,685 2020-06-16
US16/902,685 US11276463B2 (en) 2020-06-16 2020-06-16 Matching patterns in memory arrays
PCT/US2021/036805 WO2021257371A1 (en) 2020-06-16 2021-06-10 Matching patterns in memory arrays

Publications (1)

Publication Number Publication Date
KR20220164038A true KR20220164038A (ko) 2022-12-12

Family

ID=78826567

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227038570A KR20220164038A (ko) 2020-06-16 2021-06-10 메모리 어레이의 매칭 패턴

Country Status (5)

Country Link
US (3) US11276463B2 (ko)
KR (1) KR20220164038A (ko)
CN (1) CN115605957A (ko)
DE (1) DE112021003254T5 (ko)
WO (1) WO2021257371A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11276463B2 (en) * 2020-06-16 2022-03-15 Micron Technology, Inc. Matching patterns in memory arrays
US20220108106A1 (en) * 2020-10-05 2022-04-07 Automation Anywhere, Inc. Machined learning supporting document data extraction
US12094516B2 (en) * 2022-02-24 2024-09-17 Changxin Memory Technologies, Inc. Method and apparatus for intensifying current leakage between adjacent memory cells, and method and apparatus for current leakage detection

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7362633B2 (en) * 2006-03-21 2008-04-22 Infineon Technologies Ag Parallel read for front end compression mode
US7872931B2 (en) * 2008-10-14 2011-01-18 Qimonda North America Corp. Integrated circuit with control circuit for performing retention test
US8463988B2 (en) 2008-12-03 2013-06-11 Electronics And Telecommunications Research Institute System and method for matching patterns
KR101276796B1 (ko) * 2008-12-03 2013-07-30 한국전자통신연구원 패턴 매칭 장치 및 방법
US8832508B2 (en) 2010-11-18 2014-09-09 Advanced Micro Devices, Inc. Apparatus and methods for testing writability and readability of memory cell arrays
US8441861B2 (en) * 2011-03-16 2013-05-14 Micron Technology, Inc. Self-check calibration of program or erase and verify process using memory cell distribution
US9098403B2 (en) 2012-11-09 2015-08-04 Sandisk Technologies Inc. NAND flash based content addressable memory
US9342462B2 (en) 2013-10-31 2016-05-17 Oracle International Corporation Systems and methods for implementing low-latency lookup circuits using sparse hash functions
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
KR20170048942A (ko) * 2015-10-27 2017-05-10 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US9627091B1 (en) * 2016-07-18 2017-04-18 Winbond Electronics Corporation Memory device and stress testing method of same
US10546641B1 (en) * 2018-12-07 2020-01-28 Micron Technology, Inc. Memory devices with controlled wordline ramp rates, and associated systems and methods
US11036432B2 (en) * 2019-07-09 2021-06-15 Micron Technology, Inc. Low power mode for a memory device
US12093800B2 (en) * 2020-02-03 2024-09-17 Qualcomm Incorporated Hybrid convolution operation
US11934798B2 (en) * 2020-03-31 2024-03-19 Micron Technology, Inc. Counter-based multiplication using processing in memory
US11276463B2 (en) * 2020-06-16 2022-03-15 Micron Technology, Inc. Matching patterns in memory arrays
JP2023027622A (ja) * 2021-08-17 2023-03-02 キオクシア株式会社 メモリデバイス及びメモリシステム

Also Published As

Publication number Publication date
US11862242B2 (en) 2024-01-02
CN115605957A (zh) 2023-01-13
US11276463B2 (en) 2022-03-15
WO2021257371A1 (en) 2021-12-23
US20220199157A1 (en) 2022-06-23
US20210391004A1 (en) 2021-12-16
DE112021003254T5 (de) 2023-04-06
US20240153556A1 (en) 2024-05-09

Similar Documents

Publication Publication Date Title
US11862242B2 (en) Matching patterns in memory arrays
US11048434B2 (en) Compute in memory circuits with time-to-digital computation
US11302392B2 (en) Analog-to-digital converter and neuromorphic computing device including the same
US9111222B2 (en) Method and apparatus for switching the binary state of a location in memory in a probabilistic manner to store synaptic weights of a neural network
US11281832B2 (en) Device for generating verification vector for circuit design verification, circuit design system, and reinforcement learning method of the device and the circuit design system
US10643701B2 (en) Memory device and memory system
Liu et al. Fault tolerance in neuromorphic computing systems
JP2020035502A (ja) 半導体集積回路
US11901000B2 (en) Adaptive memory management and control circuitry
Yan et al. iCELIA: A full-stack framework for STT-MRAM-based deep learning acceleration
US20210303266A1 (en) Neuromorphic device and driving method thereof
US20240045697A1 (en) Smart compute resistive memory
CN115729625A (zh) 存储器内关联处理系统
CN106205680A (zh) 电阻可变存储装置、读取电路单元及其操作方法
US12021547B2 (en) Associative computing for error correction
US10741228B2 (en) Memory device
US20230186986A1 (en) Device with neural network
JP7561906B2 (ja) メモリシステム及びメモリシステムの操作方法
US20240232595A1 (en) Method and apparatus with neural network circuitry
CN115114062B (zh) 指令字线路的故障检测方法、装置、设备和存储介质
US20230298663A1 (en) Neural network based method and device
US20220365752A1 (en) Apparatus and method with multiply-accumulate operation
JP2024035145A (ja) Imc回路、imc回路を含むニューラルネットワーク装置、及びimc回路の動作方法