KR20220141879A - 온 메모리 패턴 매칭을 인터페이싱하기 위한 장치 및 방법 - Google Patents

온 메모리 패턴 매칭을 인터페이싱하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20220141879A
KR20220141879A KR1020227032573A KR20227032573A KR20220141879A KR 20220141879 A KR20220141879 A KR 20220141879A KR 1020227032573 A KR1020227032573 A KR 1020227032573A KR 20227032573 A KR20227032573 A KR 20227032573A KR 20220141879 A KR20220141879 A KR 20220141879A
Authority
KR
South Korea
Prior art keywords
data
memory
pattern matching
pattern
memory array
Prior art date
Application number
KR1020227032573A
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 KR20220141879A publication Critical patent/KR20220141879A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Dram (AREA)

Abstract

본 개시의 실시예들은 메모리 디바이스 내에서 패턴 매칭 동작들을 수행가능한 장치들, 시스템들, 방법들 및 메모리들에 관한 것이다. 패턴 매칭 동작들은 레지스터에 저장된 패턴에 기초하여 메모리 내에 저장된 데이터에 대해 수행될 수 있다. 패턴 매칭 동작의 결과는 메모리에 의해 제공될 수 있다. 데이터는 판독 동작, 리프레시 동작, 오류 정정 동작, 및/또는 패턴 매칭 동작에 의해 패턴 매칭 동작을 위해 메모리 어레이로부터 검색될 수 있다. 데이터는 메모리 어레이 대신에 또는 그에 추가하여 들어오는 데이터 입력 라인들로부터 검색될 수 있다. 데이터가 패턴 매칭 동작들을 위해 저장되거나 검색되는 방법은 메모리 제어기에 의해 제어될 수 있다.

Description

