KR20230141396A - 메모리 내 데이터 계산 및 분석 - Google Patents

메모리 내 데이터 계산 및 분석 Download PDF

Info

Publication number
KR20230141396A
KR20230141396A KR1020220096362A KR20220096362A KR20230141396A KR 20230141396 A KR20230141396 A KR 20230141396A KR 1020220096362 A KR1020220096362 A KR 1020220096362A KR 20220096362 A KR20220096362 A KR 20220096362A KR 20230141396 A KR20230141396 A KR 20230141396A
Authority
KR
South Korea
Prior art keywords
data
page
buffer
results
analysis
Prior art date
Application number
KR1020220096362A
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 KR20230141396A publication Critical patent/KR20230141396A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1057Data output buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1069I/O lines read out arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory devices with an internal cache buffer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5643Multilevel memory comprising cache storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1087Data input latches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Credit Cards Or The Like (AREA)
  • Burglar Alarm Systems (AREA)
  • Read Only Memory (AREA)

Abstract

CIM 장치는 메모리 어레이 데이터에 대한 병렬 접속을 위해 복수의 데이터 라인들을 구비하는 메모리 어레이 및 입력/출력 인터페이스를 포함한다. 상기 메모리 어레이 및 상기 입력/출력 인터페이스 사이의 데이터 경로 회로들은 페이지 버퍼, 상기 페이지 버퍼의 각 버퍼 셀은 복수의 기억 요소들을 포함한다. 복수의 계산 회로들은 각각의 버퍼 셀들에 연결되도록 제공된다. 상기 계산 회로들은 상기 각각의 버퍼 셀들의 기억 요소들 내의 데이터의 함수를 실행하며, 상기 복수의 버퍼 셀들에 대한 연산 결과들을 포함하는 결과 데이터 페이지를 생성하기 위해 병렬로 구성될 수 있다. 데이터 분석 회로는 분석 결과를 생성하기 위해 상기 결과 데이터 페이지의 함수를 실행시키도록 상기 데이터 경로 회로들에 연결된다. 레지스터가 상기 입력/출력 인터페이스를 통해 접근 가능한 상기 분석 결과를 저장하기 위해 제공될 수 있다.

Description