온 메모리 패턴 매칭을 인터페이싱하기 위한 장치 및 방법
본 개시는 일반적으로 동적 랜덤 액세스 메모리(DRAM)와 같은, 휘발성 메모리(volatile memory)를 포함하는, 메모리 디바이스들에 관한 것이다. 데이터는 DRAM의 개별 메모리 셀들에 저장될 수 있다. 메모리 셀들은 로우(row)들과 컬럼(column)들의 어레이로 구성될 수 있다. 로우에서 각각의 메모리 셀은 워드 라인(word line)에 결합되고 컬럼에서 각각의 메모리 셀은 비트 라인(bit line)에 결합될 수 있다. 따라서, 모든 메모리 셀은 워드 라인 및 비트 라인에 결합된다. 데이터는 마이크로프로세서(microprocessor), 그래픽 처리 유닛(graphical processing unit), 또는 다른 회로부에 의해 다양한 계산들을 수행하기 위해 DRAM에 제공되고 그로부터 검색될 수 있다.
인공 지능 및 빅 데이터 분석과 같은 증가하는 다수의 컴퓨팅 어플리케이션들이 패턴 매칭 동작들을 필요로 한다. 현재, 패턴들에 대해 검색될 데이터는 장기 데이터 저장 디바이스로부터 DRAM으로 패턴 매칭 동작들이 수행되는 프로세서로 제공된다.
본 명세서에 설명된 예시적인 장치들, 시스템들 및 방법들은 패턴 매칭이 메모리에 의해 수행되도록 허용할 수 있다. 메모리는 다양한 방법들에 의해 패턴 매칭을 위해 메모리 어레이로부터 데이터를 검색할 수 있고, 그 중 일부는 데이터를 포함하는 워드 라인들을 활성화하거나 또는 데이터를 검색하는 것을 필요로 하는 기존 동작들을 활용할 수 있다. 이것은 패턴 매칭이 일부 실시예들에서 메모리에 의해 더 적은 커맨드들 및/또는 동작들로 수행되는 것을 허용할 수 있다. 이것은 시간 및/또는 전력 소비를 일부 어플리케이션들에서 메모리에 의해 줄일 수 있다.
본 개시의 적어도 하나의 예에 따르면, 장치는 프로세서로부터 데이터를 기록하고 프로세서에 데이터를 판독하도록 구성된 제1 메모리 어레이, 메모리 어레이에 기록되거나 메모리 어레이로부터 판독될 데이터를 수신하고, 비트들의 스트링의 패턴을 수신하고, 및 데이터 및 패턴을 비교하는 것을 포함하는 패턴 매칭 동작을 수행하도록 구성된 제1 메모리 어레이를 포함하는 반도체 다이 상의 비교기 회로(comparator circuit), 및 제1 메모리 어레이 및 비교기 회로를 포함하고 패턴 매칭 동작을 위한 커맨드들을 제공하도록 구성된 반도체 다이 상의 커맨드 디코더를 포함할 수 있다.
본 개시의 적어도 하나의 예에 따르면, 장치는 반도체 다이 상에 포함된 메모리-여기서, 메모리는 복수의 워드 라인들을 포함하는 메모리 어레이를 포함할 수 있고, 메모리 어레이는 복수의 워드 라인들 중 적어도 일부에 데이터를 저장하도록 구성되고, 데이터는 복수의 후보 데이터 스트링을 포함함-, 및 데이터 및 패턴을 수신하도록 구성된 패턴 매칭 회로부를 포함하고, 패턴 매칭 회로부는 커맨드에 응답하여 데이터를 패턴과 비교하는 것을 포함하는 패턴 매칭 동작을 수행하도록 구성되고, 패턴은 하나 이상의 데이터 스트링들을 포함한다. 장치는 후보 데이터 스트링의 전체가 메모리 액세스 동작에 의해 검색 가능하도록 복수의 데이터 스트링들 중 후보 데이터 스트링을 저장하기 위해 메모리에 제어 신호들을 제공하고 복수의 후보 데이터 스트링들 중 하나 이상의 후보 데이터 스트링들을 메모리 어레이로부터 패턴 매칭 회로부에 제공하도록 구성된 메모리 제어기를 더 포함할 수 있고, 데이터가 제공되는 방식은 패턴에 포함된 다수의 데이터 스트링들에 적어도 부분적으로 기초할 수 있다.
본 개시의 적어도 하나의 예에 따르면, 방법은 메모리 상의 패턴 매칭 회로부에 데이터를 제공하기 위해 메모리에 커맨드를 제공하는 단계-여기서, 상기 커맨드는 리프레시 동작 또는 오류 정정 동작 중 적어도 하나에 응답하여 메모리의 메모리 어레이로부터 데이터가 제공되게 함-, 패턴 매칭 회로부에 패턴을 제공하는 단계, 및 패턴 매칭 회로부로, 결과를 생성하기 위해 데이터와 패턴에 대해 패턴 매칭 동작을 수행하는 단계를 포함할 수 있다.
도 1은 본 개시의 실시예들에 따른 반도체 디바이스의 블록도이다.
도 2는 본 개시의 실시예들에 따른 패턴 매칭 회로부의 블록도이다.
도 3은 본 개시의 실시예들에 따른 시스템의 블록도이다.
도 4는 본 개시의 실시예들에 따른 방법의 흐름도이다.
도 5는 본 개시의 실시예들에 따른 방법의 흐름도이다.
특정 실시예들의 다음 설명은 본질적으로 단지 예시일 뿐이며, 본 개시 또는 그 어플리케이션들 또는 사용들의 범위를 제한하려는 의도가 결코 아니다. 본 시스템들 및 방법들의 실시예들에 대한 다음의 상세한 설명에서, 참조는 본 명세서의 일부를 형성하고 설명된 시스템들 및 방법들이 실행될 수 있는 특정 실시예들을 예시의 방법으로서 도시되는 첨부 도면들에 의해 이루어진다. 이들 실시예들은 당업자가 본원에 개시된 시스템들 및 방법들을 실행할 수 있도록 충분히 상세하게 설명되며, 다른 실시예들이 이용될 수 있고 구조적 및 논리적 변경들이 본 개시의 사상 및 범위로부터 벗어나지 않고 이루어질 수 있음을 이해해야 한다. 더욱이, 명료함의 목적을 위해, 특정 피쳐들의 상세한 설명들은 본 개시의 실시예들의 설명을 모호하게 하지 않기 위해 당업자에게 명백할 때 논의되지 않을 것이다. 그러므로 다음의 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 본 개시의 범위는 첨부된 청구범위들에 의해서만 정의된다.
동적 랜덤 액세스 메모리(DRAM)는 마이크로프로세서, 그래픽 처리 유닛, 주문형 집적 회로, 및/또는 다른 회로부(본 명세서에서 집합적으로 처리 회로부라고 지칭됨)에 의해 수행되거나 수행되는 계산들로부터 생성된 데이터를 저장하는 데 종종 사용된다. 데이터는 처리 회로부 및/또는 장기 데이터 저장 디바이스(예를 들어, 비휘발성 메모리)로부터 DRAM으로 및 그로부터 전송될 수 있다. 예를 들어, 데이터는 하드 드라이브로부터 검색되고 DRAM에 제공될 수 있다. 그 다음 데이터는 처리 회로부에 의해 수행되는 계산들을 위해 필요에 따라 DRAM으로부터 처리 회로부에 제공될 수 있다. 일부 디바이스들에서, DRAM으로 및 그로부터 데이터를 제공하는 것은 메모리 제어기에 의해 제어될 수 있다. 메모리 제어기는 처리 회로부 및/또는 DRAM 및 처리 회로부와 통신하는 별도의 컴포넌트에 통합될 수 있다.
인공 지능 및 빅 데이터 분석과 같은 증가하는 다수의 컴퓨팅 어플리케이션들이 패턴 매칭 동작들을 필요로 한다. 예를 들어, 게놈 정보(genomic information)의 방대한 데이터베이스들에서 특정 시퀀스들에 대해 검색될 수 있다. 다른 예에서, 신경망(neural network)은 이미지에서 객체(object)를 식별하기 위해 이미지 데이터에서 특정 피쳐들에 대해 검색하도록 훈련될 수 있다. 현재, 패턴들에 대해 검색될 데이터는 장기 데이터 저장 디바이스로부터 DRAM으로 패턴 매칭 동작들이 수행되는 처리 회로부로 제공된다. 그러나, 컴포넌트들 사이에 데이터를 전송하는 것은 일부 어플리케이션들에서 패턴 매칭 계산들을 느려지게 할 수 있다. 따라서, 컴포넌트들 사이에 전송된 데이터를 줄이는 것이 바람직하다.
본 개시의 실시예들에 따르면, DRAM과 같은, 메모리는 본 명세서에서 패턴 매칭 회로부로 지칭되는 패턴 매칭 계산들을 수행하기 위한 회로부를 포함할 수 있다. 일부 실시예들에서, 패턴 매칭 회로부는 비교기 회로 및 비교기 회로와 통신하는 하나 이상의 레지스터들을 포함할 수 있다. 메모리는 패턴이 데이터에 존재하는지 아닌지 여부를 결정하기 위해(예를 들어, 데이터는 하나 이상의 패턴 매칭들을 포함함) 분석될 데이터 및 패턴을 수신할 수 있다. 패턴 매칭은 메모리에 의해(예를 들어, 온 보드) 수행될 수 있고 분석될 데이터는 패턴 매칭 동작들을 위해 메모리 외부에서 다른 처리 회로부에 제공될 필요가 없다. 오히려, 일부 실시예들에서, 패턴 매칭 동작들의 결과들만이 메모리에 의해 제공될 수 있다. 일부 어플리케이션들에서, 메모리에 의해 패턴 매칭 동작들을 수행하는 것과 결과들만을 제공하는 것은 더 적은 데이터가 메모리와 처리 회로부 사이에 전송되기 때문에 적어도 패턴 매칭 동작들에 필요한 시간을 감소시킬 수 있다. 일부 실시예들에서, 메모리에 의해 패턴 매칭 동작들을 수행하는 것은 메모리 및/또는 메모리를 포함하는 시스템에 의해 전력 소비를 감소시킬 수 있다.
본 개시의 실시예들에 따르면, 패턴 매칭을 위한 데이터는 메모리의 메모리 어레이로부터 검색될 수 있다. 일부 실시예들에서, 데이터는 오류 정정 동작에 의해 검색될 수 있다. 데이터는 오류 정정을 위해 메모리 어레이로부터 주기적으로 풀링(pulling)될 수 있다. 오류 정정을 위해 풀링되는 것 외에도, 데이터는 또한 패턴 매칭 동작에서 사용하기 위해 풀링될 수 있다. 일부 실시예들에서, 데이터는 리프레시 동작에 의해 검색될 수 있다. 데이터는 메모리 어레이의 워드 라인들을 활성화함으로써 주기적으로 리프레시될 수 있다. 리프레시 동작 동안 메모리 라인들을 활성화하는 것 외에도, 내부 판독 동작은 패턴 매칭 동작을 위한 데이터를 제공하기 위해 리프레싱을 위해 라인이 활성화되는 동안 수행될 수 있다. 일부 어플리케이션들에서, 오류 정정 및/또는 리프레시 동작들 동안 데이터를 검색하는 것은 패턴 매칭 동작들을 위한 데이터를 검색하기 위해 추가의 판독 커맨드들 또는 판독 비교 커맨드들을 발행하는 것과 비교하여 패턴 매칭 동작들을 수행하는 데 필요한 커맨드들 및/또는 동작들의 수를 감소시킬 수 있다.
본 개시의 실시예들에 따르면, 패턴 매칭을 위한 데이터는 메모리 어레이에 추가로 또는 그 대신에 IO 라인들로부터 검색될 수 있다. 일부 실시예들에서, 모든 기록 커맨드와 함께 메모리에 제공된 데이터는 메모리 어레이에 기록되기 전 또는 이와 병렬로 패턴과 비교될 수 있다. 일부 실시예들에서, 데이터는 기록 비교 커맨드와 함께 메모리에 제공될 수 있다. 기록 비교 커맨드에 응답하여, 커맨드과 함께 제공된 데이터는 메모리 어레이에 기록되지 않고 패턴과 비교될 수 있다.
도 1은 본 개시의 적어도 일 실시예에 따른 반도체 디바이스(100)의 전반적인 구성을 도시하는 블록도이다. 반도체 디바이스(100)는 일부 예들에서 단일 반도체 칩에 집적된 DRAM 디바이스와 같은, 반도체 메모리 디바이스일 수 있다.
반도체 디바이스(100)는 메모리 어레이(118)를 포함한다. 메모리 어레이(118)는 복수의 메모리 뱅크들을 포함하는 것으로 도시된다. 도 1의 실시예에서, 메모리 어레이(118)는 8개의 메모리 뱅크들 BANK0-BANK7을 포함하는 것으로 도시된다. 다른 실시예들에서 더 많거나 더 적은 뱅크들이 메모리 어레이(118)에 포함될 수 있다. 비록 도 1은 하나의 메모리 어레이(118)만을 예시하지만, 디바이스(100)는 다른 실시예들에서 다중 메모리 어레이들(118)을 포함할 수 있다는 것이 이해된다. 각각의 메모리 뱅크는 복수의 워드 라인들 WL, 복수의 비트 라인들 BL 및 /BL, 및 복수의 워드 라인들 WL과 복수의 비트 라인들 BL 및 /BL의 교차점들에 배치된 복수의 메모리 셀들 MC를 포함한다. 워드 라인 WL의 선택은 로우(row) 디코더(108)에 의해 수행되고 비트 라인들 BL 및 /BL의 선택은 컬럼(column) 디코더(110)에 의해 수행된다. 선택된 워드 라인 WL은 워드 라인 드라이버 WD에 의해 원하는 전하로 구동될 수 있다. 도 1의 실시예에서, 로우 디코더(108)는 각각의 메모리 뱅크에 대한 개별 로우 디코더를 포함하고 컬럼 디코더(110)는 각각의 메모리 뱅크에 대한 개별 컬럼 디코더를 포함한다. 비트 라인들 BL 및 /BL은 개별 감지 증폭기(SAMP)에 결합된다.
비트 라인 BL 또는 /BL로부터의 판독 데이터는 감지 증폭기 SAMP에 의해 증폭되고, 상호보완적 로컬 데이터 라인들 (LIOT/B)을 통해 서브증폭기 전송 게이트(120)에 제공된다. 서브증폭기 전송 게이트(120)는 적절한 LIOT/B와 적절한 공유 메인 데이터 라인들(MIO) 사이에 전도성 경로를 형성하기 위한 스위치로서 역할을 할 수 있다. 판독 데이터는 IO 회로(122)에 데이터를 제공하는, 판독 증폭기(126)로 서브증폭기 전송 게이트(120)에 의해 제공되는 전도성 경로를 통해 로컬 데이터 라인들 LIOT/B로부터 메인 데이터 라인들 MIO로 전달할 수 있다. IO 회로(122)로부터 수신된 기록 데이터는 기록 증폭기(126)로부터 출력되고 상호보완적 메인 데이터 라인들 MIO, 서브증폭기 전송 게이트(120), 및 상호보완적 로컬 데이터 라인들 LIOT/B를 통해 감지 증폭기(SAMP)에 제공되고, 비트 라인 BL 또는 /BL에 결합된 메모리 셀 MC에 기록된다.
반도체 디바이스(100)는 메모리 제어기(도 1에 도시되지 않음)와 같은, 반도체 디바이스(100) 외부(예를 들어, 메모리 외부)의 디바이스들로부터 정보를 송신 및 수신하기 위해 복수의 외부 단자들을 사용할 수 있다. 외부 단자들은 커맨드 및 어드레스들을 수신하기 위한 커맨드 및 어드레스 버스에 결합된 커맨드 및 어드레스(C/A) 단자들, 및 CS 신호, 클록들 CK 및 /CK를 수신하기 위한 클록 단자들, 데이터를 제공하기 위한 데이터 단자들 DQ, Alrt 신호를 제공하기 위한 경보 핀 ALERT, 및 전력 공급 전위들 VDD1, VDD2, VSS, VDDQ 및 VSSQ를 수신하기 위한 전력 공급 단자들을 포함한다.
클록 단자들에는 입력 회로(112)에 제공되는 외부 클록들 CK 및 /CK이 공급된다. 외부 클록들은 상호보완적일 수 있다. 입력 회로(112)는 CK 및 /CK 클록들에 기초하여 내부 클록 ICLK를 생성한다. ICLK 클록은 커맨드 디코더(110) 및 내부 클록 생성기(114)에 제공된다. 내부 클록 생성기(114)는 ICLK 클록에 기초하여 다양한 내부 클록들 LCLK를 제공한다. LCLK 클록들은 다양한 내부 회로들의 타이밍 동작에 사용될 수 있다. 내부 데이터 클록들 LCLK는 입력/출력 회로(122)에 포함된 회로들의 동작을 타이밍하기 위해 예를 들어, 데이터 수신기들에 대해 기록 데이터의 수신을 타이밍하기 위해 입력/출력 회로(122)에 제공된다.
C/A 단자들에는 메모리 어드레스들이 공급될 수 있다. C/A 단자들에 공급된 메모리 어드레스들은 커맨드/어드레스 입력 회로(102)를 통해, 어드레스 디코더(104)에 제공된다. 어드레스 디코더(104)는 어드레스를 수신하고 디코딩된 로우 어드레스 XADD를 로우 디코더(108)에 공급하고 디코딩된 컬럼 어드레스 YADD를 컬럼 디코더(110)에 공급한다. 어드레스 디코더(104)는 또한 디코딩된 뱅크 어드레스 BADD를 공급할 수 있으며, 이는 디코딩된 로우 어드레스 XADD 및 컬럼 어드레스 YADD를 포함하는 메모리 어레이(118)의 뱅크를 나타낼 수 있다. C/A 단자들에는 커맨드들이 제공될 수 있다. 커맨드들의 예들은 판독 동작들을 수행하기 위한 판독 커맨드들 및 기록 동작들을 수행하기 위한 기록 커맨드들과 같은, 메모리에 액세스하기 위한 액세스 커맨드들과, 뿐만아니라 다른 커맨드들 및 동작들을 포함한다. 액세스 커맨드들은 액세스될 메모리 셀(들)을 나타내기 위해 하나 이상의 로우 어드레스 XADD, 컬럼 어드레스 YADD, 및 뱅크 어드레스 BADD와 연관될 수 있다.
커맨드들은 커맨드/어드레스 입력 회로(102)를 통해 커맨드 디코더(106)에 내부 커맨드 신호들로서 제공될 수 있다. 커맨드 디코더(106)는 동작들을 수행하기 위한 다양한 내부 신호들 및 커맨드들을 생성하기 위해 내부 커맨드 신호들을 디코딩하는 회로들을 포함한다. 예를 들어, 커맨드 디코더(106)는 워드 라인 WL을 선택하기 위한 로우 커맨드 신호 및 비트 라인 BL을 선택하기 위한 컬럼 커맨드 신호를 제공할 수 있다. 다른 예에서, 커맨드 디코더(106)는 본 개시의 실시예들에 따른 패턴 매칭 동작들을 가능하게 하는 메모리 조건과 같은, 메모리 동작 조건을 선택하기 위해 모드 레지스터(132)에 제공된 모드 레지스터 커맨드를 제공할 수 있다.
디바이스(100)는 판독 커맨드인 액세스 커맨드를 수신할 수 있다. 활성화 커맨드가 수신되고, 로우 및 뱅크 어드레스들이 활성화 커맨드에 적시에 공급된 후 판독 커맨드와 컬럼 어드레스가 판독 커맨드에 적시에 공급되면, 판독 데이터는 로우 어드레스 및 컬럼 어드레스에 대응하는 메모리 어레이(118)의 메모리 셀들 MC로부터 판독된다. 판독 커맨드는 커맨드 디코더(106)(예를 들어, 커맨드 제어기)에 의해 수신되고, 이는 메모리 어레이(118)로부터 판독 데이터가 판독 증폭기(128)로 제공되도록 내부 커맨드들을 제공한다. 판독 데이터는 입력/출력 회로(122)를 통해 데이터 단자들 DQ로부터 외부로 출력된다.
디바이스(100)는 기록 커맨드인 액세스 커맨드를 수신할 수 있다. 활성화 커맨드들이 수신되고, 로우 및 뱅크 어드레스들이 활성화 커맨드에 적시에 공급된 후, 기록 커맨드와 컬럼 어드레스가 기록 커맨드에 적시에 공급되면, 데이터 단자들 DQ에 공급된 기록 데이터는 로우 어드레스 및 컬럼 어드레스에 대응하는 메모리 어레이(118)의 메모리 셀들에 기록된다. 기록 커맨드는 커맨드 디코더(106)에 의해 수신되고, 이는 기록 데이터가 입력/출력 회로(122)에 데이터 수신기들에 의해 수신되도록 내부 커맨드들을 제공한다. 기록 클록들은 또한 입력/출력 회로(122)의 데이터 수신기들에 의해 기록 데이터의 수신을 타이밍하기 위해 외부 클록 단자들에 제공될 수 있다. 기록 데이터는 입력/출력 회로(122)를 통해 기록 증폭기(126)에 공급되고, 메모리 셀 MC에 기록되기 위해 증폭기(126)에 의해 메모리 어레이(118)에 공급된다.
디바이스(100)는 또한 리프레시 동작을 수행하게 하는 커맨드들을 수신할 수 있다. 리프레시 신호 REF는 커맨드 디코더(106)가 오토리프레시(auto-refresh) 및/또는 다른 리프레시 커맨드를 나타내는 신호를 수신할 때 활성화되는 펄스 신호일 수 있다. 일부 실시예들에서, 리프레시 커맨드는 메모리 디바이스(100)에 외부적으로 발행될 수 있다. 일부 실시예들에서, 리프레시 커맨드는 디바이스(100)의 컴포넌트에 의해 주기적으로 생성될 수 있다. 리프레시 신호 REF는 리프레시 제어기(116)에 제공된다. 리프레시 제어기(116)에 제공된 리프레시 커맨드는 디바이스(100)가 메모리 뱅크들 중 하나 이상에 대한 리프레시 동작들을 수행하게 야기할 수 있다.
리프레시 제어 회로(116)는 로우 제어 회로(108)에 리프레시 로우 어드레스 RXADD를 공급하고, 이는 리프레시 로우 어드레스에 의해 나타내지는 하나 이상의 워드 라인들 WL을 리프레시할 수 있다. 리프레시 제어 회로(116)는 리프레시 신호에 기초하여 리프레시 동작의 타이밍을 제어할 수 있다. 리프레시 신호의 활성화에 응답하여, 리프레시 제어 회로(116)는 하나 이상의 리프레시 어드레스들을 생성 및 제공할 수 있다.
리프레시 동작의 한 유형은 오토리프레시 동작일 수 있다. 오토리프레시 동작에 응답하여 디바이스(100)는 메모리 어레이(118)의 워드 라인 또는 워드 라인들의 그룹을 리프레시할 수 있고, 그 다음 다음의 오토리프레시 동작에 응답하여 메모리의 다음의 워드 라인 또는 워드 라인들의 그룹을 리프레시할 수 있다. 리프레시 제어 회로(116)는 메모리 어레이(118)에 워드 라인 또는 워드 라인들의 그룹을 나타내는 리프레시 어드레스로서 오토리프레시 어드레스를 제공할 수 있다. 리프레시 제어 회로(116)는 시간이 지남에 따라 오토리프레시 동작이 메모리 어레이(118)의 모든 워드 라인들을 통해 순환할 수 있도록 리프레시 어드레스들의 시퀀스를 생성할 수 있다.
디바이스(100)는 메모리 어레이(118)에 기록되고 그로부터 판독되는 데이터 내에 오류들의 검출 및 정정을 위한 오류 정정 회로부 (ECC)(134)를 포함할 수 있다. 메모리 어레이(118)는 패리티 정보(parity information)를 저장하기 위한 전용 영역들을 포함할 수 있거나 디바이스(100)는 패리티 정보를 저장하기 위한 추가 어레이(도시되지않음)를 포함할 수 있다. ECC(134)는 메모리 어레이(118)로부터 데이터 및 패리티 정보를 수신할 수 있다. ECC(134)가 데이터에서 오류를 검출할 때, ECC(134)는 오류를 정정하고 정정된 데이터를 메모리 어레이(118)에 다시 재기록할 수 있다. ECC(134)는 커맨드 디코더(106)에 의해 제공되는 판독 및/또는 기록 커맨드들에 응답하여 오류를 검출하고 정정할 수 있다. ECC(134)는 판독 및/또는 기록 커맨드들과 무관하게 메모리 어레이 내에 오류들을 검출 및 정정하기 위해 메모리 어레이(118)로부터 데이터를 주기적으로 검색할 수 있다. 예를 들어, 커맨드 디코더(106)는 오류 정정 신호 ECS를 ECC(134)에 주기적으로 발행할 수 있다. 위에서 설명된 오토리프레시 동작과 유사하게, ECC(134)는 일련의 오류 정정 신호들에 걸쳐 메모리 어레이(118)의 모든 워드 라인들을 통해 순환할 수 있다.
모드 레지스터(132)는 디바이스(100)에 대한 다양한 모드들을 정의하는데 사용될 수 있다. 모드 레지스터(132)는 재프로그래밍되거나, 리셋되거나, 또는 디바이스(100)가 전력을 잃을 때까지 저장된 정보를 유지할 수 있다. 모드 레지스터(132)는 모드 레지스터 기록 커맨드를 통해 프로그래밍될 수 있다. 모드 레지스터(132)는 상이한 메모리 동작들 또는 구성들과 관련된 정보를 저장하기 위한 하나 이상의 레지스터들을 포함할 수 있다. 예를 들어, 모드 레지스터(132)는 버스트 길이, 버스트 유형, 레이턴시(latency), 주파수 설정 포인트를 설정하고, 프로그래밍 가능한 종단 컴포넌트들을 가능하게 하고, 특정 메모리 동작들을 가능하게 하는 것뿐만 아니라, 다른 것들에 사용될 수 있다. 모드 레지스터(132)는 또한 디바이스(100)에 대한 상태 정보를 제공하기 위해 판독될 수 있는 정보로 프로그래밍될 수 있다. 예를 들어, 모드 레지스터(132)는 준비 상태, 교정 상태, 뿐만 아니라 다른 상태 정보를 제공하는데 사용될 수 있다. 판독된 정보는 디바이스(100)의 회로들에 의해 프로그래밍될 수 있다. 모드 레지스터(132)는 모드 레지스터 판독 커맨드를 통해 판독될 수 있다. 모드 레지스터(132)를 판독하는 것은 동작들 및 구성들의 상태에 대한 정보가 디바이스(100)에 의해 제공되는 것을 허용한다.
본 개시의 실시예들에 따르면, 모드 레지스터(132)는 패턴 매칭 동작들이 패턴 매칭 회로부(130)에 의해 수행되는 동작의 모드를 지정하는데 사용될 수 있다. 예를 들어, 특정 값이 모드 레지스터(132)에 기록될 때, 패턴 매칭 동작들은 메모리에 제공된 신호들을 사용하여 패턴 매칭 회로부(130)에 의해 구현될 수 있고, 상이한 특정 값이 모드 레지스터(132)에 기록될 때는, 패턴 매칭 동작들이 발생하지 않을 수 있다(예를 들어, 패턴 매칭 회로부(130)가 비활성화될 수 있음). 패턴 매칭 동작은 일부 실시예들에서 하나 이상의 패턴 매칭 커맨드들에 응답하여 패턴 매칭 회로부(130)에 의해 수행될 수 있다. 모드 레지스터(132)가 패턴 매칭 동작들을 가능하게 하도록 프로그래밍될 때, 모드 레지스터(132)는 패턴 매칭 회로부(130)를 가능하게 하는 제어 신호 EN_PM을 제공할 수 있고, 이는 하나 이상의 레지스터들 및 하나 이상의 비교기 회로들(도 1에 도시되지 않음)을 포함할 수 있다. 패턴 매칭 회로부(130)가 모드 레지스터(132)로부터 제어 신호 EN_PM에 의해 가능하게 될 때, 패턴 매칭 회로부(130)는 커맨드 디코더(106)에 의해 제공되는 하나 이상의 패턴 매칭 커맨드들 PatMat에 응답할 수 있다. 하나 이상의 패턴 매칭 커맨드들에 응답하여, 패턴 매칭 회로부(130)는 레지스터에 패턴을 저장하고, 예를 들어, 패턴이 메모리 어레이(118)에 저장된 데이터에 존재하는지의 여부를 결정하기 위해 IO 회로(122)로부터 수신된 데이터 상의 및/또는 메모리 어레이(118)에 저장된 데이터 상의 패턴 매칭 동작을 비교기 회로로 수행하고, 패턴 매칭 동작의 결과를 레지스터에 기록하고, 패턴 매칭 동작의 결과에 기초하여 메모리 어레이(118)에 데이터를 변경하고, 결과를 레지스터로부터 IO 회로(122)에 제공하고, 및/또는 경보 신호 Alrt를 경보 핀에 제공할 수 있다.
패턴 매칭 회로부(130)는 디바이스(100)의 일체형 부분을 형성할 수 있다. 예를 들어, 패턴 매칭 회로부(130)는 메모리 어레이(118)로서 동일한 반도체 다이에 형성될 수 있다. 일부 예들에서, 패턴 매칭 회로부(130)는 메모리 어레이(118)로서 동일한 인쇄 회로 기판 상에 있을 수 있다. 이러한 방식으로, 패턴 매칭 회로부는 프로세서 또는 호스트 디바이스보다 메모리 어레이에 더 가까울 수 있다. 예를 들어, 패턴 매칭 회로부(130)와 메모리 어레이(118) 사이의 레이턴시 또는 액세스 시간은 데이터가 프로세서 또는 호스트에 제공된 경우와 같이, 메모리 어레이(118)로부터 디바이스(100)의 출력 핀들 또는 포트들(예를 들어, 외부 단자들)로 데이터를 전달하기 위한, 레이턴시 또는 액세스 시간보다 적은 것으로 예상될 수 있다.
본 개시의 실시예들에 따르면, 메모리 어레이(118)로부터 데이터는 판독 커맨드 및/또는 내부 판독 커맨드에 응답하여 패턴 매칭 회로부(130)에 제공될 수 있다. "내부 판독"은 데이터가 메모리 어레이(118)로부터 검색되지만, 데이터는 디바이스(100) 상에 남아 있음을 의미한다. 즉, 데이터는 예를 들어, 데이터 단자들(24)을 통해 메모리 외부로 송신되지 않는다. 예를 들어, 판독 비교 커맨드에 응답하여, 데이터는 메모리 어레이(118)로부터 패턴 매칭 회로부(130)로 제공될 수 있다.
본 개시의 실시예들에 따르면, 리프레시 동작 동안, 워드 라인들을 활성화하여 내부에 저장된 데이터를 리프레시하는 것 이외에, 데이터는 패턴 매칭 동작들을 위해 데이터가 패턴 매칭 회로부(130)에 제공될 수 있다. 즉, 리프레시 동작 동안, 데이터는 워드 라인들이 리프레시를 위해 활성화되면 디바이스(100)에 의해 내부적으로 판독될 수 있다. 본 개시의 실시예들에 따르면, 오류 정정 동작들 동안, ECC(134)에 제공되는 것 이외에, 데이터는 패턴 매칭 동작들을 위해 패턴 매칭 회로부(130)에 제공될 수 있다. 일부 실시예들에서, 패턴 매칭 동작들을 위한 데이터는 리프레시 동작 및 오류 정정 동작들 모두에 응답하여 패턴 매칭 회로부(130)에 제공될 수 있다. 패턴 매칭 동작들을 위한 데이터를 제공하는 방식은 커맨드 디코더(106)에 의해 제공되는 하나 이상의 패턴 매칭 커맨드들에 의해 정의될 수 있다.
일부 실시예들에서, 패턴 매칭 동작들을 위한 데이터 또는 패턴들의 소스는 커맨드 디코더(106)에 의해 제공되는 하나 이상의 패턴 매칭 커맨드들에 의해 정의될 수 있다. 일부 실시예들에서, 패턴의 소스는 IO 회로(122), 메모리 어레이(118), 및/또는 제2 메모리 어레이(도시되지 않음)를 통해 데이터 단자들(24)로부터 올 수 있다. 일부 실시예들에서, 패턴 매칭 동작들을 위한 데이터는 기록 비교 커맨드에 응답하여 IO 회로(122)를 통해 데이터 단자들(24)을 통해 수신될 수 있다. 기록 비교 동작 동안, 데이터는 데이터 단자들(24)로부터 수신되고 패턴 매칭 동작을 수행하기 위해 패턴 매칭 회로부(130)에 제공되지만, 데이터는 메모리 어레이(118)에 기록되지 않는다.
일부 실시예들에서, 모드 레지스터 커맨드들, 패턴 매칭 커맨드들, 및/또는 커맨드 디코더(106)에 의해 제공되는 다른 커맨드들은 디바이스(100)에서 외부의 메모리 제어기(도 1에 도시되지 않음, 도 3 참조)로부터 수신된 커맨드들(예를 들어, 제어 신호들)에 응답할 수 있다. 일부 실시예들에서, 데이터는 메모리 제어기로부터 수신되고 그에 제공될 수 있다.
디바이스(100)의 전력 공급 단자들에는 전력 공급 전위들 VDD1, VDD2, 및 VSS가 공급된다. 전력 공급 전위들 VDD1, VDD2, 및 VSS에는 내부 전압 생성 회로(124)에 공급된다. 내부 전압 생성 회로(124)는 전력 공급 단자들에 공급되는 전력 공급 전위들 VDD1, VDD2, 및 VSS에 기초하여 각종 내부 전위들 VPP, VOD, VARY, VPERI 등을 생성한다. 다양한 내부 전위들 및 전력 공급 전위들이 디바이스(100)의 상이한 회로들 중 임의의 것에 사용될 수 있지만, 내부 전위 VPP는 주로 로우 디코더(108)에 사용되고, 내부 전위들 VOD 및 VARY는 주로 메모리 어레이(118)에 포함된 감지 증폭기들 SAMP에 사용되며, 내부 전위 VPERI는 많은 주변 회로 블록들에 사용된다.
전력 공급 단자들에는 또한 전력 공급 전위들 VDDQ 및 VSSQ가 공급된다. 전력 공급 전위들 VDDQ 및 VSSQ는 입력/출력 회로(122)로 공급된다. 전력 공급 단자들에 공급되는 전력 공급 전위들 VDDQ 및 VSSQ는 본 개시의 일 실시예에서 전력 공급 단자들에 공급되는 전력 공급 전위들 VDD 및 VSS로서 동일한 전위들일 수 있다. 전력 공급 단자들에 공급되는 전력 공급 전위들 VDDQ 및 VSSQ는 본 개시의 다른 실시예에서 전력 공급 단자들에 공급되는 전력 공급 전위들 VDD 및 VSS로부터 상이한 전위들일 수 있다. 전력 공급 단자들에 공급되는 전력 공급 전위들 VDDQ 및 VSSQ는 입력/출력 회로(122)에 의해 생성되는 전력 공급 노이즈가 다른 회로 블록들로 전파되지 않도록 하기 위해서 입력/출력 회로(122)에 사용된다.
반도체 디바이스(100)의 컴포넌트들(예를 들어, 커맨드 디코더(106), 모드 레지스터(132), 패턴 매칭 회로부(130))은 외부 단자들(예를 들어, C/A, DQ)에 액세스하지 않고 반도체 디바이스(100)의 다른 컴포넌트들과 정보를 송신 및/또는 수신할 수 있다. 일부 실시예들에서, 컴포넌트들은 정보(예를 들어, PatMat 라인, EN_PM 라인, XADD 라인)를 송신 및/또는 수신하기 위한 전도성 트레이스들에 의해 서로 결합될 수 있다. 외부 단자들에 액세스하지 않고 반도체 디바이스(100)의 다른 컴포넌트들과 통신할 수 있는 컴포넌트들은 반도체 디바이스(100)로 간주될 수 있고(예를 들어, 반도체 디바이스(100)가 메모리 디바이스일 때 "메모리 상의(on memory) 또는 "메모리의(of the memory)") 반도체 디바이스(100)의 컴포넌트들과 통신하기 위해 반도체 디바이스(100)의 외부 단자들에 반드시 액세스해야 하는 다른 컴포넌트들 또는 디바이스들은 반도체 디바이스(100)에 오프 및/또는 외부로 간주될 수 있다(예를 들어, 반도체 디바이스(100)가 메모리 디바이스일 때 "오프 메모리").
도 2는 본 개시의 실시예들에 따른 패턴 매칭 회로부(200)의 블록도이다. 일부 실시예들에서, 패턴 매칭 회로부(200)는 도 1에 도시된 패턴 매칭 회로부(130)에 포함될 수 있다. 패턴 매칭 회로부(200)는 패턴 레지스터(202), 비교기(204), 및 결과 레지스터(206)를 포함할 수 있다.
패턴 매칭 회로부(200)는 제어 신호 EN_PM에 의해 활성화될 수 있다. 일부 실시예들에서, 제어 신호는 모드 레지스터(132)와 같은, 모드 레지스터에 의해 제공될 수 있다. 패턴 매칭 회로부(200)는 하나 이상의 패턴 매칭 커맨드들 PatMat을 수신할 수 있다. 일부 실시예들에서, 패턴 매칭 커맨드들 PatMat은 커맨드 디코더(106)와 같은, 커맨드 디코더에 의해 제공될 수 있다. 패턴 매칭 회로부(200)는 데이터를 수신할 수 있고, 이는 패턴 레지스터(202) 및/또는 비교기(204)에 제공될 수 있다. 데이터는 메모리 어레이(118)와 같은, 메모리 어레이 및/또는 IO 회로(122)와 같은 IO 회로로부터 제공될 수 있다.
패턴 레지스터(202)는 패턴 매칭 동작에 사용될 수 있는 하나 이상의 패턴을 저장할 수 있다. 일부 실시예들에서, 패턴 레지스터(202)는 다중 레지스터들(208)을 포함할 수 있다. 각각의 레지스터(208)는 하나 이상의 패턴들을 저장할 수 있다. 일부 실시예들에서, 패턴 레지스터(202)는 다목적 레지스터(MPR)를 사용하여 구현될 수 있다. 이들 실시예들에서, 패턴은 MPR 기록 커맨드를 사용하여 패턴 레지스터(202)에 기록될 수 있다. 다른 실시예들에서, 패턴은 패턴 레지스터 기록 커맨드에 응답하여 패턴 레지스터(202)에 기록될 수 있다.
비교기(204)는 패턴 레지스터(202)로부터 패턴 Pat 및 데이터를 수신할 수 있다. 비교기(204)는 데이터가 Pat을 포함하는지 여부를 결정하기 위해 패턴 매칭 동작을 수행할 수 있다. 일부 실시예들에서, 비교기(204)는 예를 들어, 패턴 레지스터(202)가 하나보다 많은 패턴을 포함할 때, 다중 패턴들 Pat에 대한 패턴 매칭 동작들을 수행할 수 있다. 다중 패턴들 상의 패턴 매칭 동작들은 순차적으로 또는 병렬로 수행될 수 있다. 일부 실시예들에서, 비교기(204)는 단일 유형의 패턴 매칭 동작을 수행하도록 하드 코딩될 수 있다. 다른 실시예들에서, 비교기(204)는 특정 유형의 패턴 매칭 동작을 수행하도록 (예를 들어, 패턴 매칭 커맨드 PatMat를 통해) 프로그래밍될 수 있다. 패턴 매칭 동작의 유형은 수행된 비교의 유형을 결정할 수 있다(예를 들어, Pat의 정확한 매칭 찾기, Pat의 특정 백분율 내에 매칭 찾기, Pat이 벡터인 경우, 벡터의 특정 거리 내에 데이터에서 벡터들 찾기). 패턴 매칭 동작의 결정에 기초하여, 비교기는 결과 Res를 생성할 수 있다. 일부 실시예들에서, Res는 Pat이 데이터에 존재하는 횟수의 카운트 값, 데이터에서 Pat의 매치의 위치의 메모리 어드레스, 플래그, 및/또는 이들의 조합을 포함할 수 있다.
일부 실시예들에서, 패턴 매칭 동작의 유형은 패턴 매칭 동작의 결과에 기초하여 패턴 매칭 회로부(200)에 의해 취해질 Res 및/또는 다른 동작들로서 생성된 결과의 유형을 정의할 수 있다. 예를 들어, 일부 실시예들에서, 패턴 매칭 회로부(200)는 데이터가 Pat과 매칭되는 메모리 어레이 또는 데이터가 Pat과 매칭되는 메모리 어레이에 미리 결정된 값을 기록한 콘텐츠들을 삭제할 수 있다.
일부 실시예들에서, 패턴 매칭 커맨드 PatMat은 패턴 매칭 동작을 위해 데이터가 검색되는 소스(예를 들어, 메모리 어레이 및/또는 IO 라인들)를 정의할 수 있다. 일부 실시예들에서, 패턴 매칭 커맨드 PatMat은 판독 동작들, 판독 비교 동작들, 오류 정정 동작들, 리프레시 동작들, 및/또는 기록 동작들을 통해 데이터가 검색되는 방식을 정의할 수 있다. 예를 들어, 패턴 매칭 커맨드 PatMat은 패턴 매칭 회로부(200)가 메모리 어레이로부터 데이터를 검색하고 패턴 매칭 동작의 일부로서 주어진 패턴에 대해 전체 어레이를 검색하도록 야기할 수 있다. 다른 예에서, 패턴 매칭 커맨드 PatMat은 패턴 매칭 회로부(200)가 판독 동작들에 응답하여 메모리 어레이로부터 수신된 데이터 및/또는 기록 동작들에 응답하여 IO 라인들로부터 수신된 데이터에 대해 패턴 매칭 동작들을 수행하도록 야기할 수 있다. 이 예에서, 메모리는 기존 커맨드들 및/또는 동작들의 이점을 취할 수 있고, 이는 패턴 매칭 동작들에 의해 이용되는 시간을 감소시킬 수 있다. 일부 실시예들에서, 패턴 매칭 커맨드 PatMat은 패턴 매칭 동작의 수행 이전에 데이터를 검색하기 위해 수행되는 다수의 동작들을 정의할 수 있다. 예를 들어, PatMat은 데이터가 리프레시 동작에 응답하여 메모리 어레이로부터 수신될 것임을 나타낼 수 있다. 그러나, 리프레시 동작은 한 번에 하나의 워드라인만을 리프레시할 수 있지만, 매칭되는 패턴은 4개의 워드라인들에 해당하는 데이터를 포함할 수 있다. 따라서, PatMat은 패턴 매칭 회로부(200)가 패턴 매칭 동작을 수행하기 이전에 4개의 리프레시 동작들을 기다릴 수 있음을 추가로 나타낼 수 있다. 일부 실시예들에서, 패턴 매칭 회로부(200), 및/또는 패턴 매칭 회로부(200)의 비교기(204)는 이전 동작들에 의해 수신된 데이터를 저장하기 위한 버퍼(212)를 포함할 수 있다.
일부 실시예들에서, 비교기(204)는 복수의 XOR 로직 회로들과 같은 비교기 로직을 포함할 수 있다. 로직 회로들의 수는 매칭될 패턴의 길이(예를 들어, 비트들의 수)에 적어도 부분적으로, 기초할 수 있다. 일부 실시예들에서, 비교기(204)는 하나 이상의 내용 주소화 기억장치(CAM) 셀들을 포함할 수 있다. 다른 로직 회로들 또는 다른 회로 컴포넌트들(예를 들어, 연산 증폭기들)은 일부 실시예들에서 비교기(204)에 포함될 수 있다.
결과 레지스터(206)는 패턴 매칭 동작에 응답하여 비교기(204)에 의해 출력된 하나 이상의 결과들 Res를 저장할 수 있다. 일부 실시예들에서, 결과 레지스터(206)는 다중 레지스터들(210)을 포함할 수 있다. 각각의 레지스터(210)는 하나 이상의 결과들을 저장할 수 있다. 일부 실시예들에서, 결과 레지스터(206)는 다목적 레지스터(MPR)를 포함할 수 있다. 이들 실시예들에서, 결과 레지스터(206)는 MPR 판독 커맨드를 사용하여 판독될 수 있다. 다른 실시예들에서, 결과는 결과 레지스터 판독 커맨드에 응답하여 결과 레지스터(206)로부터 판독될 수 있다. 일부 실시예들에서, 결과는 출력으로서 제공될 수 있다. 일부 실시예들에서, 결과 레지스터(206)는 IO 회로(122)와 같은, IO 회로에 출력을 제공할 수 있다. 일부 실시예들에서, 결과 레지스터(206)는 메모리 어레이에 출력을 제공할 수 있다. 일부 실시예들에서, 결과 레지스터(206)는 출력으로서 경보 신호와 같은, 신호를 생성할 수 있다. 경보 신호는 일부 실시예들에서 경보 핀(도 1 참조)에 제공될 수 있다.
선택적으로, 일부 실시예들에서, 비교기(204)는 결과 레지스터(206)에 추가하여 또는 그 대신에 출력을 제공할 수 있다. 이들 실시예들에서, 결과 레지스터(206)는 생략될 수 있다.
도 3은 본 개시의 실시예들에 따른 시스템(300)의 블록도이다. 시스템(300)은 컴퓨팅 디바이스(302) 및 사용자 인터페이스(304)를 포함할 수 있다. 컴퓨팅 디바이스(302)는 컴퓨터 판독가능 매체(306), 중앙 처리 장치(CPU)(316), 메모리 제어기(318), 및 메모리(322)를 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스(302)는 주문형 집적 회로(ASIC)(320)를 추가로 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스(302)는 CPU(316) 대신에 ASIC(320)을 포함할 수 있다. CPU가 도 3에 예시되어 있지만, 일반적으로 임의의 수 또는 종류의 프로세서가 사용될 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스(302)가 ASIC(320)을 포함할 때, 메모리 제어기(318)는 ASIC(320)와 통합될 수 있다. 다른 실시예들에서, 메모리 제어기(318)는 ASIC(320)으로부터 분리될 수 있다. 일부 실시예들에서, 메모리(322)는 디바이스(100) 및/또는 패턴 매칭 회로부(200)의 적어도 일부를 포함할 수 있다.
사용자 인터페이스(304)는 컴퓨팅 디바이스(302)의 출력들을 사용자에게 제공하고 사용자로부터의 입력들을 컴퓨팅 디바이스(302)로 제공할 수 있다. 일부 실시예들에서, 사용자 인터페이스(304)는 출력들을 제공하기 위한 디스플레이(예를 들어, LCD, CRT) 및/또는 스피커들을 포함할 수 있다. 일부 실시예들에서, 사용자 인터페이스(304)는 키보드, 터치 스크린, 마우스, 및/또는 트랙 패드와 같은 입력들을 제공하기 위한 사용자 제어부들을 포함할 수 있다.
컴퓨터 판독가능 매체(306)는 비일시적 컴퓨터 판독가능 매체를 포함하는, 임의의 매체를 사용하여 구현될 수 있다. 예들은 메모리, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 휘발성 또는 비휘발성 메모리, 하드 드라이브, 고체 상태 드라이브들, 또는 다른 저장소를 포함한다. 단일 컴퓨터 판독가능 매체(306)가 도 3에 도시되어 있지만, 다중 매체가 존재할 수 있고 본 명세서에 설명된 실행가능한 명령어들은 하나 이상의 컴퓨터 판독가능 매체에 제공될 수 있다. 컴퓨터 판독가능 매체는 소프트웨어 및/또는 펌웨어 컴포넌트들을 구현하는 데 사용될 수 있다. 컴퓨터 판독가능 매체(306)는 패턴 매칭 어플리케이션(308)에 대한 실행가능한 명령어들로 인코딩될 수 있다. 실행가능한 명령어들은 예를 들어 CPU(316)에 의해, 실행될 수 있다. 패턴 매칭 어플리케이션(308)은 신경망을 구현하기 위한 명령어들, 신경망을 위한 훈련 프로그램, 빅 데이터 분석 어플리케이션, 및/또는 다른 어플리케이션을 포함할 수 있다. 일부 실시예들에서, 컴퓨터 판독가능 매체(306)는 메모리 어플리케이션 프로그래밍 인터페이스(API)(312)에 대한 실행가능한 명령어들로 인코딩될 수 있다. 메모리 API(312)는 사용자(예를 들어, 다른 프로세스)가 메모리(322)의 온보드 패턴 매칭 능력들에 대한 액세스 및 제어를 허용할 수 있다. 예를 들어, 메모리 API(312)는 사용자가 패턴 매칭 어플리케이션(308)이 메모리(322)의 온보드 패턴 매칭 능력들을 이용할 것인지 또는 CPU(316) 상에서 패턴 매칭 동작들을 수행할 것인지를 아닌지 여부를 결정하도록 허용할 수 있다. 다른 예에서, 메모리 API(312)는 사용자가 메모리(322)에 의해 수행될 패턴 매칭 동작의 유형을 결정하도록 허용할 수 있다. 일부 실시예들에서, 메모리 API(312)는 패턴 매칭 어플리케이션(308) 내에 포함될 수 있다. 일부 실시예들에서, 패턴 매칭 어플리케이션(308)은 메모리(322) 및 메모리 API(312)의 온보드 패턴 매칭 능력들이 생략될 수 있는지 여부 및 이용 방법을 자동으로 결정한다. 일부 실시예들에서, 컴퓨터 판독가능 매체(306)는 드라이버(314)를 구현하기 위한 명령어들로 인코딩될 수 있다. 드라이버(314)는 컴퓨팅 디바이스(302)의 하나 이상의 컴포넌트들(예를 들어, CPU(316), 메모리 제어기(318), ASIC(320), 및/또는 메모리(322))과 상호작용하기 위한 컴퓨팅 디바이스(302)의 동작 시스템에 대한 명령어들 제공할 수 있다.
CPU(316)는 컴퓨터 판독가능 매체(306) 상에 인코딩된 명령어들을 실행할 수 있다. 예를 들어, 명령어들은 패턴 매칭 어플리케이션(308)을 구현하는 데 사용된다. 일부 실시예들에서, CPU(316)는 하나 이상의 그래픽 처리 유닛들을 포함하거나 이에 의해 대체될 수 있다. CPU(316)는 메모리 제어기(318)를 통해 메모리(322)로부터 데이터를 제공 및 수신할 수 있다. 메모리 제어기(318)는 메모리(322)로부터 데이터가 입력 및 출력되는 방법을 제어할 수 있다. 메모리 제어기(318)는 모드 레지스터 기록 커맨드들, 판독 커맨드들, 기록 커맨드들, 및/또는 패턴 매칭 동작 커맨드들과 같은, 커맨드들을 메모리(322)에 발행할 수 있다.
일부 실시예들에서, 컴퓨팅 디바이스(302)는 CPU(316)에 추가로 또는 그 대신에 ASIC(320)을 포함할 수 있다. 컴퓨팅 디바이스(302)가 ASIC(320) 및 CPU(316) 둘 다를 포함할 때, ASIC(320)은 신호들을 CPU(316) 및/또는 컴퓨터 판독가능 매체(306)에 수신 및 제공할 수 있다. 컴퓨팅 디바이스(302)가 CPU(316)를 포함하지 않을 때, ASIC(320)은 컴퓨터 판독가능 매체(306)에 의해 제공되는 명령어들에 응답하여 계산들을 수행할 수 있다. 일부 실시예들에서, ASIC(320)은 CPU(316)보다 더 적은 컴퓨팅 능력들을 가질 수 있지만, ASIC(320)은 CPU(316)보다 더 작거나 및/또는 더 적은 전력이 요구될 수 있다. 모바일 디바이스들과 같은, 일부 어플리케이션들에서, ASIC(320)의 크기 및 전력 이점들은 CPU(316)의 컴퓨팅 이점들보다 더 중요할 수 있다. ASIC(320)이 도 3에 도시되어 있지만, 다른 처리 회로부가 다른 예들에서 사용될 수 있다(예를 들어, 하나 이상의 제어기들, 마이크로컨트롤러들, 필드 프로그램가능 게이트 어레이(FPGA) 회로들).
메모리 어레이의 단일 셀은 메모리 액세스 동작 동안 액세스될 수 있지만, 메모리 어레이는 일반적으로 다중 셀들을 포함하는, 워드 라인에 의해 액세스된다. 워드 라인의 길이(예를 들어, 워드 라인의 메모리 셀들의 수)는 메모리 어레이의 아키텍처에 기초하여 달라질 수 있다. 데이터가 메모리 어레이로부터 판독되거나 그에 기록될 때, 하나 이상의 워드 라인들은 메모리 어레이에서 액세스된다. 그러나, 데이터 또는 데이터의 서브유닛들은 워드 라인들에 깔끔하게 맞지 않을 수 있다. 즉, 데이터는 워드 라인의 일부, 다중 워드 라인들, 또는 이들의 조합(예를 들어, 3.5개의 워드 라인들 또는 다중 워드 라인들의 일부들)만을 요구할 수 있다. 따라서, 워드 라인들의 몇몇 일부들은 사용되지 않을 수 있고(예를 들어, 유효한 데이터를 포함하지 않을 수 있음) 및/또는 몇몇 워드 라인들은 데이터의 상이한 서브유닛들로부터의 데이터를 포함할 수 있다. 패턴에 대한 특정 데이터를 검사하기 위해 본 명세서에 설명된 패턴 매칭 회로부가 유용할 수 있다- 그러나, 메모리(322)는 데이터가 메모리 셀들 사이에 저장되는 위치를 인식하지 못할 수 있다. 일반적으로, 메모리(322)는 메모리 어레이에 저장된 데이터의 "지식(knowledge)"을 갖지 않는다. 오히려, 메모리 제어기(318)는 데이터 및/또는 데이터의 서브유닛들이 저장되는 위치를 추적한다. 메모리 제어기(318)는 또한 데이터가 메모리 어레이로부터 저장되고 검색되는 방법을 결정한다. 즉, 메모리 제어기(318)는 일반적으로 메모리 어레이의 워드 라인들에 걸쳐 데이터 및/또는 데이터의 서브유닛들(예를 들어, 데이터 내의 데이터 스트링)을 분할하는 방법을 지정하는 커맨드들을 제공한다. 메모리 제어기(318)는 또한 워드 라인들 내의 어떤 메모리 셀들이 유효한 데이터를 포함하는지를 결정한다.
본 개시의 실시예들에 따르면, 메모리 제어기(318)는 패턴 매칭 동작들을 위해 메모리(322)에 제공될 패턴의 길이 또는 다른 속성을 결정할 수 있다. 적어도 부분적으로, 패턴에 기초하여, 메모리 제어기(318)는 데이터가 메모리(322)의 메모리 어레이로부터 제공되는 방법 및/또는 메모리(322)의 IO 라인들 상에서 메모리(322)의 비교기 회로에 제공되는 방법을 제어할 수 있다. 데이터는 제공된 데이터가 패턴의 동일한 길이이고 패턴과 동일한 유닛 또는 데이터의 서브유닛에 대응하도록 비교기 회로에 제공될 수 있다.
일반적으로, 어플리케이션이 하나 이상의 데이터 스트링을 포함할 수 있는, 패턴의 존재에 대해 메모리(322)에 저장된 데이터에서 후보 데이터 스트링들의 세트를 검색하는 것이 바람직할 수 있다. 후보 데이터 스트링들은 본 명세서에 설명된 검색 및 온 메모리 패턴 매칭을 용이하게 하기 위해 메모리 제어기(318)에 의해 제공된 커맨드들에 기초하여 메모리에 특정 방식으로 바람직하게 저장될 수 있다. 예를 들어, 후보 데이터 스트링들은 일부 예들에서 각각의 후보 데이터 스트링을 액세스하는데 단지 하나의 워드 라인이 사용되지 않는 방식으로 저장될 수 있다. 예를 들어, 패턴 매칭 어플리케이션(308)은 큰 유전자 시퀀스(genetic sequence)에서 다중 염기쌍(base pair)들의 패턴을 검색하기 위한 어플리케이션일 수 있다. 큰 유전자 시퀀스는 다중 후보 데이터 스트링들(예를 들어, 염기쌍들)을 포함한다. 다중 염기쌍들의 패턴에 대응하는 데이터는 메모리(322)의 패턴 레지스터에 제공될 수 있고 큰 유전자 시퀀스에 대응하는 데이터는 메모리(322)의 메모리 어레이에 저장될 수 있다. 메모리(322)에 의해 수행되는 패턴 매칭을 용이하게 하기 위해, 메모리 제어기(318)는 염기쌍들의 전체 수에 대응하는 데이터가 각각의 워드 라인에 저장되도록(예를 들어, 염기쌍에 대응하는 데이터가 다중 워드 라인들에 걸쳐 확산되지 않음) 큰 유전자 시퀀스에 대응하는 데이터가 메모리 어레이에 저장되는 방법을 제어할 수 있다. 대안적으로, 또는 추가로, 메모리 제어기(318)는 패턴과 동일한 길이의 염기쌍들의 세트에 대응하는 유효한 데이터가 각각의 패턴 매칭 동작에 사용되도록 하기위해 데이터가 메모리 어레이로부터 검색되고 비교기 회로에 제공되는 방법을 제어할 수 있다.
일부 실시예들에서, 메모리 제어기(318)는 패턴 매칭을 용이하게 하는 방식으로 메모리 어레이에 데이터를 저장하도록 메모리(322) 및/또는 메모리 어레이 또는 다른 소스로부터 패턴 매칭 회로부(예를 들어, 패턴 매칭 회로부(130 및/또는 200))로 제어 신호들(예를 들어, 커맨드들)을 메모리(322)에 제공함으로써 제공된 유효한 데이터를 제어할 수 있다. 예를 들어, 메모리 제어기(318)는 완전한 데이터 스트링이 전체 수의 워드 라인들에 액세스함으로써 액세스될 수 있도록 후보 데이터 스트링들이 메모리의 워드 라인들에 대해 특정 방식으로 배열되는 것을 보장할 수 있다. 후보 데이터 스트링들은 특정 패턴과의 비교를 위해 후보 데이터 스트링들의 액세스를 용이하게 하는 방식으로 배열될 수 있다. 일부 실시예들에서, 제어 신호들은 커맨드 어드레스 입력 회로 및/또는 커맨드 디코더(106)와 같은, 커맨드 디코더에 의해 수신될 수 있다.
일부 실시예들에서, 메모리 제어기(318)에 의해 제공되는 제어 신호들은 메모리(322)의 패턴 매칭 회로부가 리프레시 동작 및/또는 오류 정정 동작에 응답하여 메모리 어레이로부터 데이터를 수신하는지 여부를 결정할 수 있다.
제어 신호가 데이터가 리프레시 동작에 응답하여 제공될 수 있음을 나타낼 때, 메모리 제어기(318)는 패턴 매칭 회로부가 패턴 매칭 동작을 위한 데이터를 수신하는 워드 라인들의 수를 결정할 수 있다. 워드 라인들의 수는 매칭될 패턴의 길이 또는 패턴의 다른 속성, 데이터, 및/또는 메모리 제어기(318)가 메모리 어레이에 데이터를 저장한 방법에 기초할 수 있다. 일부 실시예들에서, 메모리 제어기는 패턴 매칭 회로부가 패턴 매칭 동작을 수행하기 전에 수행되는 리프레시 동작들의 수를 결정할 수 있다. 리프레시 동작들의 수는 각각의 리프레시 동작으로 리프레시된 워드 라인들의 수, 매칭될 패턴의 길이 또는 패턴의 다른 속성, 데이터, 및/또는 메모리 제어기(318)가 메모리 어레이에서 데이터를 저장한 방법에 기초할 수 있다.
제어 신호가 오류 정정 동작에 응답하여 데이터가 제공될 수 있음을 나타낼 때, 메모리 제어기(318)는 패턴 매칭 회로부가 패턴 매칭 동작을 위한 데이터를 수신하는 워드 라인들의 수를 결정할 수 있다. 워드 라인들의 수는 매칭될 패턴의 길이 또는 패턴의 다른 속성, 데이터, 및/또는 메모리 제어기(318)가 메모리 어레이에 데이터를 저장한 방법에 기초할 수 있다. 일부 실시예들에서, 메모리 제어기는 패턴 매칭 회로부가 패턴 매칭 동작을 수행하기 전에 수행된 오류 정정 동작의 수를 결정할 수 있다. 오류 정정 동작들의 수는 각각의 오류 정정 동작으로 리프레시된 워드 라인들의 수, 매칭될 패턴의 길이 또는 패턴의 다른 속성, 데이터, 및/또는 메모리 제어기(318)가 메모리 어레이에 데이터를 저장한 방법에 기초할 수 있다.
도 4는 본 개시의 실시예들에 따른 방법(400)의 흐름도이다. 일부 실시예들에서, 방법(400)의 적어도 일부는 디바이스(100), 패턴 매칭 회로부(200), 및/또는 시스템(300)에 의해 수행될 수 있다.
블록(402)에서, "패턴 매칭 회로부에 데이터를 제공하기 위해 메모리의 커맨드를 제공하는 것"이 수행될 수 있다. 일부 실시예들에서, 커맨드는 커맨드 디코더(106)와 같은, 커맨드 디코더에 의해 제공될 수 있다. 일부 실시예들에서, 커맨드는 메모리 제어기(318)와 같은, 메모리 제어기에 의해 제공되는 제어 신호에 응답하여 제공될 수 있다. 패턴 매칭 회로부는 패턴 매칭 회로부(130) 및/또는 패턴 매칭 회로부(200)를 포함할 수 있다. 일부 실시예들에서, 커맨드는 데이터가 리프레시 동작에 응답하여 메모리의 메모리 어레이로부터 제공되도록 야기할 수 있다. 리프레시 동작은 일부 실시예들에서, 리프레시 제어기(116)와 같은, 리프레시 제어기에 의해, 적어도 부분적으로, 수행될 수 있다. 일부 실시예들에서, 커맨드는 데이터가 오류 정정 동작에 응답하여 메모리의 메모리 어레이로부터 제공되도록 야기할 수 있다. 오류 정정 동작은 ECC(134)와 같은, 오류 정정 회로부에 의해 수행될 수 있다. 일부 실시예들에서, 정정된 데이터는 ECC에 의해 패턴 매칭 회로부에 제공될 수 있다. 즉, 패턴 매칭 회로부에 제공되는 데이터는 오류 정정 동작이 수행된 데이터일 수 있다. 일부 실시예들에서, 커맨드는 데이터가 기록 동작에 응답하여 메모리의 IO 회로로부터 패턴 매칭 회로부에 제공되도록 야기할 수 있다.
블록(404)에서, "패턴 매칭 회로에 패턴을 제공하는 것"이 수행될 수 있다. 패턴은 메모리 어레이(118)와 같은, 메모리 어레이, 메모리의 다른 메모리 어레이 및/또는 IO 회로(122)와 같은, IO 회로로부터 제공될 수 있다. 일부 실시예들에서, 블록(404)은 블록(402) 전에 수행될 수 있다. 일부 실시예들에서, 블록들(402 및 404)은 동시에 또는 부분적으로 동시에 수행될 수 있다. 블록(406)에서, "결과를 생성하기 위해 데이터 및 패턴에 대해 패턴 매칭 동작을 수행하는 것"이 수행될 수 있다. 패턴 매칭 동작은 패턴 매칭 회로부에 의해 수행될 수 있다.
도 5는 본 개시의 실시예에 따른 방법(500)의 흐름도이다. 일부 실시예들에서, 방법(500)의 적어도 일부는 디바이스(100), 패턴 매칭 회로부(200), 및/또는 시스템(300)에 의해 수행될 수 있다.
블록(502)에서, "메모리에 패턴이 제공되는 것"이 수행될 수 있다. 일부 실시예들에서, 패턴은 패턴 레지스터(202)와 같은, 메모리의 레지스터에 저장될 수 있다. 블록(504)에서, "메모리에 데이터가 제공되는 것"이 수행될 수 있다. 일부 실시예들에서, 데이터는 메모리 어레이(118)와 같은, 메모리 어레이에 저장될 수 있다. 일부 실시예들에서, 블록(504)은 블록(502) 전에 수행될 수 있다. 일부 실시예들에서, 블록들(504 및 502)은 동시에 수행될 수 있다.
블록(506)에서, "데이터가 저장되는 방법을 결정하기 위해 메모리에 제1 커맨드를 제공하는 것"이 수행될 수 있다. 일부 실시예들에서, 제1 커맨드는 메모리 어레이의 복수의 워드 라인들에 걸쳐 데이터가 저장되는 방법을 결정할 수 있다. 일부 실시예들에서, 블록(506)은 블록(502) 및/또는 블록(504) 이전에 또는 블록(502) 및/또는 블록(504)과 동시에 수행될 수 있다.
블록(508)에서, "메모리가 패턴 및 데이터에 대해 패턴 매칭 동작을 수행하도록 야기하기 위해 제2 커맨드를 메모리에 제공하는 것"이 수행될 수 있다. 일부 실시예들에서, 패턴 매칭 동작은 패턴 매칭 회로부(130 및/또는 200)와 같은, 메모리의 패턴 매칭 회로부에 의해 수행될 수 있다. 블록(510)에서, "패턴 매칭 동작의 결과를 수신하는 것"이 수행될 수 있다. 일부 실시예들에서, 데이터, 패턴 및 커맨드들은 메모리 제어기(118)와 같은, 메모리 제어기에 의해 메모리에 제공될 수 있다. 일부 실시예들에서, 메모리 제어기는 메모리로부터 결과를 수신할 수 있다.
일부 실시예에서, 방법(500)은 "데이터가 비교기 회로에 제공되는 방법을 결정하기 위해 메모리에 제3 커맨드를 제공하는 것"이 수행될 수 있는 블록(512)을 더 포함할 수 있다. 비교기 회로는 패턴 매칭 회로에 포함될 수 있고 일부 실시예에서 패턴 매칭 동작을 수행할 수 있다. 비교기 회로는 일부 실시예에서 비교기 회로(204)를 포함할 수 있다. 일부 실시예에서, 블록(512)은 블록(506) 및/또는 블록(508)과 동시에 수행될 수 있다.
일부 실시예들에서, 제3 커맨드는 데이터가 리프레시 동작에 응답하여 제공되도록 야기할 수 있다. 리프레시 동작은 리프레시 제어기(116)에 의해, 적어도 부분적으로, 수행될 수 있다. 리프레시 동작의 일부로서, 리프레시된 워드 라인들로부터 데이터가 비교기 회로(예를 들어, 증폭기들(126))에 제공될 수 있다. 일부 실시예들에서, 제3 커맨드는 비교기 회로가 패턴 매칭 동작을 수행하기 이전에 복수의 리프레시 동작들로부터 데이터를 수신하도록 야기할 수 있다. 예를 들어, 매칭될 패턴의 길이가 단일 리프레시 동작에서 리프레시되는 것보다 더 많은 워드 라인들에 걸쳐 있는 데이터가 포함된 경우. 일부 실시예들에서, 비교기 회로는 복수의 패턴 매칭 동작들로부터 데이터를 저장하기 위한 버퍼를 포함할 수 있다.
일부 실시예들에서, 제3 커맨드는 데이터가 오류 정정 동작에 응답하여 제공되도록 야기한다. 일부 실시예들에서, 오류 정정 동작은 ECC(134)와 같은, 오류 정정 회로부에 의해, 적어도 부분적으로, 수행될 수 있다. 일부 실시예들에서, 데이터는 오류 정정 동작 동안에 ECC에 제공될 때 증폭기들(126)을 통해 비교기 회로에 제공될 수 있다. 일부 실시예들에서, 데이터는 비교기 회로에 제공되기 전에 ECC에 의해 정정될 수 있다. 즉, 정정된 데이터는 ECC에 의해 비교기 회로에 제공될 수 있다. 일부 실시예들에서, 제3 커맨드는 비교기 회로가 리프레시 동작들에 대해 논의된 것과 유사한 방식으로, 패턴 매칭 동작을 수행하기 이전에 복수의 오류 정정 동작들로부터 데이터를 수신하도록 야기한다.
본 명세서에 기술된 장치들, 시스템들 및 방법들은 패턴 매칭이 메모리에 의해 수행되도록 허용할 수 있다. 메모리는 다양한 방법들에 의해 패턴 매칭을 위해 메모리 어레이로부터 데이터를 검색할 수 있으며, 그 중 일부는 데이터를 포함하는 워드 라인들을 활성화하거나 데이터를 검색하는 것을 요구하는 기존 동작들을 이용할 수 있다. 이는 일부 실시예들에서 패턴 매칭이 메모리에 의해 더 적은 커맨드들 및/또는 동작들로 수행되도록 허용할 수 있다. 이는 일부 어플리케이션들에서 메모리에 의한 시간 및/또는 전력 소비를 줄일 수 있다.
물론, 본 명세서에 설명된 예들, 실시예들 또는 프로세스들 중 임의의 하나는 하나 이상의 다른 예들, 실시예들 및/또는 프로세스들과 결합되거나 본 시스템들, 디바이스들 및 방법들에 따라 별도의 디바이스들 또는 디바이스 일부들 사이에서 분리 및/또는 수행될 수 있음이 이해되어야 한다.
마지막으로, 상기 논의는 단지 예시적인 것으로 의도되고 첨부된 청구범위들을 임의의 특정 실시예 또는 실시예들의 그룹으로 제한하는 것으로 해석되어서는 안 된다. 따라서, 본 개시의 다양한 실시예들은 특히 상세하게 설명되었지만, 또한, 다음의 청구범위에 기재된 바와 같이 본 개시의 보다 광범위하고 의도된 사상 및 범위를 벗어남이 없이 당업자에 의해 수많은 수정들 및 대안적인 실시예들이 고안될 수 있음을 이해해야 한다. 따라서, 명세서 및 도면들은 예시적인 방식으로 간주되어야 하며 첨부된 청구범위들의 범위를 제한하도록 의도되지 않는다.

Claims (27)

  1. 장치에 있어서,
    프로세서(processor)로부터 데이터를 기록하고 그에 데이터를 판독하도록 구성된 제1 메모리 어레이(memory array);
    상기 제1 메모리 어레이를 포함하는 반도체 다이(semiconductor die) 상의 비교기 회로(comparator circuit)-여기서, 상기 비교기 회로는:
    상기 메모리 어레이에 기록되거나 그로부터 판독될 상기 데이터를 수신하고,
    비트들의 스트링(string)의 패턴을 수신하고, 및
    상기 데이터와 상기 패턴을 비교하는 것을 포함하는 패턴 매칭 동작(pattern matching operation)을 수행함-; 및
    상기 제1 메모리 어레이 및 상기 비교기 회로를 포함하는 상기 반도체 다이 상의 상기 패턴 매칭 동작을 위한 커맨드들을 제공하도록 구성된 커맨드 디코더(command decoder)를 포함하는, 장치.
  2. 제1항에 있어서, 상기 제1 메모리 어레이에 대해 리프레시 동작을 수행하도록 구성된 리프레시 제어기(refresh controller)를 더 포함하고, 상기 패턴 매칭 동작에 대한 상기 커맨드들 중 적어도 하나에 적어도 부분적으로 기초하여, 상기 제1 메모리 어레이는 상기 리프레시 동작 동안에 상기 비교기 회로에 상기 제1 데이터를 제공하도록 구성되는, 장치.
  3. 제1항에 있어서, 상기 제1 데이터에 대해 오류 정정 동작(error correction operation)을 수행하도록 구성된 오류 정정 회로부(error correction circuitry)를 더 포함하고, 상기 패턴 매칭 동작에 대한 상기 커맨드들 중 적어도 하나에 적어도 부분적으로 기초하여, 상기 제1 메모리 어레이는 상기 비교기 회로에 상기 제1 데이터를 제공하도록 구성되는, 장치.
  4. 제3항에 있어서, 상기 제1 메모리 어레이는 상기 오류 정정 동작 후에 상기 제1 데이터를 상기 비교기 회로에 제공하도록 구성되는, 장치.
  5. 제1항에 있어서, 상기 패턴 매칭 동작에 대한 상기 커맨드들 중 적어도 하나는 판독 비교 커맨드(read compare command)이고, 상기 제1 데이터는 판독 동작에 의해 상기 메모리 어레이로부터 상기 비교기 회로로 제공되는, 장치.
  6. 제1항에 있어서, 제2 데이터를 저장 및 제공하도록 구성된 제2 메모리 어레이를 더 포함하고, 상기 제2 데이터는 상기 비교기 회로에 의해 수신된 상기 패턴을 포함하는, 장치.
  7. 제1항에 있어서, 상기 패턴을 저장하고 상기 패턴을 상기 비교기 회로에 제공하도록 구성된 제1 레지스터를 더 포함하는, 장치.
  8. 제7항에 있어서, 상기 패턴은 상기 제1 메모리 어레이로부터 상기 제1 레지스터로 제공되는, 장치.
  9. 제7항에 있어서, IO 회로를 더 포함하고, 상기 패턴은 상기 IO 회로로부터 상기 제1 레지스터에 제공되는, 장치.
  10. 장치에 있어서,
    반도체 다이 상에 포함된 메모리-여기서, 상기 메모리는:
    복수의 워드 라인(word line)들을 포함하는 메모리 어레이-여기서, 상기 메모리 어레이는 상기 복수의 워드 라인들 중 적어도 일부에 데이터를 저장하도록 구성되고, 상기 데이터는 복수의 후보 데이터 스트링(candidate data string)들을 포함함-; 및
    상기 데이터 및 패턴을 수신하도록 구성된 패턴 매칭 회로부를 포함하고, 상기 패턴 매칭 회로부는 커맨드에 응답하여 상기 데이터를 상기 패턴과 비교하는 것을 포함하는 패턴 매칭 동작을 수행하도록 구성되고, 상기 패턴은 하나 이상의 데이터 스트링들을 포함함 -; 및
    제어 신호들을 상기 메모리에 제공하여:
    상기 후보 데이터 스트링의 전체가 메모리 액세스 동작에 의해 검색가능하도록 상기 복수의 데이터 스트링들의 후보 데이터 스트링을 저장하고; 및
    상기 복수의 후보 데이터 스트링들 중 하나 이상의 후보 데이터 스트링들을 상기 메모리 어레이로부터 상기 패턴 매칭 회로부에 제공하도록 구성된 메모리 제어기를 포함하고, 상기 데이터가 제공되는 방법은 상기 패턴에 포함된 데이터 스트링들의 수에 적어도 부분적으로 기초할 수 있는, 장치.
  11. 제10항에 있어서, 상기 복수의 후보 데이터 스트링들 중 상기 후보 데이터 스트링은 상기 메모리 어레이의 단일 워드 라인에 저장되는, 장치.
  12. 제10항에 있어서, 상기 메모리 제어기에 의해 제공되는 상기 제어 신호들은 상기 패턴 매칭 회로부가 리프레시 동작 또는 오류 정정 동작 중 적어도 하나에 응답하여 상기 메모리 어레이로부터 상기 데이터를 수신하는지 여부를 결정하는, 장치.
  13. 제10항에 있어서, 상기 메모리는 상기 복수의 워드 라인들에 대해 리프레시 동작들을 수행하도록 구성된 리프레시 제어기를 더 포함하고, 상기 메모리 제어기에 의해 제공되는 상기 제어 신호들은 상기 패턴 매칭 회로부가 적어도 부분적으로, 상기 리프레시 동작에 응답하여 상기 데이터를 수신하는지 여부를 결정하는, 장치.
  14. 제13항에 있어서, 상기 메모리 제어기는 상기 패턴 매칭 회로부가 상기 패턴 매칭 동작을 위한 상기 데이터를 수신하는 상기 복수의 워드 라인들 중 워드 라인들의 수를 결정하고, 상기 워드 라인들의 수는 적어도 부분적으로, 상기 패턴에 포함된 데이터 스트링들의 수에 기초하는, 장치.
  15. 제13항에 있어서, 상기 메모리 제어기는 상기 패턴 매칭 회로부가 상기 패턴 매칭 동작을 수행하기 전에 수행되는 리프레시 동작들의 수를 결정하는, 장치.
  16. 제10항에 있어서, 상기 메모리는 상기 복수의 워드 라인들에 저장된 상기 데이터에 대해 오류 정정 동작들을 수행하도록 구성된 오류 정정 회로부를 더 포함하고, 상기 메모리 제어기에 의해 제공되는 상기 제어 신호들은 상기 패턴 매칭 회로부가 상기 오류 정정 동작에 적어도 부분적으로, 응답하여 상기 데이터를 수신하지 여부를 결정하는, 장치.
  17. 제16항에 있어서, 상기 메모리 제어기는 상기 패턴 매칭 회로부가 상기 패턴 매칭 동작에 대한 상기 데이터를 수신하는 상기 복수의 워드 라인들 중 워드 라인들의 수를 결정하는, 장치.
  18. 제16항에 있어서, 상기 메모리 제어기는 상기 패턴 매칭 회로부가 상기 패턴 매칭 동작을 수행하기 전에 수행되는 오류 정정 동작들의 수를 결정하는, 장치.
  19. 제10항에 있어서, 상기 메모리는 상기 메모리 제어기로부터 상기 제어 신호들을 수신하고 상기 메모리 제어기에 의해 제공되는 상기 제어 신호들에 응답하여 상기 패턴 매칭 회로부에 상기 커맨드를 발행하도록 구성된 커맨드 디코더를 더 포함하는, 장치.
  20. 제19항에 있어서, 상기 커맨드 디코더는 리프레시 제어기에 대한 리프레시 커맨드 또는 상기 메모리의 오류 정정 회로부에 대한 오류 정정 커맨드 중 적어도 하나를 발행하도록 더 구성되는, 장치.
  21. 제10항에 있어서, 상기 메모리는 제1 값이 상기 모드 레지스터에 기록될 때 상기 패턴 매칭 회로가 상기 패턴 매칭 동작들을 수행할 수 있게 하도록 구성된 모드 레지스터를 더 포함하고, 상기 제1 값은 적어도 부분적으로, 상기 메모리 제어기에 의해 제공되는 상기 제어 신호에 기초하는, 장치.
  22. 제10항에 있어서, 상기 메모리는 IO 회로를 더 포함하고, 상기 패턴 매칭 회로부는 상기 패턴 매칭 동작의 결과를 상기 IO 회로에 제공하도록 구성되고, 상기 IO 회로는 상기 결과를 상기 메모리 제어기에 제공하도록 구성되는, 장치.
  23. 방법에 있어서,
    상기 메모리 상의 패턴 매칭 회로부에 데이터를 제공하기 위해 메모리의 커맨드를 제공하는 단계-여기서, 상기 커맨드는 상기 데이터가 리프레시 동작 또는 오류 정정 동작 중 적어도 하나에 응답하여 상기 메모리의 메모리 어레이로부터 제공되도록 함-;
    상기 패턴 매칭 회로부에 패턴을 제공하는 단계; 및
    상기 패턴 매칭 회로부로, 결과를 생성하기 위해 상기 데이터 및 상기 패턴에 대한 패턴 매칭 동작을 수행하는 단계를 포함하는, 방법.
  24. 제23항에 있어서, 상기 오류 정정 동작에 응답하여 상기 패턴 매칭 회로부에 제공되는 상기 데이터는 상기 오류 정정 동작이 수행된 데이터인, 방법.
  25. 제23항에 있어서, 상기 커맨드는 상기 메모리의 커맨드 디코더에 의해 제공되고, 상기 커맨드는 메모리 제어기에 의해 제공되는 제어 신호에 응답하여 제공되는, 방법.
  26. 제23항에 있어서, 상기 패턴은 상기 메모리의 IO 회로에 의해 제공되는, 방법.
  27. 제23항에 있어서, 상기 패턴은 제2 메모리 어레이에 의해 제공되는, 방법.
KR1020227032573A 2020-02-25 2021-02-09 온 메모리 패턴 매칭을 인터페이싱하기 위한 장치 및 방법 KR20220141879A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/800,356 US11663124B2 (en) 2020-02-25 2020-02-25 Apparatuses and methods for interfacing on-memory pattern matching
US16/800,356 2020-02-25
PCT/US2021/017228 WO2021173338A1 (en) 2020-02-25 2021-02-09 Apparatuses and methods for interfacing on-memory pattern matching

Publications (1)

Publication Number Publication Date
KR20220141879A true KR20220141879A (ko) 2022-10-20

Family

ID=77366930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227032573A KR20220141879A (ko) 2020-02-25 2021-02-09 온 메모리 패턴 매칭을 인터페이싱하기 위한 장치 및 방법

Country Status (5)

Country Link
US (1) US11663124B2 (ko)
EP (1) EP4111452A4 (ko)
KR (1) KR20220141879A (ko)
CN (1) CN115428079A (ko)
WO (1) WO2021173338A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586958B2 (en) * 2020-04-06 2023-02-21 Micron Technology, Inc. Apparatuses, systems, and methods for machine learning using on-memory pattern matching
US11676052B2 (en) * 2020-04-15 2023-06-13 Micron Technology, Inc. Apparatuses and methods for inference processing on edge devices

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758148A (en) * 1989-03-10 1998-05-26 Board Of Regents, The University Of Texas System System and method for searching a data base using a content-searchable memory
JP3361825B2 (ja) 1990-08-22 2003-01-07 テキサス インスツルメンツ インコーポレイテツド メモリ・アレイ・アーキテクチャ
US6868022B2 (en) * 2003-03-28 2005-03-15 Matrix Semiconductor, Inc. Redundant memory structure using bad bit pointers
WO2005000287A1 (ja) * 2003-06-25 2005-01-06 Hisamitsu Pharmaceutical Co., Inc. 水虫治療用外用剤
US7724559B2 (en) 2006-07-14 2010-05-25 International Business Machines Corporation Self-referenced match-line sense amplifier for content addressable memories
JP2009099202A (ja) * 2007-10-17 2009-05-07 Toshiba Corp 半導体記憶装置
US7995387B2 (en) * 2009-01-30 2011-08-09 Sandisk Il Ltd. System and method to read data subject to a disturb condition
JP5584895B2 (ja) * 2009-10-08 2014-09-10 ルネサスエレクトロニクス株式会社 半導体信号処理装置
US9934856B2 (en) * 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US9720612B2 (en) * 2015-04-30 2017-08-01 Sandisk Technologies Llc Biasing schemes for storage of bits in unreliable storage locations
US9836349B2 (en) * 2015-05-29 2017-12-05 Winbond Electronics Corp. Methods and systems for detecting and correcting errors in nonvolatile memory
US9805802B2 (en) * 2015-09-14 2017-10-31 Samsung Electronics Co., Ltd. Memory device, memory module, and memory system
US10592114B2 (en) * 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory
US10372566B2 (en) * 2016-09-16 2019-08-06 Micron Technology, Inc. Storing memory array operational information in nonvolatile subarrays
US10691610B2 (en) * 2017-09-27 2020-06-23 Apple Inc. System control using sparse data
KR102606873B1 (ko) * 2018-04-30 2023-11-29 에스케이하이닉스 주식회사 리프레시 동작을 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Also Published As

Publication number Publication date
CN115428079A (zh) 2022-12-02
US11663124B2 (en) 2023-05-30
WO2021173338A1 (en) 2021-09-02
US20210263847A1 (en) 2021-08-26
EP4111452A4 (en) 2024-04-17
EP4111452A1 (en) 2023-01-04

Similar Documents

Publication Publication Date Title
US10529406B2 (en) Memory device and refresh method thereof
US9653141B2 (en) Method of operating a volatile memory device and a memory controller
US20190051344A1 (en) Apparatuses and methods for selective row refreshes
KR102116980B1 (ko) 리던던시 메모리 셀의 리프레쉬 동작을 제어하는 반도체 메모리 장치
US11829366B2 (en) Apparatuses and methods for on-memory pattern matching
TWI700585B (zh) 半導體裝置及包含該半導體裝置的記憶體系統
US11195568B1 (en) Methods and systems for controlling refresh operations of a memory device
KR102078562B1 (ko) 리프레쉬 어드레스 생성기 및 이를 포함하는 휘발성 메모리 장치
TWI828094B (zh) 記憶體控制器及包括其的記憶體系統
KR20050018046A (ko) 메모리 클럭 신호의 주파수를 선택적으로 가변시키는메모리 컨트롤러 및 이를 이용한 메모리의 데이터 독출동작 제어방법
US11573916B2 (en) Apparatuses and methods for writing data to a memory
KR20220141879A (ko) 온 메모리 패턴 매칭을 인터페이싱하기 위한 장치 및 방법
US20230186619A1 (en) Apparatuses, systems, and methods for machine learning using on-memory pattern matching
CN115516564A (zh) 用于命令/地址跟踪的设备和方法
US11727965B2 (en) Nonvolatile memory device, operating method of nonvolatile memory device, and electronic device including nonvolatile memory device
US11631448B1 (en) Memory device performing refresh operation and method of operating the same
EP4136529A1 (en) Apparatuses and methods for inference processing on edge devices