메모리 내 데이터 계산 및 분석{IN MEMORY DATA COMPUTATION AND ANALYSIS}
본 발명은 CIM(compute in memory) 장치들에 관한 기술에 관한 것이며, 페이지 버퍼에 연결되는 계산 회로들을 구비하는 고밀도 NAND 플래시 메모리를 포함하는 예들이 제공된다.
일부 CIM 장치들에서, 논리 연산은 메모리 어레이 및 입력/출력 인터페이스 사이의 데이터 경로 상의 회로들을 이용하여 실행된다. CIM 장치들은 단일 칩 상에 상기 메모리 어레이 및 입력/출력 인터페이스를 구비하는 집적 회로를 포함할 수 있으며, 일부 실시예들에서 다중 칩 패키지 내에 하나 이상의 칩에 걸치는 집적 회로를 포함할 수 있다. 이러한 구성은 논리 연산을 위한 매우 짧은 데이터 경로들을 가져올 수 있으며, 낮은 에너지 비용으로 매우 빠른 연산들을 가능하게 할 수 있다.
CIM 장치들에 대해서와 유사한 데이터 경로들을 가지는 다른 장치들에 대해서 보다 큰 역량과 향상된 효율들을 제공하는 것이 바람직하다.
설명되는 집적 회로는 메모리 어레이 데이터에 대한 병렬 접속을 위해 복수의 데이터 라인들을 구비하는 메모리 어레이를 포함한다. 또한, 상기 집적 회로는 입력/출력 인터페이스를 포함한다. 데이터 경로 회로(data path circuit)들은 상기 메모리 어레이 및 상기 입력/출력 인터페이스 사이에 위치하는 것으로 설명된다. 상기 데이터 경로 회로들은 상기 메모리 어레이의 각각의 데이터 라인들에 연결되는 복수의 버퍼 셀(buffer cell)들을 구비하며, 각 버퍼 셀은 페이지 버퍼(page buffer) 내에 제공될 수 있는 바와 같은 복수의 기억 요소들을 구비한다. 복수의 계산 회로(computation circuit)들은 상기 복수의 버퍼 셀들 내의 각각의 버퍼 셀들에 연결되도록 제공된다. 상기 계산 회로들은 상기 각각의 버퍼 셀들의 상기 기억 요소들 내의 데이터의 함수를 실행하며, 상기 복수의 버퍼 셀들에 대한 연산 결과들을 포함하는 결과 데이터 페이지(results data page)를 생성하기 위해 병렬로 구성될 수 있다. 상기 결과 데이터 페이지는, 예를 들면, 상기 복수의 버퍼 셀들의 기억 요소(storage element)들 내에 저장될 수 있거나, 캐시 메모리로 이동될 수 있다.
상기 복수의 계산 회로들에 의해 실행되는 상기 복수의 버퍼 셀들의 상기 기억 요소들 내의 데이터의 함수는 여기에 설명되는 기술의 예들에서 페이지 버퍼 내의 각 버퍼 셀들의 둘 또는 그 이상의 기억 요소들 내의 데이터의 페이지들 또는 페이지들의 일부들에 대한 비트 단위의 논리 연산이다.
설명되는 기술은 분석 결과를 생성하기 위해 상기 결과 데이터 페이지의 함수를 실행시키도록 상기 데이터 경로 회로들에 연결되는 데이터 분석 회로(data analysis circuit)를 포함한다. 레지스터가 상기 입력/출력 인터페이스를 통해 접근 가능한 상기 분석 결과를 저장하기 위해 제공될 수 있다. 여기에 설명되는 예들에서, 상기 데이터 분석 회로는 상기 페이지 버퍼 내의 상기 복수의 버퍼 셀들에 연결되거나, 상기 데이터 분석 회로는 상기 캐시 메모리에 연결된다. 일부 예들에서, 하나 이상의 데이터 분석 회로가 상기 데이터 경로 내에 포함될 수 있다.
설명되는 기술에서 상기 계산 회로들은 일군의 함수들을 실행하기 위한 회로들을 포함하며, 상기 일군의 함수들로부터 상기 기억 요소들 내의 데이터의 함수를 선택하기 위해 설정 데이터에 대응하여 구성될 수 있다.
또한, 설명되는 기술에서 상기 계산 회로들은 일군의 함수들을 실행하기 위한 회로들을 포함하며, 상기 기억 요소들 내의 데이터에 대해 순차적으로 실행되는 하나 이상의 함수를 선택하기 위해 설정 데이터에 대응하여 구성될 수 있다.
여기에 설명되는 기술의 예에서, 상기 분석 회로 내에서 실행되는 상기 결과 데이터 페이지의 상기 함수는 상기 결과 데이터 페이지 내의 논리 "1" 또는 "0"을 나타내는 비트들의 카운팅(counting)을 포함한다. 또한, 상기 데이터 분석 회로는 스레시홀드(threshold)로 적용되는 기준(criterion)과 결과적인 카운트의 비교를 수행하기 위한 회로를 포함할 수 있다.
일부 실시예들에서, 상기 결과 데이터 페이지는 복수의 세그먼트(segment)들을 포함하며, 상기 데이터 분석 회로 내에서 실행되는 상기 결과 데이터 페이지의 상기 함수는 스레시홀드로 이용되는 기준과 각 세그먼트에 대한 결과적인 카운트들의 비교를 포함한다.
설명되는 집적 회로는 컨트롤러 및 명령 디코더(command decoder)를 포함하며, 여기서 상기 컨트롤러는 상기 계산 회로들의 상기 논리 연산을 설정하기 위한 명령 및 설정 데이터를 저장하기 위해 레지스터 판독 및 기압 동작들을 이용하는 것과 같이 상기 분석 기준을 조정하기 위한 명령에 대응한다. 또한, 설명되는 집적 회로는 컨트롤러 및 명령 디코더를 포함하며, 여기서 상기 컨트롤러는 CIM 연산을 지원하는 분석 결과들의 생성을 위해 상기 분석 회로를 가능하거나 불가능하게 하는 파라미터를 설정하기 위한 명령에 대응한다.
설명되는 집적 회로는 컨트롤러 및 명령 디코더를 포함하며, 여기서 상기 컨트롤러는 상기 CIM 연산들의 실행을 위한 준비에서 상기 복수의 버퍼 셀들의 선택된 기억 요소들 내의 상기 입력/출력 인터페이스로부터 데이터를 저장하기 위한 명령에 대응한다.
설명되는 방법은 메모리 및 페이지 버퍼를 가지는 집적 회로 내에서 실행된다. 상기 방법은 계산에 대한 입력으로 상기 페이지 버퍼 내의 제1 라인 내에 제1 데이터를 저장하는 단계, 상기 계산에 대한 입력으로 상기 페이지 버퍼 내의 제2 라인 내에 제2 데이터를 저장하는 단계, 그리고 연산 결과들을 생성하기 위해 상기 페이지 버퍼 내에서 상기 계산을 실행하는 단계를 포함한다. 또한, 상기 방법은 분석 결과를 생성하고, 상기 분석 결과를 제어 레지스터(control register)와 같은 전급 가능한 메모리 내에 저장하기 위해 분석 기준을 상기 연산 결과에 적용하는 단계를 포함한다. 또한, 상기 방법은 데이터 출력을 위해 상기 연산 결과들을 캐시로 전송하는 단계를 포함할 수 있다. 상기 방법은 연산 식별자를 상기 제어 레지스터에 기입하는 것과 같이 상기 페이지 버퍼 내의 상기 계산에 대한 연산을 선택하기 위해 연산 유형을 설정하는 단계를 포함할 수 있다. 또한, 상기 방법은 상기 계산의 결과들에 대한 분석 기준을 설정하는 단계를 포함할 수 있다.
설명되는 방법은 메모리 및 페이지 버퍼를 가지는 집적 회로 내에서 실행되며, 상기 페이지 버퍼의 상기 버퍼 셀들 내에 저장되는 데이터에 대해 순차적으로 수행되는 하나 이상의 논리 연산을 구비하는 CIM(compute-in-memory) 연산을 설정하는 단계를 포함한다.
설명되는 방법은 메모리 및 페이지 버퍼를 가지는 집적 회로 내에서 실행되며, 하나 이상의 논리 연산을 실행하고, 제어 레지스터 내의 데이터와 같은 설정 데이터에 대응하여 이용되는 논리 연산을 선택하도록 구성되는 계산 회로들을 제공하는 단계를 포함한다. 상기 제어 레지스터는 순차적으로 실행되는 하나 이상의 연산 및 상기 논리 연산들에 대한 입력 데이터의 소스가 존재하던지 논리 연산의 유형을 나타내는 설정 데이터를 포함할 수 있다.
대체로, CIM 장치들의 효율과 능력을 향상시키기 위한 기술이 설명된다.
본 발명에서 제시되는 기술의 다른 측면들 및 이점들은 다음의 도면들, 상세한 설명 및 특허 청구 범위의 검토에서 파악될 수 있을 것이다.
본 발명의 기술은 낮은 전력 설정을 위해 적용될 수 있는 메모리 내의 효율적인 계산을 제공한다. 예를 들면, 공통 동작에서, 상기 호스트가 "근접" 점수나 메모리로부터 판독되는 페이지 내의 적어도 비트들의 스레시홀드를 나타내는 것(예를 들어, 95% 또는 임의의 다른 기준), 또는 상기 호스트로부터 혹은 메모리 내의 또 다른 위치로부터 상기 페이지 버퍼에 기입되는 페이지와 매치되는 메모리로부터 판독되는 페이지에 걸친 논리 함수들의 결과들과 같은 일부 특성들에 대해 메모리 내에 저장되는 데이터를 검색할 수 있다. 여기에 설명되는 기술을 이용하여, 상기 호스트는 IO 전환의 전력 소모를 회피하면서 상기 메모리 칩으로부터 컨트롤러 칩과 같은 또 다른 칩 상으로 데이터를 이동시키지 않고 상기 검색 또는 상기 검색의 일부들을 실행할 수 있다.
도 1은 여기에 설명되는 바와 같은 프로그램 가능한 CIM 연산들을 포함하고, 데이터 분석 회로들을 포함하는 CIM 장치의 단순화된 도면이다.
도 2는 내장된 데이터 분석 회로들을 포함하는 CIM 장치에 대한 예시적인 데이터 경로 회로들의 단순화된 도면이다.
도 3은 내장된 데이터 분석 회로들을 포함하는 CIM 장치에 대한 다른 예시적인 데이터 경로 회로들의 단순화된 도면이다.
도 4는 복수의 데이터 요소들 및 CIM 논리 회로들을 포함하는 페이지 버퍼 셀의 도면이다.
도 5는 여기에 설명되는 바와 같은 데이터 분석 회로들과 관련되어 활용될 수 있는 페이지의 분할을 예시한다.
도 6은 본 발명의 기술의 일부 실시예들에 따른 CIM 연산에 대한 설정 파라미터들을 제공하기 위해 사용될 수 있는 제어 레지스터를 예시한다.
도 7은 여기에 설명되는 바와 같은 데이터 분석 회로들에 의해 생성되는 상태 정보에 대한 접속을 제공하기 위해 사용될 수 있는 제어 레지스터를 예시한다.
도 8은 페이지의 세그먼트에 걸쳐 데이터 분석 회로들에 의해 생성되는 상기 페이지의 세그먼트들에 대해 상태 정보에 대한 접속을 제공하기 위해 사용될 수 있는 제어 레지스터를 예시한다.
도 9는 페이지 버퍼의 복수의 버퍼 셀들의 선택된 기억 요소들 내의 입력/출력 인터페이스로부터 데이터를 저장하기 위해 이용되는 예시적인 명령, 어드레스들 및 데이터의 타이밍도이다.
도 10은 여기에 설명되는 바와 같은 CIM 연산을 지원하는 CIM 장치 상에서 구현되는 연산들의 단순화된 흐름도이다.
도 11a 및 도 11b는 여기에 설명되는 바와 같은 페이지 버퍼 내의 결과 데이터 페이지의 데이터 분석을 활용하는 CIM 연산의 단순화된 흐름도이다.
도 12a 및 도 12b는 내부 데이터 분석이 꺼지거나, CIM 장치 상에 포함되지 않을 때와 같이 상기 내부 데이터 분석이 없는 CIM 연산의 단순화된 흐름도이다.
도 13은 여기에 설명되는 바와 같은 캐시 내의 결과 데이터 페이지의 데이터 분석을 이용하는 CIM 연산의 단순화된 흐름도이다.
도 14a, 도 14b 및 도 14c는 여기에 설명되는 바와 같은 데이터 분석으로 순차적으로 복수의 페이지들에 걸쳐 실행되는 CIM 연산의 단순화된 흐름도들이다.
본 발명의 기술의 실시예들에 대한 상세한 설명이 도 1 내지 도 14를 참조하여 이하에 제공된다.
도 1은 여기에 설명되는 기술에 따른 프로그램 가능한 CIM 연산들 및 데이터 분석을 지원하는 집적 회로 메모리 장치의 단순화된 칩 블록도이다. 상기 집적 회로 메모리 장치(100)는 단일의 집적 회로 기판 상의 NAND 플래시 메모리와 같은 메모리 어레이(160)를 포함한다. 여기에 설명되는 바와 같은 메모리 장치들은 다중 칩 모듈들인 적층된 칩들 및 다른 구성들도 이용하여 구현될 수 있다. NOR 플래시 메모리, PCRAM과 같은 상변화 메모리, 전이 금속 산화물 메모리와 같은 다른 프로그램 가능한 저항 메모리인 RRAM, 강유전체 램(ferroelectric random-access memory: FeRAM), 자성 램(magnetic random-access memory: MRAM), 다른 유형들의 불휘발성 메모리, DRAM 메모리, SRAM 메모리, 그리고 다른 유형들의 휘발성 메모리를 포함하는 다른 유형들의 메모리 어레이들도 활용될 수 있다.
I/O 인터페이스(190)가 입력/출력 포트들(195)(예를 들어, I/O 핀들)을 통한 호스트(101)와의 데이터 전송을 위해 상기 장치 상에 제공된다. 일부 실시예들에서, 상기 I/O 포트들(195)은 범용 프로세서나 전용 응용 회로부, 또는 상기 메모리 어레이(160)에 의해 지원되는 시스템 온 칩(system-on-a-chip) 기능성을 제공하는 모듈들의 결합들과 같은 온-칩(on-chip) 호스트 회로들에 연결된다.
일 실시예에서, 상기 I/O 인터페이스(190)는 명령들, 어드레스들 및 데이터가 이를 통해 전송되는 I/O 포트들(195)의 세트를 포함하는 직렬 인터페이스이다. 상기 직렬 인터페이스는 상기 명령 채널이 어드레스 및 데이터에 의해 이용되는 상기 I/O 핀들을 공유하는 직렬 주변 장치 인터페이스(SPI) 버스 사양에 기초할 수 있거나, 이를 따를 수 있다. 예를 들면, 상기 집적 회로 메모리 장치(100)는 SPI 버스 신호들을 수신하고 송신하기 위한 핀들을 이용하는 입력/출력 포트들을 포함할 수 있다. 하나의 핀은 명령들을 위해서도 사용될 수 있는 직렬 입력 데이터/어드레스 신호(SI)를 전달하는 입력 데이터 라인에 연결될 수 있다. 다른 하나의 핀 또는 다중의 다른 핀들은 직렬 출력 데이터 신호(SO)를 전달하는 출력 데이터 라인 또는 출력 데이터 라인들에 연결된 수 있다. 다른 하나의 핀은 직렬 신호 클록(SCLK)을 전달하는 클록 라인에 연결될 수 있다. 또 다른 핀은 칩-인에이블(chip-enable) 또는 칩-선택 신호(CS#)를 전달하는 컨트롤 라인에 연결될 수 있다.
병렬 인터페이스들 및 다른 유형들의 직렬 인터페이스들을 포함하는 다른 유형들의 인터페이스들도 사용될 수 있다. 특정한 집적 회로 메모리 장치(100) 상의 상기 I/O 포트들(195)은, 일부 예들에 대해, 인터페이스 클록 사이클 당 병렬로 1, 4, 8, 16, 32 또는 그 이상의 비트들이 될 수 있는 I/O 데이터 폭을 구비하는 출력 데이터를 제공하도록 구성될 수 있다.
상기 I/O 인터페이스(190) 및 상기 메모리 어레이(160) 사이의 데이터 경로 회로(data path circuit)들은 CIM 회로(174)를 구비하는 페이지 버퍼(page buffer)(172), 데이터 분석 회로(data analysis circuit)(176), 그리고 캐시(cache)(178)를 포함한다. 상기 페이지 버퍼는 상기 어레이(160) 내의 메모리 데이터의 페이지에 대한 병렬 접속을 위해 상기 데이터 라인들(165)에 연결된다. 상기 캐시(178)는 상기 캐시로부터 상기 I/O 인터페이스(190)까지의 바이트들이나 워드들과 같은 데이터의 기억 유닛들의 고속 전송을 통상적으로 지원하는 버스(185)를 통해 상기 I/O 인터페이스(190)에 연결된다. 일부 실시예들에서, 상기 페이지 버퍼(172) 내의 기억 요소들은 상기 I/O 인터페이스(190)에 직접 접속 가능할 수 있다.
상기 메모리 장치는 상기 I/O 인터페이스(190)를 통하고, 상기 장치 상의 제어 논리(control logic)(110)를 통해서 판독 및 기입 동작들을 위해 접속 가능할 수 있는 메모리 동작들을 지원하는 상태 정보, 설정 정보 및 다른 파라미터들을 저장하기 위해 사용되는 제어 레지스터(control register)들의 세트를 포함할 수 있다. 도 1에 예시한 바와 같이, 상기 제어 레지스터들의 세트는 상기 데이터 분석 회로(176)를 위해 출력 데이터를 저장하고 데이터를 설정하며, 상기 CIM 회로(174)를 위해 설정 데이터를 저장하는 데 이용되는 분석 결과 레지스터들(112)을 포함할 수 있다.
상기 집적 회로 메모리 장치(100) 상의 명령 디코더(command decoder)(108)를 구비하는 제어 논리(110)는 판독, 프로그램, 소거, 레지스터 판독, 레지스터 기입 등을 포함하는 메모리 동작들을 실행하기 위해 상기 I/O 인터페이스(109)로부터 라인(191) 상에서와 같이 수신되는 명령들에 대응하는 하나 또는 그 이상의 상태 기계들과 같은 로직을 포함한다. 상기 제어 논리(110)는 상기 장치 상의 회로들로 도면에 화살표들로 나타낸 바와 같이 컨트롤 신호들을 출력하고 수신한다. 또한, 상기 제어 논리는 버스(130) 상에 어드레스들을 제공한다. 버스(130) 상에 제공되는 어드레스들은, 예를 들면, 상기 제어 논리(110 내의 어드레스 카운터(address counter)의 출력들(예를 들어, 순차적 어드레스들), 또는 수신된 명령들 내에 전달되는 어드레스들을 포함할 수 있다. 또한, 상기 어드레스들은 상기 캐시(178)에 대한 접근을 위한 캐시 어드레스, 그리고 여기에 설명되는 바와 같이, 상기 페이지 버퍼(172) 내의 기억 요소(storage element)들에 대한 접속을 위한 어드레스들을 포함할 수 있다.
상기 블록도에 개략적으로 도시한 어드레스 디코더(address decoder)(140)는 복수의 워드 라인들(145)에 연결되며, 상기 메모리 어레이의 열들을 따라 상기 페이지 버퍼(172) 및 상기 캐시(178)에 연결된다. 상기 페이지 버퍼(172)는 상기 메모리 어레이(160)로부터 데이터를 판독하고, 상기 메모리 어레이(160)데이터를 기입하는 동작들을 포함하여 상기 어레이(160)에 대한 페이지 접속을 위해 상기 메모리 어레이(160)의 행들을 따라 정렬되는 복수의 데이터 라인들(165)에 연결된다.
상기 페이지 버퍼(172)는 메모리 어레이(160)에 대한 페이지 접속을 위해 각각의 데이터 라인들에 연결되는 복수의 버퍼 셀(buffer cell)들을 포함할 수 있다. 각 버퍼 셀은, 여기에 설명되는 바와 같이, 메모리 셀 당 다중의 비트들의 페이지 판독 및 페이지 기입을 지원하고, 페이지들 및 페이지들의 세그먼트(segment)들에 걸쳐 비트 단위로 CIM 연산들을 지원하는 기억 요소들과 같은 복수의 기억 요소들을 포함할 수 있다.
상기 어드레스 디코더(140)는 상기 어레이(160) 내의 특정 메모리 셀들을 선택할 수 있고, 각각의 연결 데이터 라인들을 통해 상기 특정 메모리 셀들을 상기 페이지 버퍼(172)에 연결할 수 있다. 상기 페이지 버퍼(172)는 병렬로 이들 특정 메모리 셀들에 기입되거나, 이들로부터 판독되는 데이터를 저장할 수 있다. 상기 페이지 버퍼(172)는 ECC 코드들과 같은 연관된 메타데이터(metadata)를 포함하는 추가적인 비트들과 함께 16K 비트나 32K 비트, 또는 그 이상과 같은 수천의 비트들을 포함하는 페이지들을 위한 페이지 폭을 가질 수 있다.
도 1에 도시한 예에서, 제어 논리(110)는 바이어스 배치(bias arrangement) 상태 기계를 이용하여 상기 페이지 버퍼로부터 상기 메모리 어레이로 데이터를 전송하는 페이지 기입 및 상기 메모리 어레이 내의 페이지로부터 상기 페이지 버퍼로 데이터를 전송하는 페이지 판독을 포함하여 판독, 프로그램 및 소거 전압들과 같은 전압 공급을 통해 생성되거나 제공되거나, 블록 120 내에 공급되는 바이어스 배치 공급 전압의 인가를 제어한다.
상기 제어 논리(110) 및 명령 디코더(108)는 상태 기계들 및 지원 로직을 포함하는 전용 논리 회로부를 이용하여 구현될 수 있는 컨트롤러를 구성한다. 선택적인 실시예들에서, 상기 제어 논리는 동일한 집적 회로 상에 구현될 수 있고, 상기 장치의 동작들을 제어하기 위해 컴퓨터 프로그램을 실행하는 범용 프로세서를 포함한다. 또 다른 실시예들에서, 전용 논리 회로부 및 범용 프로세서의 결합이 상기 제어 논리를 구현하기 위해 활용될 수 있다.
상기 컨트롤러의 명령 디코더(108) 및 제어 논리(110)는, 다음에 보다 상세하게 설명하는 바와 같이, 상기 CIM 연산들 및 데이터 분석을 지원하는 여기에 설명되는 바와 같은 입력 명령들에 상응하는 절차들을 수행하도록 구성된다.
도시된 예에서, 상기 호스트(101)는 상기 메모리 장치(100) 상의 I/O 포트들(195) 뿐만 아니라 칩 선택 단자들 등과 같은 도시되지 않은 다른 제어 단자들에 연결되며, 상기 메모리 장치(100)에 데이터, 명령들 또는 지시들을 제공할 수 있다. 일부 예들에서, 상기 호스트(101)는 범용 프로세서, 전용 프로세서, 메모리 컨트롤러로 구성된 프로세서, 또는 상기 메모리 장치(100)를 이용하는 다른 프로세서를 포함할 수 있다. 상기 호스트(101)의 모두 또는 일부는 상기 메모리와 동일한 집적 회로 상에 구현될 수 있다. 상기 호스트는 상기 CIM 능력들을 이용하는 컴퓨터 프로그램들을 실행시킬 수 있으며, 전력 소모를 감소시키고 동작의 속도를 향상시키기 위해 상기 메모리 장치(100) 사이에 수행되는 데이터 분석을 지원할 수 있다. 상기 호스트(101)는 이들 절차들의 실행을 가져오는 명령들의 시퀀스들을 발행할 수 있고, 계산 및 분석 결과를 판독할 수 있으며, 이에 대응하여 후속 연산들을 선택할 수 있다.
도 2는 도 1의 메모리 어레이(160)와 같은 메모리 어레이(201) 및 도 1의 입력/출력(I/O) 인터페이스(190)와 같은 인터페이스(205) 사이의 상기 데이터 경로 회로들의 단순화된 도면이다. 상기 데이터 경로 회로들은 다중 레벨의 페이지 버퍼(202), 비트 카운트 회로(bit count circuit)들(203) 및 캐시(204)를 포함한다. 상기 다중 레벨의 페이지 버퍼(202)는 복수의 다중 레벨의 페이지 버퍼/CIM 유닛들 내로 수직 라인들에 의해 나타낸 바와 같이 나누어질 수 있다. 각각의 상기 다중 레벨의 페이지 버퍼/CIM 유닛들은 복수의 버퍼 셀들을 포함할 수 있다. 예를 들면, 다중 레벨의 페이지 버퍼/CIM 유닛은 상기 메모리 어레이(201)의 256의 데이터 라인들과 병렬로 연결되는 버퍼 셀들의 16의 행(column)들 및 16의 열(row)들의 어레이를 포함할 수 있다.
각각의 상기 버퍼 셀들(예를 들어, 도 4 참조)은 복수의 기억 요소들 및 오프코드(opcode)(212)로 구성될 수 있는 논리 유닛(logic unit)을 포함할 수 있으며, 이는 출력을 생성하고 상기 결과를 저장하기 위해 상기 기억 요소들 내의 데이터를 이용하여 선택된 논리 함수를 수행하도록 제어 레지스터 내에 저장될 수 있거나, 그렇지 않으면 상기 연산을 설정하기 위해 제공될 수 있다. 상기 결과는 상기 버퍼 셀의 상기 복수의 기억 요소들 내의 상기 기억 요소들 중에서 하나 내로 다시 저장될 수 있거나, 일부 경우들에서 상기 캐시(204)와 같은 다른 메모리 내에 저장될 수 있다. 상기 복수의 버퍼 셀들로부터의 결과들의 결합은 상기 복수의 버퍼 셀들에 대한 연산 결과들을 포함하는 결과 데이터 페이지(results data page)를 제공한다. 일부 실시예들에서, 상기 결과 데이터 페이지는 전체 페이지 연산들을 위해 상기 페이지 버퍼 내의 모든 상기 페이지 버퍼/CIM 셀들 내의 상기 논리 연산들에 대한 연산 결과들을 포함한다. 다른 실시예들에서, 상기 결과 데이터 페이지는 일부(다음에 설명되는 바와 같은 세그먼트 또는 다른 크기 부분)에 걸친 연산을 위해 상기 페이지 버퍼/CIM 셀들의 세그먼트 내의 상기 논리 연산들에 대한 연산 결과들을 포함한다.
상기 데이터 경로 회로들에 연결되는 상기 비트 카운트 회로들(203) 또는 다른 데이터 분석 회로들은 상기 페이지 버퍼 내의 상기 논리 연산들의 상기 연산 결과들(상기 결과 데이터 페이지)의 분석을 수행한다. 이러한 예에서, 상기 분석은 상기 결과 데이터 페이지 내의 "1" 또는 "0"의 숫자의 비트들의 비트 카운트이고, 상기 카운트를 기준(criterion)(213)과 비교하며, 제어 레지스터(214) 내에 통과/실패(pass/fail) 결과들을 출력한다. 상기 기준(213)은 제어 레지스터 내에 저장될 수 있거나, 그렇지 않으면 상기 분석 연산을 설정하도록 제공될 수 있다. 상기 비트 카운트 회로들(203)은 이러한 예에서 상기 메모리 어레이(201)에 대한 프로그램 또는 소거 동작 동안에 실패한 비트 검출기(failed bit detector)로서 추가적으로 이용될 수 있다. 일부 실시예들에서, 상기 비트 카운트 회로들(203)은 유사 또는 근접 점수를 계산하고, 상기 점수를 스레시홀드(threshold)와 같은 기준과 비교하는 연산들과 같은 상기 결과 데이터 페이지 내의 비트들에 걸쳐 추가적인 논리 연산들을 수행하도록 구성될 수 있다.
상기 제어 레지스터(214) 내의 상기 통과/실패 결과들은 다른 실시예들에서 상기 결과 데이터 페이지가 전체로서 상기 기준을 통과하는 지를 나타내는 파라미터를 포함하거나, 상기 결과 데이터 페이지가 세그먼트들로 분할되는 경우들에서 상기 결과 데이터 페이지의 세그먼트들이 상기 기준을 통과하는 것을 나타내는 파라미터를 포함하거나, 전체로서 및 세그먼트로서 페이지 모두의 분석 결과들을 포함하도록 구성될 수 있다.
상기 캐시(204)는, 예를 들면, 상기 버퍼 셀들 내의 선택된 기억 요소들 상기 캐시(204) 사이의 데이터의 고속 전송을 위해 상기 다중 레벨의 페이지 버퍼(202)에 연결된다. 상기 캐시(204)는 복수의 캐시 유닛들로 구성될 수 있으며, 도면에서 수직 분할들로 나타낸 바와 같은 각 캐시 유닛은 상기 다중 레벨의 페이지 버퍼/CIM 유닛들 중에서 하나에 대응된다. 버퍼 셀들의 16의 행들 및 16의 열들의 어레이를 포함하는 상기 다중 레벨의 페이지 버퍼/CIM 유닛이 상기 메모리 어레이(201)의 256의 데이터 라인들에 병렬로 연결되는 예들에서, 각 캐시 유닛은 마찬가지로 캐시 셀들의 16의 행들 및 16의 열들의 어레이를 포함할 수 있으며, 하나의 캐시 셀이 각 버퍼 셀에 대응된다. 상기 16 x 16 캐시 유닛의 각 행은 상기 대응되는 16의 버퍼 셀들 사이에서 전송되는 16 비트 워드를 저장할 수 있다. 데이터는, 상대적으로 빠른 속도로, 예를 들면, 상기 캐시 클록(220)의 속도로 캐시 셀들 및 대응되는 버퍼 셀들 내의 선택된 기억 요소들 사이에서 병렬로 이동될 수 있다.
상기 캐시(204)는 판독 및 기입 전송들을 위해 상기 인터페이스(205)와 버스(210)에 의해 연결된다. 일예에서, 상기 버스(210) 및 인터페이스(205)는 상기 캐시 클록의 속도로 대응되는 복수의 캐시 셀들로부터의 복수의 16 비트 워드들(예를 들어, 2, 4 또는 8 워드들)의 전송들을 위해 구성된다. 상기 인터페이스(205)는 상기 I/O 포트(222)의 구성에 따라 상기 캐시 클록의 클록 속도와 다를 수 있는 라인(221) 상의 인터페이스 클록의 인터페이스 클록 속도로 I/O 포트(222) 상에 데이터를 출력하도록 구성된다.
도 3은 도 1의 메모리 어레이(160)와 같은 메모리 어레이(301) 및 도 1의 입력/출력 인터페이스(190)와 같은 인터페이스(305) 사이의 상기 데이터 경로 회로들의 선택적인 구성의 단순화된 예이다. 상기 데이터 경로 회로들은 다중 레벨의 페이지 버퍼(302), 실패한 비트 검출기 회로들(303) 및 캐시(304)를 포함한다. 상기 다중 레벨의 페이지 버퍼(302)는 복수의 다중 레벨의 페이지 버퍼/CIM 유닛들 내로 수직 라인들에 의해 나타내는 바와 같이 나누어진다. 각각의 상기 다중 레벨의 페이지 버퍼/CIM 유닛들은 복수의 버퍼 셀들을 포함할 수 있다. 예를 들면, 다중 레벨의 페이지 버퍼/CIM 유닛은 상기 메모리 어레이(301)의 256의 데이터 라인들과 병렬로 연결되는 버퍼 셀들의 16의 행들 및 16의 열들의 어레이를 포함할 수 있다.
각각의 상기 버퍼 셀들(예를 들어, 도 4 참조)은 복수의 기억 요소들 및 오프코드(312)로 구성될 수 있는 논리 유닛을 포함할 수 있으며, 이는 출력을 생성하고 상기 결과를 저장하기 위해 상기 기억 요소들 내의 데이터를 이용하여 선택된 논리 함수를 수행하도록 제어 레지스터 내에 저장될 수 있거나, 그렇지 않으면 상기 연산을 설정하기 위해 제공될 수 있다. 상기 결과는 상기 버퍼 셀의 상기 복수의 기억 요소들 내의 상기 기억 요소들 중에서 하나 내로 다시 저장될 수 있고, 대응되는 캐시 셀들로 전송될 수 있거나, 일부 경우들에서 상기 결과는 상기 캐시(304)에 직접 저장될 수 있다. 상기 복수의 버퍼 셀들로부터의 결과들의 결합은 상기 복수의 버퍼 셀들에 대한 연산 결과들을 포함하는 결과 데이터 페이지를 제공한다. 일부 실시예들에서, 상기 결과 데이터 페이지는 모든 상기 페이지 버퍼/CIM 유닛들 내에 상기 논리 연산들에 대한 결과들을 포함한다. 다른 실시예들에서, 상기 결과 데이터 페이지는 상기 페이지 버퍼/CIM 유닛들의 세그먼트 내에 상기 논리 연산들에 대한 결과들을 포함한다.
상기 실패한 비트 검출 회로들(303)은 상기 페이지 버퍼 내의 프로그램 확인 연산들 또는 소거 확인 연산들의 결과들의 분석을 수행하기 위해 상기 데이터 경로 회로들 내에 포함될 수 있다. 이러한 예에서, 상기 실패한 비트 검출 회로들은 상기 프로그램 또는 소거 확인 결과들 내에 "1" 또는 "0"의 숫자의 비트들의 비트 카운트를 생성하며, 상기 프로그램 연산의 다음 단계에서 결정되는 결과들을 상기 컨트롤러 또는 호스트에 제공한다.
상기 캐시(304)는, 예를 들면, 상기 버퍼 셀들 내의 선택된 기억 요소들 및 상기 캐시(304) 사이의 데이터의 고속 전송을 위해 상기 다중 레벨의 페이지 버퍼(302)에 연결된다. 상기 캐시(304)는 복수의 캐시 유닛들로 구성되며, 각 캐시 유닛은 상기 다중 레벨의 페이지 버퍼/CIM 유닛들 중에서 하나에 대응된다. 버퍼 셀들의 16의 행들 및 16의 열들의 어레이를 포함하는 상기 다중 레벨의 페이지 버퍼/CIM 유닛이 상기 메모리 어레이(301)의 256의 데이터 라인들과 병렬로 연결되는 예에서, 각 캐시 유닛은 마찬가지로 캐시 셀들의 16의 행들 및 16의 열들의 어레이를 포함할 수 있으며, 각 캐시 셀은 각 버퍼 셀에 대응된다. 상기 16 x 16 캐시 유닛의 각 행은 상기 대응되는 16의 버퍼 셀들로부터 전송되는 16 비트 워드를 저장할 수 있다. 상기 결과 데이터 페이지의 데이터를 포함하는 데이터는 상대적으로 빠른 속도로, 예를 들면, 상기 캐시 클록(320)의 속도로 캐시 셀들 및 대응되는 버퍼 셀들 내의 선택된 기억 요소들 사이에서 병렬로 이동될 수 있다.
상기 캐시(304)는 판독 및 기입 전송들을 위해 버스(310)에 의해 상기 인터페이스(305)와 연결된다. 일예에서, 상기 버스(310) 및 인터페이스(305)는 상기 캐시 클록의 속도로 대응되는 복수의 캐시 셀들로부터의 복수의 16 비트 워드들(예를 들어, 2, 4 또는 8워드들)의 전송을 위해 구성된다. 상기 인터페이스(305)는 상기 I/O 포트(322)의 구성에 따라 상기 캐시 클록의 클록 속도와 다를 수 있는 라인(321) 상의 인터페이스 클록의 인터페이스 클록 속도로 I/O 포트(322) 상에 데이터를 출력하도록 구성된다.
상기 데이터 경로 회로는 상기 버스(310)에 연결되거나, 그렇지 않으면 상기 캐시 내의 데이터에 접속하도록 구성되는 비트 카운트 회로(330)를 포함한다. 상기 비트 카운트 회로(330)는 상기 페이지 버퍼 내의 상기 논리 연산들의 결과들의 분석을 수행한다. 이러한 예에서, 상기 분석은 상기 결과 데이터 페이지 내의 "1" 또는 "0"의 숫자의 비트들의 비트 카운트이며, 기준(313)에 대한 상기 카운트의 비교를 포함한다. 또한, 상기 분석은 제어 레지스터(314) 내에 통과/실패 결과들을 출력한다. 상기 기준(313)은 제어 레지스터 내에 저장될 수 있거나, 그렇지 않으면 상기 분석 연산을 설정하도록 제공될 수 있다. 일부 실시예들에서, 도 3에 도시한 경우와 같은 상기 비트 카운트 회로가 도 2에 도시한 바와 같은 장치 상에 포함될 수 있으므로, 상기 메모리 어레이 및 상기 인터페이스 사이의 상기 데이터 경로 회로들 내에서 상기 페이지 버퍼 내에 실행되는 CIM 연산들로부터의 결과 데이터 페이지들을 분석하도록 구성되는 복수의 데이터 분석 회로들이 존재한다.
상기 제어 레지스터(314) 내의 상기 통과/실패 결과들은 상기 결과 데이터 페이지가 전체로서 상기 기준을 통과하는 지를 나타내는 파라미터를 포함하거나, 상기 결과 데이터 페이지가 세그먼트들로 분할되는 경우들에서 상기 결과 데이터 페이지의 세그먼트들이 상기 기준을 통과하는 것을 나타내는 파라미터를 포함하거나, 상기 결과 데이터 페이지가 전체로서 상기 기준을 통과하는 지를 나타내는 파라미터 및 상기 결과 데이터 페이지의 세그먼트들이 상기 기준을 통과하는 지를 나타내는 파라미터들 모두를 포함하도록 구성될 수 있다.
도 2의 비트 카운트 회로들(203) 및 도 3의 비트 카운트 회로(330)는 분석 결과를 생성하기 위해 상기 결과 데이터 페이지의 함수를 실행시키도록 상기 데이터 경로 회로들에 연결되는 데이터 분석 회로의 각각의 예들이다. 다른 실시예들에서, 상기 데이터 분석 회로는 상기 결과 데이터 페이지 또는 상기 결과 데이터 페이지의 세그먼트들을 상기 분석을 위한 기준으로서 제공되는 상수와 비교하는 데이터 매칭(data matching) 연산을 실행할 수 있다. 다른 실시예들에서, 상기 데이터 분석 회로는 상기 결과 데이터 페이지 내의 다중의 비트 세트들에 걸쳐 논리 또는 계산 연산을 수행할 수 있고, 이후에 상기 연산 결과를 카운트할 수 있으며, 상기 카운트를 보고하거나, 상기 카운트를 상태 비트를 상태 레지스터로 기입하여 통과(PASS) 또는 실패(FAIL) 판정을 결정하는 상기 스레시홀드와 비교할 수 있다.
하나의 예시적인 절차에서, 상기 페이지 버퍼 내의 CIM 회로들은 상기 어레이로부터의 데이터 및 다른 소스로부터 상기 페이지 버퍼 내에 저장되는 마스터 데이터(master data)에 걸쳐 비트 단위로 XOR 연산을 계산하도록 구성될 수 있으며, 상기 페이지에 걸쳐 하나의 사이클에서 결과 데이터 페이지를 생성하며, 이는 상기 페이지 버퍼 셀 내에서 상기 어레이 데이터 및 마스터 데이터 내의 비트들이 매치되지 않을 경우에는 "0"을 포함하고, 상기 페이지 버퍼 셀 내에서 상기 어레이 데이터 및 마스터 데이터 내의 비트들이 매치될 경우에는 "1"을 포함한다. 상기 데이터 분석 회로는 상기 결과 데이터 페이지 내의 "1"들을 카운트하여 매칭되는 비트들의 숫자를 카운트하도록 구성될 수 있다. 또한 일부 예들에서, 상기 데이터 분석 회로들은 상기 결과 데이터 페이지 내의 다중의 비트들에 걸쳐 논리 연산을 실행할 수 있으며, 이후에 상기 논리 연산의 결과들을 입력으로 이용하여 카운트 또는 통과/실패 상태와 같은 분석 결과를 생성할 수 있다. 하나의 구현 예에서, 상기 데이터 분석 회로는 N/2 비트들을 가지는 연산 결과들을 생성하기 위해 이웃하는 비트들(예를 들어, 0에서 N-1까지 진행되는 I에 대해서 비트 i AND 비트 i+1, 여기서 N은 상기 결과 데이터 페이지 내의 비트들의 숫자임)에 걸쳐 AND 연산을 수행하도록 구성될 수 있다. 또한, 상기 데이터 분석 회로는 상기 결과 데이터 페이지 내의 둘 이상의 비트들에 걸쳐 연산들을 수행하거나, 특정한 요구에 적합하게 다른 함수들을 수행하도록 구성될 수 있다.
상기 데이터 분석 회로들은 다중의 사이클들로 실행될 수 있으며, 예를 들어, 16KB 결과 데이터 페이지에 걸쳐 16B 세그먼트들에 대해 상기 분석 연산을 1K배로 적용할 수 있다.
도 4는 도 1, 도 2 및 도 3에 관하여 설명한 바와 같이 어레이로 배열되는 복수의 이러한 버퍼 셀들을 포함하는 다중 레벨의 페이지 버퍼/CIM 유닛 내에 이용될 수 있는 버퍼 셀(400)의 단순화된 도면이다.
상기 버퍼 셀(400)은 비트 라인(BL) 또는 상기 메모리 어레이로부터의 다른 유형의 데이터 라인에 연결되는 센싱 회로(410)를 포함한다. 또한, 상기 버퍼 셀(400)은 상기 버퍼 셀의 일부가 될 수 있는 CIM 논리 회로(411)에 연결된다. 상기 CIM 논리 회로(411)는 메모리 판독 및 기입 동작들에 대해서와 CIM 연산들에 대해서 사용될 수 있다. 상기 버퍼 셀(400)은 데이터 비트 D0을 저장하는 기억 요소, 데이터 비트 D1을 저장하는 기억 요소, …, 그리고 데이터 비트 Dn을 저장하는 기억 요소와 같은 복수의 기억 요소들(412-414)을 포함한다. 예를 들면, 버퍼 셀은 셋, 넷 또는 다섯의 기억 요소들을 포함할 수 있다. 상기 복수의 기억 요소들(412-414)은 센싱 회로(410)에 연결되고, 특정 연산들을 위해 특정 기억 요소를 상기 논리 회로와 링크시키는 회로에 의해 논리 회로(411)에 연결된다. 또한, 상기 복수의 기억 요소들(412-414)은 패스 게이트(pass gate)(420)와 같은 선택기에 의해 대응되는 캐시 셀에 순차적으로 연결되는 라인(421)에 연결된다.
상기 CIM 논리 회로(411)는 정해진 CIM 연산에서의 사용을 위해 구성 레지스터 또는 명령에 의해 제공되는 오프코드에 대응하여 선택될 수 있는 이러한 예시적인 결합되는 논리 회로들을 포함한다. 또한, 상기 CIM 논리 회로(411)는 상기 논리 게이트들의 입력들을 데이터 비트 D(0) 내지 데이터 비트 D(N-1)를 저장하는 상기 기억 요소들 중에서 선택되는 것들 및 대응되는 캐시 셀로부터의 라인(421)에 연결하며, 상기 논리 회로들의 출력을 데이터 비트 D(0) 내지 데이터 비트 D(N-1)을 저장하는 상기 기억 요소들 중에서 선택되는 것들 및 선택적으로 대응되는 캐시 셀로부터의 상기 라인(421)에 연결하도록 타이밍 신호(timing signal)들 및 상기 오프코드에 대응하는 회로들을 포함한다. 상기 오프코드의 디코딩(decoding)에 대응하여 생성되는 상기 오프코드 또는 컨트롤 신호들은 일부 예들에서 세그먼트 또는 페이지의 모든 페이지 버퍼 셀들에 적용될 수 있다. 또한, 상기 버퍼 셀(400)은 데이터 비트 D0 내지 데이터 비트 D(N-1)를 저장하는 상기 기억 요소들 중에서 선택되는 것들로부터 라인(421) 상에서 대응되는 캐시 유닛 내의 대응되는 캐시 셀로 데이터를 전송하도록 상기 SEL 신호 및 다른 컨트롤 신호들에 반응할 수 있다.
상기 CIM 논리 회로(411)는 상기 결과들이 상기 캐시로 전송되거나, 데이터 분석 회로들에 적용되기 이전에 하나의 논리 연산, 또는 순차적으로 하나 이상의 논리 연산을 실행하도록 구성될 수 있다.
페이지 버퍼는 i=0 내지 M-1을 위한 복수의 페이지 버퍼 셀들 P(i)을 포함하며, 여기서 M은 M 메모리 셀들로부터 상기 페이지 버퍼로 데이터를 전송하기 위해 상기 페이지 버퍼에 연결되는 데이터 라인들의 숫자이다. 각각의 상기 페이지 버퍼 셀들은 비트 D(0) 내지 비트 D(N-1)를 위한 기억 요소들을 포함하며, 결합하여 상기 페이지 버퍼 내의 기억 요소들의 N의 라인들을 형성한다. 상기 페이지 버퍼 내의 상기 복수의 라인들의 기억 요소들의 각 라인은 이러한 예에서 M 비트들을 저장할 수 있다. 또한, 상기 M 비트들은 상기 메모리 어레이로부터의 독취 동작에서나 다른 소스로부터의 기입 동작에서 상기 페이지 버퍼에 연결되는 캐시로부터 혹은 호스트에 의해서나 다른 제어 논리에 의해 제어되는 연산 제어 절차들에 대응하여 다른 데이터 경로로부터 상기 페이지 버퍼 내의 라인이나 상기 페이지 버퍼 내의 이러한 또 다른 라인에 병렬로 로딩될 수 있다.
다음의 표 1은 상기 페이지 버퍼 내의 논리 연산들을 선택하는 것을 지원하는 하나의 예시적인 오프코드 세트를 예시한다. 첫 번째 행에서, 상기 논리 연산의 명칭이 제공된다. 두 번째 내지 네 번째 행들에서, 상기 오프코드의 비트들 [2:0]이 제공된다. 다섯 번째 행에서, 제1 연산으로 적용될 경우의 함수가 제공된다. 여섯 번째 행에서, 상기 제1 연산과 순차적으로 될 수 있는 제2 연산으로 적용될 경우의 함수가 제공된다. 물론, 연산들 및 오프코드들의 배치들은 주어진 구현 예에 대해 원할 바에 따라 정의될 수 있다.
예를 들면, 상기 XOR 오프코드는 순차적으로나 별도로 실행될 수 있는 제1 XOR 연산 및 제2 XOR 연산을 설정한다. 상기 제1 XOR은 "입력 1" 및 "판독 데이터"의 XOR을 수행한다. 상기 제1 XOR의 출력은 선택된 기억 요소 내에 데이터 비트 D1로 저장된다. 상기 "입력 1"은 상기 캐시 또는 상기 IO 인터페이스로부터 데이터를 상기 페이지 버퍼로 전송하기 위해 호스트 명령에 의해 제공되는 데이터를 포함할 수 있으며, 여기서 상기 복수의 버퍼 셀들 내의 기억 요소(414)와 같은 선택된 기억 요소 내에 위치할 수 있다. 상기 "판독 데이터"는 상기 메모리 어레이로부터 상기 센싱 회로(410)를 통해 선택된 기억 요소 내로 전송되고, 예를 들면, 데이터 비트 D0으로 저장되는 데이터이다. 상기 제2 XOR은 "입력 2" 및 "D1"의 XOR을 수행하며, 여기서 상기 D1 내의 데이터는 상기 제1 XOR 연산에 의하거나, 상기 오프코드들의 표에 정의되는 다른 제1 논리 연산에 의해 생성될 수 있다. 상기 데이터 "입력 2"는 상기 캐시 메모리로부터 또는 상기 IO 인터페이스로부터의 전송에서 상기 호스트에 의해 제공될 수 있다. 상기 제2 XOR의 출력은 선택된 기억 요소 내에 데이터 비트 D2로 저장된다. 여기에 제공되는 기술의 일부 예들에서, 주어진 연산에 대한 "입력 1" 및 "입력 2" 모두는 상기 캐시 메모리로부터 또는 상기 IO 인터페이스로부터의 전송에서 상기 호스트로부터 상기 페이지 버퍼 내의 대응되는 라인들에 기입될 수 있다.
다른 오프코드들도 상기 XOR 오프코드에 대하여 논의되는 바와 같이 해석될 수 있다. 일부 실시예들에서, 상기 표로부터의 하나의 오프코드가 순차적으로 실행될 수 있는 OP1 및 OP2를 확인하는 데 이용될 수 있다. 표 1의 예들에서, 상기 제1 및 제2 오프코드들 모두는 다른 입력들을 이용하여 동일한 논리 함수를 선택한다. 다른 예들에서, 상기 제1 및 제2 오프코드들은 다른 논리 함수들을 선택할 수 있다. 일부 예들에서, 다른 함수들을 실행하기 위해, 상기 표로부터 하나는 상기 제1 연산을 위해서 및 하나는 상기 제2 연산을 위해서 두 오프코드들이 순차적으로 선택된다.
로직 OP 2 1 0 OP1 OP2
XOR 0 0 0 D1=XOR(입력 1, 판독 데이터) D2=XOR(입력 2, D1)
AND 0 1 0 D1=AND(입력 1, 판독 데이터) D2=AND(입력 2, D1)
OR 0 1 1 D1=OR(입력 1, 판독 데이터) D2=OR(입력 2, D1)
XNOR 1 0 0 D1=XNOR(입력 1, 판독 데이터) D2=XNOR(입력 1, D2)
NOT 1 0 1 D1=NOT(판독 데이터) D2=NOT(D1)
NAND 1 1 0 D1=NAND(입력 1, 판독 데이터) D2=NAND(입력 2, D1)
NOR 1 1 1 D1=NOR(입력 1, 판독 데이터) D2=NOR(입력 2, D1)
도 5는 일부 실시예들에서 적용될 수 있는 페이지의 분할을 예시한다. 도 5에 예시한 바와 같이, 페이지(500)는 상기 메모리 어레이로부터 상기 페이지 버퍼로 병렬로 전송되는 데이터의 양이다. 페이지는, 예를 들면, 16kB에 더하여 2kB의 추가 데이터를 포함할 수 있다. 일부 장치들에서, 상기 페이지들은 특정한 구성에 적합하도록 보다 작거나 보다 클 수 있다. 페이지(500)는 도 5에 도시한 바와 같이 SEG 1 내지 SEG 8의 여덟의 세그먼트들로 나누어진다. 앞서 언급한 바와 같이, 상기 데이터 분석 회로들은 세그먼트 기반으로 동작할 수 있으며, 각각의 여덟의 세그먼트들에 대한 분석 결과들을 제공할 수 있다. 다른 분할들이 특정 요구에 적합하도록 적용될 수 있다.
도 6 내지 도 8은 상기 CIM 연산의 특성들을 정의하는 설정 데이터(예를 들어, 오프코드들, 기준 및 어드레싱)를 제공하고, 레지스터 판독 및 기입 동작들을 이용하여 상기 호스트에 의해 접근 가능한 결과 데이터(예를 들어, 통과/실패 및 카운트 데이터)를 제공하기 위해 도 1을 참조하여 설명한 바와 같은 장치 상에 이용될 수 있는 예시적인 제어 레지스터들을 도시한다.
도 6은 제1 및 제2 파라미터들과 함께 CIM 제어 특성 어드레스를 가지는 특성 제어 레지스터를 예시한다. 제1 파라미터 P1은 상기 데이터 분석 회로에 적용되는 레지스터 유지 기준 AD1BN(예를 들어, 허용 가능한 1 비트 숫자)을 가리킨다. 상기 제2 파라미터 P2는 상기 페이지 버퍼 셀들 내에서 실행되는 논리 연산들의 숫자를 나타내는 레지스터 유지 제1 비트 OP#, 상기 데이터 분석 회로를 가능하게 하는 데 이용되는 제2 비트 INTK, 상기 OP# 비트로 나타낼 때에 실행되는 상기 제2 연산을 확인하는 제1 오프코드 필드(opcode field) OP2, 그리고 실행되는 상기 제1 연산을 확인하는 제2 오프코드 필드 OP1을 가리킨다. 표 1에 관해 논의되는 실시예들에서, 하나의 오프코드 필드만이 활용될 수 있는 점에 유의한다. 이러한 예에서, 상기 비트 OP#은 두 오프코드들이 실행되는 경우에 설정된다. 상기 비트 OP#이 설정되지 않을 경우, 상기 제1 오프코드만이 실행된다. 또한, 도 6은 반전 필드(reserved field) RSV를 예시한다.
도 7은 여덟의 비트들을 가지는 상태 제어 레지스터를 예시한다. 상기 첫 번째 다섯의 비트들인 M 내지 S는 통상의 메모리 동작들, 또는 상기 장치 상의 다른 기능들과 관련된 상태 비트들이 될 수 있다. 마지막 상태 비트 FAIL은 상기 데이터 분석의 결과들을 나타낸다. 상기 분할된 시스템에서, 상기 비트 FAIL은 모든 상기 세그먼트들이 상기 기준에 실패할 경우에 상기 데이터 분석 회로에 의해 하나의 예에서 실패한 상태를 나타내도록 설정(또는 재설정)되거나, 적어도 하나의 세그먼트가 통과할 경우에 통과한 상태를 나타내도록 재설정(또는 설정)된다. 상기 메모리 장치를 동작시키는 호스트는 상기 분석 결과를 판단하기 위해 상기 상태 제어 레지스터를 판독할 수 있다.
도 8은 내부 데이터 점검 특성 어드레스(internal data check feature address) INTK FEATURE ADDR 및 파라미터 필드 P1을 가지는 내부 점검 특성 제어 레지스터를 예시한다. 상기 결과 데이터 페이지가 여덟의 세그먼트들로 분할되는 실시예에서, 도 8의 내부 점검 특성 제어 레지스터는 예시한 바와 같이 각각의 상기 여덟의 세그먼트들에 대해 통과/실패(P/F) 비트들을 저장할 수 있다.
주어진 구현 예에서 사용되는 상기 제어 레지스터들의 구성은 실행되는 함수들의 유형들에 적합하도록 적용될 수 있다.
도 9는 상기 페이지 버퍼의 상기 버퍼 셀들의 선택된 기억 요소들 내에 입력 데이터를 설정하기 위해 호스트 내에 생성될 수 있는 명령 시퀀스(command sequence)를 예시하는 타이밍도이다. 이러한 명령 시퀀스는 상기 다중 레벨의 메모리 셀 내에 저장되는 각 비트가 상기 페이지 버퍼의 특정 래치(latch)에 기입되는 경우의 삼중 레벨의 메모리 내에 이용되는 시퀀스들과 유사하다. 도 9에 예시한 시퀀스에서, 둘의 명령 바이트들인 CMD가 캐시 전송 명령을 제공한다. 상기 장치 내의 상기 명령 디코더 및 상기 컨트롤러는 캐시 기입 동작을 설정한다. 다음에, 다섯의 어드레스 바이트들이 상기 캐시에 대한 기입을 지원하는 행 및 열 어드레스들을 제공한다. 상기 장치 내의 상기 명령 디코더 및 컨트롤러는 상기 캐시에 대한 기입을 지원하는 캐시 어드레스를 구성하기 위해 상기 어드레스를 디코드한다. 데이터 바이트들의 시퀀스들이 입력되고, 상기 기입 동작이 상기 캐시 내에 데이터를 저장하기 위해 상기 컨트롤러에 의해 실행된다. 마지막으로, 명령 바이트가 상기 페이지 버퍼에 대한 상기 캐시 데이터의 전송을 야기하도록 입력된다. 상기 컨트롤러 및 명령 디코더는 상기 데이터를 상기 페이지 버퍼 내의 기억 요소들(Dx)의 특정 라인으로 전송하는 절차를 실행한다. 유사한 명령 순서들이 CIM 연산들에 활용되는 데이터의 이동 및 CIM 연산들에 의해 생성되는 데이터와 관련되는 다른 함수들을 구현하기 위해 실행될 수 있다.
도 10은 여기에 설명되는 바와 같은 데이터 분석을 구비하여 상기 CIM 연산을 지원하는 상기 장치 내에서 실행되는 단계들의 단순화된 흐름도이다. 이러한 흐름도에서, 제1 특성 제어 레지스터가 도 6에 도시한 제어 레지스터 내의 P2 열인 예에서 상기 CIM 동작을 설정하기 위해 파라미터들로 로딩된다(1000). 이러한 동작은 상기 호스트로부터 상기 장치에 의해 수신되는 기입 레지스터 명령에 대응하여 실행될 수 있다. 또한, 상기 단계들은 도 6에 도시한 제어 레지스터의 P1인 예에서 상기 데이터 분석을 위한 상기 내부 분석 기준을 설정하기 위해 상기 특성 제어 레지스터를 로딩하는 단계를 포함한다(1010). 특정된 연산을 실행하기 위해, 입력 데이터가 특정된 논리 함수에 의해 이용되는 상기 입력들, 이 경우에는 입력(INPUT) 1 및 입력 2를 제공하기 위해 상기 페이지 버퍼 셀들의 기억 요소들의 선택된 라인들 내에 배치된다(1020). 상기 메모리 장치는 이후에 특정된 논리 연산을 실행하고, 상기 페이지 버퍼의 셀들에 걸쳐 결과 데이터 페이지를 제공하도록 상기 페이지 버퍼 셀들의 기억 요소들의 라인들 중에서 하나 내의 결과들을 저장하며, 상기 결과 데이터 페이지를 분석하고, 상기 호스트(1030)에 의해 접근 가능한 메모리 위치들 내에 저장되는 분석 결과들을 제공하기 위해 명령 또는 다른 신호에 대응할 수 있다. 상기 함수를 활용하는 호스트 애플리케이션(host application)이 이후에 판독 상태 명령을 내릴 수 있으며, 상기 장치는 상기 내부 분석 기준에 따라 상기 데이터 분석의 결과들을 제공하기 위해 상기 판독 상태 명령에 대응한다(1040). 이들 결과들은 도 7에 관하여 상술한 바와 같은 상태 제어 레지스터 내에 저장될 수 있다. 또한, 상기 함수를 활용하는 상기 호스트 애플리케이션은 도 6과 관련하여 상술한 레지스터와 같은 상기 분석의 결과들에 관한 보다 세부적인 사항들을 저장하는 판독 제어 레지스터에 대한 수득된 특성 명령과 같은 명령을 내린다(1050). 따라서, 상기 메모리 장치는 상기 장치 상의 입력/출력 포트를 통해 상기 호스트에 상기 결과 페이지의 세그먼트들의 통과/실패 상태와 같은 요구되는 데이터를 제공하기 위해 상기 수득된 특성 명령에 대응한다.
도 11a는 상기 내부 데이터 분석을 구비하는 상기 메모리 어레이로부터의 데이터 판독에 대해 실행되는 여기에 설명되는 바와 같은 CIM 연산의 흐름도이다. 이러한 연산은, 예를 들면, 도 6에 관하여 상술한 INTK 파라미터 및 이러한 함수를 제공하는 실시예를 이용하여 실행될 수 있다. 이러한 예에서, 상기 절차가 개시된다(1101). 상기 메모리 장치 상의 상기 설정된 논리 연산을 변화시키는지가 결정된다(1102). 상기 논리 연산을 변화시킬 것이 요구되는 경우, 상기 호스트는 상기 논리 연산을 변화시키기 위해 명령을 내린다(1103). 상기 논리 연산에 대한 변화가 실행되지 않을 경우, 또는 단계 1103에서 상기 논리 연산을 변화시킨 후, 상기 결과 데이터 페이지의 분석을 위해 상기 판정 기준을 변화시키는지가 결정된다(1104). 상기 판정 기준을 변화시킬 것이 요구되는 경우, 상기 판정 기준을 변화시키기 위해 명령이 내려진다(1105). 단계 1104에서 상기 판정 기준에 대한 변화가 실행되지 않을 경우, 또는 단계 1105에서 상기 변화가 실행된 후, 선택된 연산에 대한 입력으로 이용되도록 설정되는 상기 제1 데이터로 상기 페이지 버퍼를 준비하기 위해 명령이 내려진다(1106). 이는 도 9에 관하여 상술한 바와 같은 연산을 수반할 수 있다. 선택적으로, 이는 상기 페이지 버퍼 내의 하나의 라인과 같은 기억 요소들의 하나의 세트로부터 상기 페이지 버퍼 내의 다른 하나의 라인과 같은 기억 요소들의 다른 세트로 데이터(상기 메모리 어레이로부터 이전에 판독된 페이지의 데이터와 같은)를 이동시키는 단계를 수반할 수 있다. 상기 페이지 버퍼 내에 상기 제1 데이터를 준비한 후, 단일의 명령 또는 선택적으로는 명령 시퀀스가 상기 메모리 어레이로부터 상기 페이지 버퍼까지 설정된 상기 제2 데이터(예를 들어, 페이지 또는 페이지의 세그먼트)를 판독하고, 상기 페이지 버퍼 내의 상기 비트 단위의 논리 연산을 수행하며, 상기 페이지 버퍼에서 상기 비트 카운트 회로 또는 다른 데이터 분석 회로를 이용하여 상기 결과 데이터 페이지를 분석하고, 상기 논리 연산의 결과 데이터 페이지를 상기 캐시로 전송하기 위하여 상태 기계 또는 다른 컨트롤 회로를 이용하여 절차를 수행하도록 실행된다(1107). 상기 상태 제어 레지스터들의 기입을 허용하기에 충분한 대기(latency) 이후, 상기 호스트는 상기 데이터 분석 동작(1108)의 통과/실패 상태와 같은 상기 데이터 분석 동작의 결과들을 유지하는 상기 레지스터 또는 레지스터들을 판독하기 위해 명령 또는 명령들을 내릴 수 있다.
도 11b는, 예를 들면, 집적 회로 메모리상의 명령 디코더를 이용하여 단일의 외부 명령의 디코딩에 대응하여 상태 기계에 의해 실행될 수 있는 도 11a의 단계 1107로 나타낸 절차의 하나의 예의 흐름도이다. 상기 흐름도는 도 11a의 단계 1107에서 개시된다(1112). 상기 명령에 대응하여, 메모리 데이터가 상기 메모리 어레이로부터 상기 페이지 버퍼의 라인 내로 판독된다(1113). 상기 제1 연산을 위해 이용되는 상기 오프코드 OP1이 적용되고, 상기 페이지 버퍼 내의 논리 회로들은 OP1을 수행한다(1114). 이후에, 제2 오프코드가 이러한 예에서 상기 파라미터 OP#를 관찰함에 의해 실행되는 지가 결정된다(1115). 상기 제1 및 제2 오프코드는 위의 표 1에 예시한 바와 같은 동일한 논리 함수를 확인할 수 있거나, 다른 논리 함수들을 확인할 수 있다. 제2 오프코드가 실행될 경우, 상기 제2 연산이 수행된다(1116). 하나의 오프코드만이 실행될 경우 또는 상기 제2 오프코드가 단계 1116에서 실행된 후, 데이터 분석 단계가 이러한 예에서 상기 파라미터 INTK를 점검하여 내부적으로 실행되는 지가 결정된다(1117). 데이터 분석 단계가 수행되어야 할 경우, 이러한 단계가 수행되고 상태 제어 레지스터에 결과들이 기입된다(1118). 상기 상태 제어 레지스터에 결과들을 기입한 후 또는 내부 데이터 분석이 유지될 경우, 상기 논리 연산들의 결과들은 상기 페이지 버퍼로부터 상기 캐시로 전송되며, 여기서 상기 호스트에 의한 접속을 위해 이용 가능하게 된다(1119). 이러한 시점에서, 도 11a의 단계 1107의 절차가 완료된다(1120).
도 12a는 상기 내부 데이터 분석을 활용하지 않고 상기 메모리 어레이로부터의 데이터 판독에 대해 실행되는 여기에 설명되는 바와 같은 CIM 연산의 흐름도이다. 이러한 연산은, 예를 들면, 도 6에 관해 앞서 논의된 INTK 파라미터 및 이러한 함수를 제공하는 실시예를 이용하여 실행될 수 있다. 이러한 예에서, 상기 절차기 개시된다(1201). 상기 메모리 장치 상의 상기 설정된 논리 연산을 변화시키는지가 결정된다(1202). 상기 논리 연산을 변화시킬 것이 요구될 경우, 상기 호스트는 상기 논리 연산을 변화시키기 위해 명령을 내린다(1203). 상기 논리 연산을 변화시키는 것이 실행되지 않을 경우, 또는 단계 1203에서 상기 논리 연산을 변화시킨 후, 상기 선택된 연산에 대한 입력으로 이용되는 설정된 상기 제1 데이터로 상기 페이지 버퍼를 준비하기 위해 명령이 내려진다(1204). 이는 도 9에 관하여 논의된 바와 같은 연산을 수반할 수 있다. 선택적으로, 이는 상기 페이지 버퍼 내의 기억 요소들의 하나의 세트로부터 상기 페이지 버퍼 내의 기억 요소들의 다른 하나의 세트로 데이터(상기 메모리 어레이로부터 이전에 판독된 페이지의 데이터와 같은)를 이동시키는 단계를 수반할 수 있다. 상기 장치 상의 컨트롤러는 상기 함수를 포함하는 실시예들에서 상술한 바와 같이 구성된 데이터에 대응하여 이러한 연산을 위해 이용되는 내부 데이터 분석이 없는 것을 결정한다. 상기 페이지 버퍼 내에 상기 제1 데이터를 준비한 이후, 단일의 명령 또는 선택적으로는 명령 시퀀스가 상기 메모리 어레이로부터 상기 페이지 버퍼까지 설정된 상기 제2 데이터를 판독하고, 상기 페이지 버퍼 내에서 상기 논리 연산을 수행하며, 상기 논리 연산의 결과 데이터 페이지를 상기 캐시로 전송하기 위해 상태 기계 또는 다른 컨트롤 회로를 이용하여 절차를 수행하도록 실행된다(1205).
도 12b는, 예를 들면, 집적 회로 메모리상의 명령 디코더를 이용하여 단일의 외부 명령의 디코딩에 대응하여 상태 기계에 의해 실행될 수 있는 도 12a의 단계 1205로 나타낸 절차의 하나의 예의 흐름도이다. 상기 흐름도는 도 12a의 단계 1205에서 개시된다(1212). 상기 명령에 대응하여, 메모리 데이터가 상기 메모리 어레이로부터 상기 페이지 버퍼 내로 판독된다(1213). 상기 제1 연산을 위해 이용되는 상기 오프코드 OP1이 적용되고, 상기 페이지 버퍼 내의 논리 회로들이 OP1을 수행하기 위해 사용된다(1214). 이후에, 제2 오프코드가 이러한 예에서 상기 파라미터 OP#을 관찰함에 의해 실행되는 지가 결정된다(1215). 상기 제1 및 제2 오프코드는 위의 표 1에 예시한 바와 같은 동일한 논리 함수를 확인할 수 있거나, 다른 논리 함수들을 확인할 수 있다. 제2 오프코드가 실행될 할 경우, 상기 제2 연산이 수행된다(1216). 하나의 오프코드만이 실행될 경우, 또는 상기 제2 오프코드가 단계 1216에서 실행된 후, 상기 논리 연산들의 결과들이 상기 페이지 버퍼로부터 상기 캐시로 전송된다(1217). 이후에 내부 분석이 이러한 예에서 상기 파라미터 INTK를 점검하여 실행될 지가 결정된다(1218). 내부 분석이 상기 캐시 내의 데이터를 이용하여 수행될 경우, 상기 데이터 분석이 수행되고, 결과들이 상태 제어 레지스터로 기입된다(1219). 상기 내부 데이터 분석의 완료 후, 또는 데이터 분석이 실행되지 않을 경우, 상기 절차들이 끝나고, 상기 결과 데이터는 상기 호스트(1220)에 의한 접근을 위해 상기 캐시 내에 이용 가능하게 남는다.
도 13은 도 3에 관하여 상술한 바와 같이 상기 캐시에 연결되는 상기 데이터 분석 회로가 존재하는 실시예를 이용하여 상기 결과 데이터 페이지가 상기 캐시로 전송된 후에 수행되는 상기 내부 데이터 분석을 구비하여 상기 메모리 어레이로부터의 데이터 판독에 대해 실행되는 여기에 설명되는 바와 같은 CIM 연산의 흐름도이다. 이러한 연산은, 예를 들면, 이러한 함수를 제공하는 실시예에서 도6에 관해 앞서 논의한 상기 INTK 파라미터를 이용하여 실행될 수 있다. 이러한 예에서, 상기 절차가 시작된다(1301). 상기 메모리 장치 상에 설정된 논리 연산을 변화시키는지가 결정된다(1302). 상기 논리 연산을 변화시킬 것이 요구될 경우, 상기 호스트는 상기 논리 연산을 변화시키기 위해 명령을 내린다(1303). 상기 논리 연산을 변화시키는 것이 실행되지 않을 경우, 또는 단계 1303에서 논리 연산을 변화시킨 후, 상기 결과 데이터 페이지의 분석에 대한 상기 판정 기준을 변화시키는지가 결정된다(1304). 상기 판정 기준을 변화시키는 것이 요구될 경우, 상기 판정 기준을 변화시키기 위해 명령이 내려진다(1305). 단계 1304에서 상기 판정 기준의 변화가 존재하지 않을 경우, 또는 단계 1305에서 상기 변화가 실행된 후, 상기 선택된 연산에 대한 입력으로 이용되도록 설정된 상기 제1 데이터로 상기 페이지 버퍼를 준비하기 위해 명령이 내려진다(1306). 이는 도 9에 관해 논의된 바와 같은 연산을 수반할 수 있다. 선택적으로, 이는 상기 페이지 버퍼 내의 기억 요소들의 하나의 세트로부터 상기 페이지 버퍼 내의 기억 요소들의 다른 하나의 세트로 데이터(상기 메모리 어레이로부터 이전에 판독된 페이지의 데이터와 같은)를 이동시키는 단계를 수반할 수 있다. 상기 페이지 버퍼 내에 상기 제1 데이터를 준비한 후, 단일의 명령 또는 선택적으로는 명령 시퀀스가 상기 메모리 어레이로부터 상기 페이지 버퍼로 상기 제2 데이터 세트(예를 들어, 페이지 또는 페이지의 세그먼트)를 판독하고, 상기 페이지 버퍼 내에서 상기 비트 단위의 논리 연산을 수행하며, 상기 논리 연산의 결과 데이터 페이지를 상기 캐시로 전송하고, 상기 비트 카운트 회로나 다른 데이터 분석 회로를 이용하여 상기 캐시 내의 상기 결과 데이터 페이지를 분석하기 위해 상태 기계 또는 다른 컨트롤 회로를 이용하여 절차를 수행하도록 실행된다(1307). 일예에서, 단계 1307로 나타내는 상기 절차는 도 12a의 단계 1205의 경우와 같을 수 있으며, 도 12b를 참조하여 상술한 바와 같이 진행될 수 있다. 상기 상태 제어 레지스터들의 기입을 허용하기에 충분한 대기 후, 상기 호스트는 이후에 상기 데이터 분석 연산의 통과/실패 상태와 같은 상기 데이터 분석 연산의 결과들을 유지하는 상기 레지스터 또는 레지스터들을 판독하기 위해 명령 또는 명령들을 내릴 수 있다(1308).
도 14a는 도 2 및 도 3과 함께 앞서 논의한 바와 같이 상기 페이지 버퍼 또는 캐시 내의 상기 결과 데이터 페이지에 걸쳐 실행되는 상기 내부 데이터 분석을 구비하여 상기 메모리 어레이로부터 판독되는 데이터에 대해 실행되는 여기에 설명되는 바와 같은 CIM 연산의 흐름도이며, 이 경우에 상기 호스트가 순차적으로 복수의 페이지들을 분석하고 있다. 이러한 연산은, 예를 들면, 이러한 함수를 제공하는 실시예에서는 도 6에 관해 앞서 논의한 상기 INTK 파라미터를 이용하여 실행될 수 있다. 이러한 예에서, 상기 절차가 개시된다(1401). 상기 메모리 장치 상에 설정된 논리 연산을 변화시킬 것인 지가 결정된다(1402). 상기 논리 연산을 변화시킬 것이 요구되는 경우, 상기 호스트는 상기 논리 연산을 변화시키기 위해 명령을 내린다(1403). 상기 논리 연산에 대한 변화가 실행되지 않을 경우, 또는 단계 1403에서 상기 논리 연산을 변화시킨 후, 상기 결과 데이터 페이지의 분석에 대한 상기 판정 기준을 변화시킬지가 결정된다(1404). 상기 판정 기준을 변화시킬 것이 요구될 경우, 상기 판정 기준을 변화시키기 위한 명령이 내려진다(1405). 단계 1404에서 상기 판정 기준의 변화가 존재하지 않을 경우, 또는 단계 1405에서 상기 변화가 실행된 후, 상기 선택된 연산에 대한 입력으로 이용되는 설정된 상기 제1 데이터로 상기 페이지 버퍼를 준비하기 위해 명령이 내려진다(1406). 이는 도 9에 관하여 논의한 바와 같은 연산을 수반할 수 있다. 선택적으로, 이는 상기 페이지 버퍼 내의 기억 요소들의 하나의 세트로부터 상기 페이지 버퍼 내의 기억 요소들의 다른 하나의 세트까지 데이터(상기 메모리 어레이로부터 이전에 판독된 페이지의 데이터와 같은)를 이동시키는 단계를 수반할 수 있다. 상기 페이지 버퍼의 라인 내에 제1 데이터를 준비한 후, 단일의 명령 또는 선택적으로는 명령 시퀀스가 상기 분석을 페이지들의 시퀀스에 적용하기 위해 상태 기계 또는 다른 제어 회로를 이용하여 절차를 수행하도록 실행된다. 상기 절차는 상기 메모리 어레이로부터 상기 페이지 버퍼의 라인으로 페이지(예를 들어, 페이지 또는 페이지의 세그먼트)의 데이터를 판독하고, 상기 판독 데이터 및 상기 페이지 버퍼의 다른 라인 내 또는 상기 캐시 내의 데이터에 걸쳐 상기 페이지 버퍼 내에서 상기 비트 단위의 논리 연산을 수행하며, 상기 논리 연산의 상기 결과 데이터 페이지를 상기 캐시로 전송하고, 통과/실패 결과들을 생성하기 위해 상기 비트 카운트 회로 또는 다른 데이터 분석 회로를 이용하여 상기 캐시 내의 상기 결과 데이터 페이지를 분석하며, 이러한 실시예에서 상기 데이터 분석의 기준을 통과하는 페이지에 대한 페이지 어드레스를 저장하고, 상기 시퀀스의 마지막 페이지가 분석될 때까지 상기 단계들을 통해 순환시키는 연산을 포함할 수 있다(1407). 상기 통과하는 페이지들의 페이지 어드레스들은 상기 절차의 완료 후에 상기 메모리 장치 상의 추가적인 상태 제어 레지스터들을 이용하여 상기 호스트에 의한 접근을 위해 상기 장치 내에 저장될 수 있다. 상기 상태 제어 레지스터들의 기입을 허용하기에 충분한 대기 이후, 상기 호스트는 상기 데이터 분석 연산의 통과/실패 상태와 같은 상기 데이터 분석 연산의 결과들을 유지하는 상기 레지스터 또는 레지스터들을 판독하기 위한 명령 또는 명령들을 내릴 수 있다(1408). 선택적으로, 상기 통과/실패 상태는 상기 단계 1408을 지원하는 페이지들의 전체 시퀀스에 대해 유지될 수 있다. 모든 상기 페이지들이 통과할 경우, 상기 절차가 완료된다. 실패한 페이지기 존재할 경우, 상기 호스트는 상기 통과하는 페이지들에 대한 상기 페이지 어드레스들과 같은 페이지들이 통과하는 것과 페이지들이 실패하는 것을 나타내는 데이터를 수득하기 위해 명령을 내릴 수 있다(1409).
도 14b는, 예를 들면, 상기 데이터 분석 회로들이 상기 페이지 버퍼에 연결되는 경우에 대해 집적 회로 메모리상의 명령 디코더를 이용하여 단일의 외부 명령의 디코딩에 대응하여 상태 기계에 의해 실행될 수 있는 도 14a의 단계 1407로 나타내는 절차의 하나의 예의 흐름도이다. 상기 흐름도는 도 14a의 단계 1407에서 시작된다(1412). 시작 어드레스를 포함하는 명령 및 종료 어드레스 또는 시퀀스 길이 파라미터와 같은 수많은 어드레스들의 표지에 대응하여, 메모리 데이터가 상기 메모리 어레이로부터 상기 페이지 버퍼의 라인 내로 판독된다(1413). 상기 제1 연산에 대해 이용되는 상기 오프코드 OP1이 적용되며, 상기 페이지 버퍼 내의 논리 회로들이 상기 판독 데이터 및 상기 페이지 버퍼의 또 다른 라인 내의 데이터에 걸쳐 OP1을 수행하고, 연산 결과들을 상기 페이지 버퍼 내의 라인으로 저장하기 위해 이용된다(1414). 이후에, 이러한 예에서 제2 오프코드가 상기 파라미터 OP#을 관찰함에 의해 실행되는 지가 결정된다(1415). 상기 제1 및 제2 오프코드는 위의 표 1에 예시한 바와 같은 동일한 논리 함수를 확인할 수 있거나, 다른 논리 함수들을 확인할 수 있다. 제2 오프코드가 실행될 경우, 상기 제2 연산이 상기 페이지 버퍼의 대응되는 라인들 내의 데이터에 걸쳐 수행된다(1416). 하나의 오프코드만이 실행될 경우, 또는 상기 제2 오프코드가 단계 1416에서 실행된 후, 상기 데이터 분석 단계가 현재의 데이터에 대해 상기 페이지 버퍼 내의 상기 결과 데이터를 이용하여 실행된다(1417). 상기 데이터 분석 단계 이후, 통과하는 데이터에 대한 어드레스가 상태 제어 레지스터로 기입된다(1418). 이후에, 상기 절차는 상기 시퀀스의 데이터의 마지막 페이지가 분석되었는지를 결정한다(1419). 그렇지 않은 경우, 다음의 어드레스가 생성되고(1420), 상기 다음의 어드레스로부터의 데이터가 단계 1413에서 판독되며, 상기 절차는 상기 마지막 페이지까지 계속된다. 마지막 페이지가 단계 1419에서 표시될 때, 상기 절차가 종료된다(1421).
도 14c는, 예를 들면, 상기 데이터 분석 회로들이 상기 캐시에 연결되는 경우에 대해 집적 회로 메모리상의 명령 디코더를 이용하여 단일의 외부 명령의 디코딩에 대응하여 상기 기계에 의해 실행될 수 있는 도 14a의 단계 1407로 나타내어지는 절차의 하나의 예의 흐름도이다. 상기 흐름도는 도 14a의 단계 1407에서 개시된다(1422). 시작 어드레스를 포함하는 명령 및 종료 어드레스 또는 시퀀스 길이 파라미터와 같은 수많은 어드레스들의 표지에 대응하여, 메모리 데이터가 상기 메모리 어레이로부터 상기 페이지 버퍼의 라인 내로 판독된다(1423). 상기 제1 연산에 대해 이용되는 상기 오프코드 OP1이 적용되며, 상기 페이지 버퍼 내의 논리 회로들이 상기 판독 데이터 및 상기 페이지 버퍼의 또 다른 라인 내의 데이터에 걸쳐 OP1을 수행하고, 연산 결과들을 상기 페이지 버퍼 내의 라인으로 저장하기 위해 이용된다(1424). 이후에, 이러한 예에서 제2 오프코드가 상기 파라미터 OP#을 관찰함에 의해 실행되는 지가 결정된다(1425). 상기 제1 및 제2 오프코드는 위의 표 1에 예시한 바와 같은 동일한 논리 함수를 확인할 수 있거나, 다른 논리 함수들을 확인할 수 있다. 제2 오프코드가 실행될 경우, 상기 제2 연산이 수행된다(1426). 하나의 오프코드만이 실행될 경우, 또는 상기 제2 오프코드가 단계 1426에서 실행된 후, 상기 결과 데이터가 상기 캐시로 전송된다(1427). 이후에, 데이터 분석 단계가 현재의 데이터에 대해 상기 페이지 버퍼 내의 상기 결과 데이터를 이용하여 실행된다(1428). 상기 데이터 분석 단계 이후, 통과하는 데이터에 대한 어드레스가 상태 제어 레지스터로 기입된다(1429). 이후에, 상기 절차는 상기 시퀀스의 데이터의 마지막 페이지가 분석되었는지를 결정한다(1430). 그렇지 않은 경우, 다음의 어드레스가 생성되고(1431), 상기 다음의 어드레스로부터의 데이터가 단계 1430에서 판독되며, 상기 절차는 상기 마지막 페이지까지 계속된다. 마지막 페이지가 단계 1430에서 표시될 때, 상기 절차가 종료된다(1432).
메모리 호스트, 메모리 컨트롤러, 메모리 장치 또는 이러한 장치들의 결합에 의해 실행되는 로직을 예시하는 많은 흐름도이 여기에 설명된다. 여기서의 모든 흐름도들로써, 많은 상기 단계들이 결합될 수 있으며, 병렬로 수행될 수 있거나, 구현되는 기능들에 영향을 미치지 않고 다음 순서로 수행될 수 있는 점이 이해될 것이다. 일부 경우들에서, 숙련자에게 이해될 것인 바와 같이, 단계들의 재배치도 특정한 다른 변화들이 이루어질 경우에만 동일한 결과들을 구현할 것이다. 다른 경우들에서, 숙련자에게 이해될 것인 바와 같이, 단계들의 재배치도 특정 조건들이 만족되는 경우에만 동일한 결과들을 구현할 것이다. 또한, 여기서의 흐름도들이 본 발명의 이해에 적절한 단계들만을 도시하는 점이 이해될 것이며, 다른 기능들을 구현하기 위한 수많은 추가적인 단계들이 도시된 경우들의 이전, 이후 및 사이에 수행될 수 있는 점이 이해될 것이다.
본 발명의 기술은 낮은 전력 설정을 위해 적용될 수 있는 메모리 내의 효율적인 계산을 제공한다. 예를 들면, 공통 동작에서, 상기 호스트가 "근접" 점수나 메모리로부터 판독되는 페이지 내의 적어도 비트들의 스레시홀드를 나타내는 것(예를 들어, 95% 또는 임의의 다른 기준), 또는 상기 호스트로부터 혹은 메모리 내의 또 다른 위치로부터 상기 페이지 버퍼에 기입되는 페이지와 매치되는 메모리로부터 판독되는 페이지에 걸친 논리 함수들의 결과들과 같은 일부 특성들에 대해 메모리 내에 저장되는 데이터를 검색할 수 있다. 여기에 설명되는 기술을 이용하여, 상기 호스트는 IO 전환의 전력 소모를 회피하면서 상기 메모리 칩으로부터 컨트롤러 칩과 같은 또 다른 칩 상으로 데이터를 이동시키지 않고 상기 검색 또는 상기 검색의 일부들을 실행할 수 있다.
본 발명을 상술한 바람직한 실시예들과 상세한 예들을 참조하여 개시하였지만, 이들 예들이 제한하는 의미보다는 예시적인 것들로 의도되는 점이 이해되어야 할 것이다. 변형들 및 결합들이 해당 기술 분야의 숙련자에게는 용이하게 이해될 것이며, 이러한 변형들 및 결합들도 본 발명의 사상과 다음의 특허 청구 범위의 범주 내에 속하는 점이 이해될 것이다.
100:메모리 장치 101:호스트
108:명령 디코더 110:제어 논리
112:분석 결과 레지스터들 130:버스
140:어드레스 디코더 160:메모리 어레이
165:데이터 라인들 172:페이지 버퍼
174:CIM 회로 176:데이터 분석 회로
178:캐시 190:I/O 인터페이스
195:입력/출력 포트들 201:메모리 어레이
202:다중 레벨의 페이지 버퍼 203:비트 카운트 회로들
204:캐시 205:인터페이스
210:버스 212:오프코드
213:기준 214:제어 레지스터
222:I/O 포트 301:메모리 어레이
302:다중 레벨의 페이지 버퍼 303:실패한 비트 검출기 회로들
304:캐시 305:인터페이스
313:기준 314:제어 레지스터
322:I/O 포트 330:비트 카운트 회로
400:버퍼 셀 410:센싱 회로
411:CIM 논리 회로 412-414:복수의 기억 요소들
420:패스 게이트 500:페이지

Claims (28)

  1. 집적 회로에 있어서,
    메모리 어레이 데이터에 대한 병렬 접속을 위해 복수의 데이터 라인들을 구비하는 메모리 어레이를 포함하며;
    입력/출력 인터페이스를 포함하고;
    상기 메모리 어레이 및 상기 입력/출력 인터페이스 사이의 데이터 경로 회로(data path circuit)들을 포함하며, 상기 데이터 경로 회로들은 상기 메모리 어레이의 각각의 데이터 라인들에 연결되는 복수의 버퍼 셀(buffer cell)들을 구비하고, 각 버퍼 셀은 복수의 기억 요소들을 구비하며;
    복수의 계산 회로(computation circuit)들을 포함하고, 상기 계산 회로들은 상기 각각의 버퍼 셀들의 상기 기억 요소들 내의 데이터의 함수를 실행하기 위해 상기 복수의 버퍼 셀들 내의 각각의 버퍼 셀들에 연결되며, 상기 복수의 계산 회로들은 상기 복수의 버퍼 셀들에 대한 연산 결과들을 포함하는 결과 데이터 페이지(results data page)를 생성하도록 병렬로 구성되고;
    분석 결과를 생성하기 위해 상기 결과 데이터 페이지의 함수를 실행시키도록 상기 데이터 경로 회로들에 연결되는 데이터 분석 회로(data analysis circuit)를 포함하는 것을 특징으로 하는 집적 회로.
  2. 제1항에 있어서, 상기 계산 회로들은 상기 각각의 버퍼 셀들의 상기 기억 요소들 내의 상기 연산 결과들을 저장하는 것을 특징으로 하는 집적 회로.
  3. 제1항에 있어서, 상기 입력/출력 인터페이스를 통해 접근 가능한 상기 분석 결과를 저장하기 위한 레지스터를 포함하는 것을 특징으로 하는 집적 회로.
  4. 제1항에 있어서, 상기 복수의 계산 회로들은 일군의 함수들을 실행하기 위한 회로들을 포함하며, 상기 일군의 함수들로부터 상기 기억 요소들 내의 데이터의 함수를 선택하기 위해 설정 데이터에 대응하여 구성될 수 있는 것을 특징으로 하는 집적 회로.
  5. 제1항에 있어서, 상기 결과 데이터 페이지의 상기 함수는 상기 결과 데이터 페이지 내의 논리 "1" 또는 "0"을 나타내는 비트들의 카운팅(counting)을 포함하는 것을 특징으로 하는 집적 회로.
  6. 제5항에 있어서, 상기 결과 데이터 페이지의 상기 함수는 스레시홀드(threshold)와 결과적인 카운트의 비교를 포함하는 것을 특징으로 하는 집적 회로.
  7. 제5항에 있어서, 상기 결과 데이터 페이지는 복수의 세그먼트(segment)들을 포함하고, 상기 결과 데이터 페이지의 상기 함수는 스레시홀드와 각 세그먼트에 대한 결과적인 카운트들의 비교를 포함하는 것을 특징으로 하는 집적 회로.
  8. 제1항에 있어서, 상기 분석 회로는 상기 결과 데이터 페이지의 상기 함수를 설정하기 위해 설정 데이터에 대응하여 구성될 수 있는 것을 특징으로 하는 집적 회로.
  9. 제1항에 있어서, 상기 각각의 버퍼 셀들의 상기 기억 요소 내의 데이터의 함수를 설정하기 위해 명령을 실행하도록 구성되는 명령 인터페이스를 포함하는 것을 특징으로 하는 집적 회로.
  10. 제1항에 있어서, 상기 각각의 버퍼 셀들의 상기 기억 요소들 내의 데이터의 함수 및 상기 결과 데이터 페이지의 함수의 파라미터들을 저장하기 위한 설정 레지스터를 포함하는 것을 특징으로 하는 집적 회로.
  11. 제1항에 있어서, 상기 복수의 계산 회로들은 상기 결과 데이터 페이지에 대한 상기 복수의 버퍼 셀들을 위한 상기 연산 결과들을 생성하기 위해 상기 각각의 버퍼 셀들의 상기 기억 요소들 내의 데이터의 하나 이상의 함수를 순차적으로 실행하도록 구성될 수 있는 것을 특징으로 하는 집적 회로.
  12. 제1항에 있어서, 상기 데이터 경로 회로들은 캐시(cache) 및 상기 복수의 버퍼 셀들로부터 상기 캐시 내의 기억 요소들로 데이터를 전송하고, 상기 캐시로부터 상기 입력/출력 인터페이스로 데이터를 전송하기 위한 회로들을 포함하는 것을 특징으로 하는 집적 회로.
  13. 제12항에 있어서, 상기 분석 회로는 상기 캐시 내의 상기 결과 데이터 페이지에 접속하도록 구성되는 것을 특징으로 하는 집적 회로.
  14. 제12항에 있어서, 상기 분석 회로는 상기 복수의 버퍼 셀들 내의 상기 기억 요소 내의 상기 결과 데이터 페이지에 접속하도록 구성되는 것을 특징으로 하는 집적 회로.
  15. 제1항에 있어서, 상기 데이터 분석 회로는 상기 메모리 어레이에 대한 프로그램 동작에서 실패한 비트 검출기(failed bit detector)로서 구성되는 것을 특징으로 하는 집적 회로.
  16. 제1항에 있어서, 컨트롤러 및 명령 디코더를 포함하며, 상기 컨트롤러는 상기 논리 연산을 설정하기 위한 명령 및 분석 기준을 조정하기 위한 명령에 대응하는 것을 특징으로 하는 집적 회로.
  17. 제1항에 있어서, 상기 복수의 버퍼 셀들의 선택된 기억 요소들 내의 상기 입력/출력 인터페이스로부터 데이터를 저장하기 위해 함수를 실행하도록 구성되는 컨트롤러를 포함하는 것을 특징으로 하는 집적 회로.
  18. 제1항에 있어서, 상기 복수의 버퍼 셀들의 상기 기억 요소들 내의 데이터의 함수는 각 버퍼 셀의 둘 또는 그 이상의 기억 요소들 내의 데이터에 대한 비트 단위의 논리 연산인 것을 특징으로 하는 집적 회로.
  19. 메모리 및 기억 요소들의 복수의 라인들을 구비하는 페이지 버퍼를 가지는 집적 회로 내에서 실행되는 방법에 있어서,
    계산에 대한 입력으로 상기 페이지 버퍼 내의 제1 라인 내에 제1 데이터를 저장하는 단계를 포함하고;
    상기 계산에 대한 입력으로 상기 페이지 버퍼 내의 제2 라인 내에 제2 데이터를 저장하는 단계를 포함하며;
    연산 결과들을 생성하기 위해 상기 페이지 버퍼 내에서 상기 계산을 실행하는 단계를 포함하는 것을 특징으로 하는 방법.
  20. 제19항에 있어서, 상기 복수의 라인들 중에서 하나 내에 상기 연산 결과들을 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  21. 제19항에 있어서, 상기 제2 데이터를 저장하는 단계는 상기 메모리로부터 상기 제2 라인 내에 상기 제2 데이터를 로딩하는 단계를 포함하는 것을 특징으로 하는 방법.
  22. 제19항에 있어서, 분석 결과를 생성하고, 접근 가능한 메모리 내에 상기 분석 결과를 저장하기 위해 분석 기준을 상기 연산 결과들에 적용하는 단계를 포함하는 것을 특징으로 하는 방법.
  23. 제19항에 있어서, 상기 연산 결과들을 데이터 출력을 위해 캐시로 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  24. 제19항에 있어서, 상기 페이지 버퍼 내의 상기 계산에 대한 연산을 선택하기 위해 연산 유형을 설정하는 단계를 포함하는 것을 특징으로 하는 방법.
  25. 제19항에 있어서, 연산 식별자를 제어 레지스터에 기입하여 상기 페이지 버퍼 내의 상기 계산에 대한 연산을 선택하기 위해 연산 유형을 설정하는 단계를 포함하는 것을 특징으로 하는 방법.
  26. 제19항에 있어서,
    분석 결과를 생성하고, 접근 가능한 메모리 내에 상기 분석 결과를 저장하기 위해 분석 기준을 상기 연산 결과들에 적용하는 단계; 및
    상기 계산의 결과들에 대한 분석 기준을 설정하는 단계를 포함하는 것을 특징으로 하는 방법.
  27. 제26항에 있어서, 상기 연산 결과들을 캐시로 이동시키는 단계 및 상기 분석 기준을 상기 캐시 내의 상기 연산 결과들에 적용하는 단계를 포함하는 것을 특징으로 하는 방법.
  28. 제26에 있어서, 상기 분석 기준을 상기 페이지 버퍼의 상기 라인들 중에서 상기 하나 내의 상기 연산 결과들에 적용하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020220096362A 2022-03-31 2022-08-02 메모리 내 데이터 계산 및 분석 KR20230141396A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/710,367 US12014798B2 (en) 2022-03-31 2022-03-31 In memory data computation and analysis
US17/710,367 2022-03-31

Publications (1)

Publication Number Publication Date
KR20230141396A true KR20230141396A (ko) 2023-10-10

Family

ID=88193353

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220096362A KR20230141396A (ko) 2022-03-31 2022-08-02 메모리 내 데이터 계산 및 분석

Country Status (5)

Country Link
US (1) US12014798B2 (ko)
JP (1) JP7524511B2 (ko)
KR (1) KR20230141396A (ko)
CN (1) CN116935931A (ko)
TW (1) TWI820713B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901734B2 (en) * 2019-03-01 2021-01-26 Micron Technology, Inc. Memory mapping using commands to transfer data and/or perform logic operations

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62245376A (ja) 1986-04-18 1987-10-26 Hitachi Ltd 表示メモリ回路
JPH08305625A (ja) * 1995-05-11 1996-11-22 Hitachi Ltd 演算処理機能付き半導体メモリ及びそれを用いた処理装置
JPH11338767A (ja) * 1998-05-22 1999-12-10 Mitsubishi Heavy Ind Ltd 画像処理用機能メモリ装置
JP2006099232A (ja) * 2004-09-28 2006-04-13 Renesas Technology Corp 半導体信号処理装置
KR101653206B1 (ko) 2010-01-19 2016-09-02 삼성전자주식회사 프로그램 검증 회로 및 이를 포함하는 비휘발성 메모리 장치
JP5259765B2 (ja) 2011-03-29 2013-08-07 株式会社東芝 不揮発性半導体メモリ
US20140237263A1 (en) * 2013-02-19 2014-08-21 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device and memory system using the same
KR102634421B1 (ko) 2016-11-21 2024-02-06 에스케이하이닉스 주식회사 페일 비트 카운터 및 이를 포함하는 반도체 메모리 장치
WO2018132219A1 (en) 2017-01-13 2018-07-19 Everspin Technologies, Inc. Preprogrammed data recovery
US10403352B2 (en) * 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
TW202301125A (zh) 2017-07-30 2023-01-01 埃拉德 希提 具有以記憶體為基礎的分散式處理器架構的記憶體晶片
US11514996B2 (en) 2017-07-30 2022-11-29 Neuroblade Ltd. Memory-based processors
KR102395463B1 (ko) * 2017-09-27 2022-05-09 삼성전자주식회사 적층형 메모리 장치, 이를 포함하는 시스템 및 그 동작 방법
KR102576849B1 (ko) * 2018-07-13 2023-09-14 에스케이하이닉스 주식회사 메모리 장치
US11138499B2 (en) 2018-09-28 2021-10-05 Intel Corporation Applications of back-end-of-line (BEOL) capacitors in compute-in-memory (CIM) circuits

Also Published As

Publication number Publication date
US20230317122A1 (en) 2023-10-05
JP7524511B2 (ja) 2024-07-30
JP2023152261A (ja) 2023-10-16
CN116935931A (zh) 2023-10-24
TW202340978A (zh) 2023-10-16
US12014798B2 (en) 2024-06-18
TWI820713B (zh) 2023-11-01

Similar Documents

Publication Publication Date Title
US9971647B2 (en) Apparatus and method for programming ECC-enabled NAND flash memory
US8751732B2 (en) System and method for increasing capacity, performance, and flexibility of flash storage
CN102165409B (zh) 具有扩充模式的固态存储装置控制器
CN101957726B (zh) 双列直插式存储模块中的相变存储器
US6801459B2 (en) Obtaining data mask mapping information
CN102132354B (zh) 闪存中的数据的快速低功率读取
US10977121B2 (en) Fast page continuous read
CN114974384B (zh) 高效的io区段中断系统和方法
KR20030043934A (ko) 비-휘발성 메모리에 대해 신뢰성이 높은 데이터 복사작동을 위한 신규 방법 및 구조
US9189440B2 (en) Data interleaving module
KR100888261B1 (ko) 뱅크 id를 이용할 수 있는 메모리 서브 시스템과 그 방법
CN110008147A (zh) 存储器控制器以及用于对存储模块进行访问的方法
US6957307B2 (en) Mapping data masks in hardware by controller programming
KR20230141396A (ko) 메모리 내 데이터 계산 및 분석
US11474740B2 (en) Memory system and memory controller
CN101563675A (zh) 具有高写入并行度的用于快闪存储器的列冗余
CN105825890B (zh) 存储器编程方法以及存储器装置
CN101751982B (zh) 闪存存储装置中闪存控制器与闪存芯片之间的连接方法
CN113892089A (zh) 非易失性存储器装置中的数据读取的改进的安全性和正确性
US11782824B2 (en) Universal data path architecture for different data array
US20240069738A1 (en) Accessing memory devices via switchable channels
US20240094947A1 (en) Memory system
US20230006673A1 (en) Memory system and memory controller

Legal Events

Date Code Title Description
E902 Notification of reason for refusal