KR102409615B1 - 연상 메모리에서의 최소값-최대값 계산 방법 - Google Patents

연상 메모리에서의 최소값-최대값 계산 방법 Download PDF

Info

Publication number
KR102409615B1
KR102409615B1 KR1020180092577A KR20180092577A KR102409615B1 KR 102409615 B1 KR102409615 B1 KR 102409615B1 KR 1020180092577 A KR1020180092577 A KR 1020180092577A KR 20180092577 A KR20180092577 A KR 20180092577A KR 102409615 B1 KR102409615 B1 KR 102409615B1
Authority
KR
South Korea
Prior art keywords
sor
bit
bits
esor
extreme
Prior art date
Application number
KR1020180092577A
Other languages
English (en)
Other versions
KR20190024690A (ko
Inventor
모쉐 레이져
Original Assignee
쥐에스아이 테크놀로지 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 쥐에스아이 테크놀로지 인코포레이티드 filed Critical 쥐에스아이 테크놀로지 인코포레이티드
Publication of KR20190024690A publication Critical patent/KR20190024690A/ko
Application granted granted Critical
Publication of KR102409615B1 publication Critical patent/KR102409615B1/ko

Links

Images

Classifications

    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • G06F7/026Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Analysis (AREA)

Abstract

연상 메모리 내의 복수 개의 숫자 중에서 극단 값을 찾는 방법은, 복수 개의 숫자의 각각의 숫자에 대한 펼침 표현(SOR)을 생성하는 단계; 각각의 SOR을 연상 메모리 어레이의 열 내에 저장하는 단계; 및 극단 값을 가지는 극단 SOR(ESOR)을 생성하도록, 연상 메모리 어레이의 행에 수평 비트-단위 부울 연산을 수행하는 단계를 포함한다. 극단 값을 찾는 시스템은, 복수 개의 숫자를 저장하는 연상 메모리 어레이 - 각각의 숫자는 열 내에 저장될 수 있음 -; 복수 개의 숫자의 각각의 숫자에 대한 SOR을 생성하고 각각의 SOR을 연상 메모리 어레이의 열 내에 저장하는 펼침 표현(SOR) 생성기; 및 SOR의 비트를 저장하는 연상 메모리 어레이의 행에 수평 비트-단위 부울 연산을 사용하여 극단 값을 찾는 극단 SOR(ESOR) 파인더를 포함한다.

Description

연상 메모리에서의 최소값-최대값 계산 방법{METHOD FOR MIN-MAX COMPUTATION IN ASSOCIATIVE MEMORY}
관련 출원에 대한 상호 참조
본 출원은 2017 년 8 월 29 일 출원된 미국 가출원 제 15/688,895 호의 우선권을 주장하는데, 이 문헌은 원용에 의해 본 명세서에 통합된다.
본 발명은 일반적으로 연상 메모리에 관한 것이고, 일반적으로 특히 큰 데이터세트 내에서 극단 값을 찾는 효율적인 방법에 관한 것이다.
데이터세트 내에서 극단 값(최대값 또는 최소값)을 찾는 것은 흔한 작업이다. 2015 년 7 월 16 일에 공개되고 2018 년 1 월 2 일에 미국 특허 제 9,859,005 로 발행되며, 본 발명의 공통 양수인에 의해 출원되고 본 명세서에서 원용에 의해 통합되는 미국 특허 공개 번호 제 US 2015/0200009(발명의 명칭: "MEMORY DEVICE")는 일정한 시간 O(1) 내에 메모리 디바이스 내의 큰 데이터세트에서 극단 값을 찾는 방법을 기술한다. 계산 시간은 데이터세트 크기와 무관하게 거의 일정하다.
미국 특허 공개 번호 제 US 2015/0200009 에 규정된 종래 기술은 한 번에 데이터세트 내의 모든 아이템의 하나의 비트에 대해서 동시에 동작하고, MSB(최상위 비트)에서 시작해서 LSB(최하위 비트)에서 끝난다. 이러한 방법의 계산 시간은, 16 비트, 32 비트 등일 수 있는, 데이터세트 내의 숫자들을 나타내는 비트의 개수에 비례한다.
본 발명의 바람직한 실시예에 따르면, 연상 메모리 내의 복수 개의 숫자 중에서 극단 값을 찾는 방법이 제공된다. 이러한 방법은, 복수 개의 숫자의 각각의 숫자에 대한 펼침 표현(SOR)을 생성하는 단계; 각각의 SOR을 연상 메모리 어레이의 열 내에 저장하는 단계; 및 극단 값을 가지는 극단 SOR(ESOR)을 생성하도록, 연상 메모리 어레이의 행에 수평 비트-단위 부울 연산을 수행하는 단계를 포함한다.
더욱이, 본 발명의 바람직한 실시예에 따르면, 숫자 N의 SOR은 0의 연속 시퀀스와 후속하는 K 개의 1의 연속 시퀀스를 포함하는데, K=N+1 이다.
또한 본 발명의 바람직한 실시예에 따르면, 값 N을 가지는 숫자의 SOR은 1의 연속 시퀀스와 후속하는 K 개의 0의 연속 시퀀스를 포함하는데, K=N+1 이다.
또한, 본 발명의 바람직한 실시예에 따르면, 부울 연산은 OR 연산 및 AND 연산 중 하나이다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 숫자는 더 큰 멀티-비트-숫자의 비트 집합(bit aggregation)이다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 제 1 비트 집합은 상기 멀티-비트 숫자의 최상위 비트(most significant bit)를 포함하고, 마지막 비트 집합은 멀티-비트 숫자의 최하위 비트(least significant bit)를 포함한다.
더욱이, 본 발명의 바람직한 실시예에 따르면, 멀티-비트 숫자는 복수 개의 아이템 중 한 아이템을 나타낸다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 아이템들 각각에는 초기 후보성 표시가 할당된다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, SOR을 생성하는 것은 후보성 표시를 가지는 아이템에 대해서만 이루어진다.
또한, 본 발명의 바람직한 실시예에 따르면, 이러한 방법은, '같음' 및 '같지 않음' 중 하나인 유사성 표시를 제공하도록, ESOR을 후보성 표시를 가지는 아이템의 각각의 SOR과 비교하는 단계; 및 '같지 않음' 유사성 표시를 가지는 각각의 숫자로부터 상기 후보성 표시를 제거하는 단계를 더 포함한다.
더욱이, 본 발명의 바람직한 실시예에 따르면, 상기 더 큰 멀티-비트 숫자는 다수(multiplicity)의 비트 집합을 가지고, 이러한 방법은, 마지막 그룹 집합까지 멀티-비트 숫자의 각각의 상기 비트 집합에 대하여 상기 생성하는 단계, 저장하는 단계, 수행하는 단계, 비교하는 단계 및 제거하는 단계를 반복함으로써, 극단 숫자에만 후보성 표시를 제공하는 단계를 더 포함한다.
본 발명의 바람직한 실시예에 따르면, 극단 값을 찾는 시스템으로서, 복수 개의 숫자를 저장하는 연상 메모리 어레이 - 각각의 숫자는 열 내에 저장될 수 있음 -; 복수 개의 숫자의 각각의 숫자에 대한 SOR을 생성하고 각각의 SOR을 연상 메모리 어레이의 열 내에 저장하는 펼침 표현(SOR) 생성기; 및 SOR의 비트를 저장하는 연상 메모리 어레이의 행에 수평 비트-단위 부울 연산을 사용하여 극단 값을 찾는 극단 SOR(ESOR) 파인더를 포함하는 시스템이 제공된다.
더욱이, 본 발명의 바람직한 실시예에 따르면, 값 N을 가지는 숫자의 SOR은, 0의 연속 시퀀스와 후속하는 K 개의 1의 연속 시퀀스 또는 1의 연속 시퀀스와 후속하는 K 개의 0의 연속 시퀀스를 포함하고, K=N+1 이다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 부울 연산은 OR 연산 또는 AND 연산이다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 숫자는 더 큰 멀티-비트-숫자의 비트 집합(bit aggregation)이다.
또한, 본 발명의 바람직한 실시예에 따르면, 제 1 비트 집합은 상기 멀티-비트 숫자의 최상위 비트(most significant bit)를 포함하고, 마지막 비트 집합은 멀티-비트 숫자의 최하위 비트(least significant bit)를 포함한다.
더욱이, 본 발명의 바람직한 실시예에 따르면, 멀티-비트 숫자는 복수 개의 아이템 중 한 아이템을 나타낸다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 이러한 시스템은, SOR 각각과 동일한 열에 저장된 각각의 아이템에 대한 초기 후보성 표시를 저장하는 메모리 어레이의 행; 및 ESOR을 각각의 SOR과 비교하고, ESOR과 다른 값을 가지는 각각의 SOR로부터 후보성 표시를 제거하는 극단 파인더를 더 포함한다.
본 발명으로 여겨지는 기술 요지는 본 명세서의 결론부에서 특정하게 지적되고 명확하게 청구된다. 그러나, 그 목적, 특징, 및 장점과 함께 장치(organization) 및 작동 방법 모두로서의 본 발명은, 첨부 도면과 함께 읽을 때에 후속하는 발명을 실시하기 위한 구체적인 내용을 참조함으로써 가장 잘 이해될 수 있을 것이다:
도 1 은 본 발명의 바람직한 실시예에 따른 니블(nibble)의 펼침 표현(SOR)의 예시적인 표이다;
도 2 는 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 메모리 디바이스의 개략적인 예시도이다;
도 3 은 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 도 2 의 메모리 디바이스의 섹션의 개략적인 예시도이다;
도 4 는 본 발명의 바람직한 실시예에 따라 도 2 의 메모리 디바이스의 섹션에 저장된 데이터의 개략도이다;
도 5 는 본 발명의 바람직한 실시예에 따라서, 도 2 의 디바이스의 일부를 형성하는 극단 파인더가 어떻게 메모리 디바이스의 섹션 내의 행에서 값 "1" 의 존재를 발견하는지의 개략적인 예시도이다;
도 6 은 본 발명의 바람직한 실시예에 따라서, 도 5 의 극단 파인더가 어떻게 모든 SOR에게 ESOR을 알리는지의 개략적인 예시도이다;
도 7 은 본 발명의 바람직한 실시예에 따라서, 도 5 의 극단 파인더가 어떻게 SOR의 비트를 ESOR의 비트와 비교하는지의 개략적인 예시도이다;
도 8 은 본 발명의 바람직한 실시에 따라서, 극단 파인더가 SOR의 모든 비트가 ESOR의 비트와 같은지를 어떻게 점검하는지의 개략적인 예시도이다;
도 9 는 본 발명의 바람직한 실시예에 따라서, 도 5 의 극단 파인더가 큰 데이터세트, 에서 극단 값을 발견하는 동작을 보여주는 예시적인 흐름도이다;
도 10 은 그 최대 값이 검사되는, 예시적인 데이터세트의 아이템의 개략적인 예시도이다; 그리고
도 11 및 도 12 는 도 10 의 예시적인 데이터세트에 도 9 의 흐름도를 채용한 결과의 개략적인 예시도이다.
간결하고 명확한 설명을 위하여, 도면에 도시된 엘리먼트들이 반드시 척도에 맞게 그려진 것은 아니라는 것이 이해될 것이다. 예를 들어, 엘리먼트들 중 일부의 치수는 다른 엘리먼트에 비하여 과장되어 분명하게 표시될 수도 있다. 더 나아가, 적합하다면, 참조 숫자는 도면들에서 반복 사용되어 대응하거나 유사한 엘리먼트를 표시할 수도 있다.
후속하는 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위하여 여러 특정한 세부사항들이 진술된다. 그러나, 당업자들은 이러한 특정 세부사항들이 없어도 본 발명이 실시될 수 있다는 것을 이해할 것이다. 다른 사례들에서, 본 발명의 양태들을 불필요하게 모호하게 하지 않도록 주지의 방법, 프로시저들 및 구성요소들은 상세히 설명되지 않는다.
출원인은, 큰 데이터세트 내에서 극단 값을 찾기 위한 계산 시간이, 한 번에 여러 비트("비트 집합(bit aggregations)"이라고 불림)에 동시에 동작함으로써, 이전의 방법과 비교할 때 더욱 개선될 수 있다는 것을 알아냈다. 각각의 단계에서, 당업계에서 공지된 방법에서처럼 한 번에 하나의 비트 대신에 여러 비트들이 한 번에 검사된다. 그러므로, 계산은 비트의 개수 대신에 집합의 개수에 비례할 수 있다.
비트 집합의 크기는 구성가능한 것일 수 있다. 예를 들어, 십진 숫자 X=229 의 이진 표현은 11100101 인데, 이것은 8-비트 이진 숫자이다. 8-비트 이진 숫자는 4 의 크기를 가지는 두 개의 비트 집합(즉 니블(nibble))로 분할될 수 있다. 이러한 경우에, 숫자 X는 1110 및 0101 로 표현될 수 있다.
각각의 니블은 0 내지 15 사이인 16 개의 값 중 하나를 가질 수 있다:
0000 → 0×23 + 0×22 + 0×21 + 0×20 = 0 + 0 + 0 + 0 = 0 예 1
0101 → 0×23 + 1×22 + 0×21 + 1×20 = 0 + 4 + 0 + 1 = 5 예 2
1111 → 1×23 + 1×22 + 1×21 + 1×20 = 8 + 4 + 2 + 1 = 15 예 3
출원인은 각각의 비트 집합이, 어떤 값이 큰 데이터세트 내의 극단(최대 또는 최저)인지에 대한 빠른 판정을 제공할 수 있는 특수 유너리 코딩으로 표현될 수 있다는 것을 알아냈다. 이러한 특수 유너리 코딩(special unary coding)은 본 명세서에서 "펼침 표현(spread out representation; SOR)"이라고 불린다. 니블의 가능한 SOR의 바람직한 실시예가 이제 참조할 도 1 에 예시된다.
표(100)는 열(110)에 4-비트 집합(니블)의 가능한 값을, 그리고 열(120)에 각각의 값의 가능한 SOR을 제공한다. 한 SOR 내의 비트의 개수는 비트 집합의 가능한 값들의 개수와 같을 수 있고, 표(100)에서 SOR은 16 비트로 표현될 수 있다: X15X14X13X12X11X10X9X8X7X6X5X4X3X2X1X0(Xi = 0/1). 특정한 계산에서의 모든 SOR의 SOR 크기는 동일할 수 있다는 것이 인정될 수 있다.
본 발명의 바람직한 실시예에서, SOR의 구조는, 0의 연속 시퀀스와 후속하는 1의 연속 시퀀스로 구성되는데, 1의 연속 시퀀스는 그 사이에 0에 의해서 인터럽트되지 않고 0의 연속 시퀀스는 그 사이의 1에 의하여 인터럽트되지 않는다. 값 K는 1의 시퀀스가 시작하는 위치이고, 그 값은 비트 집합에 의해 표현된 숫자에 후속하는 숫자이다. 구체적으로 설명하면, 비트-집합의 값이 x라면, K=x+1 이다.
SOR의 구조에 의하여, 간단한 수평 부울 연산(행의 비트에 대한 연산), 예컨대 전술된 방식으로 구성된 구조를 가지는 SOR에서 최대 값을 찾기 위한 단일 OR 연산, 최소 값을 찾기 위한 단일 AND 연산 등을 사용해서 비트 집합의 최대/최소 값을 판정할 수 있게 될 수 있다는 것이 인정될 수 있다. 또한 바람직한 실시예에서, 큰 SOR은 값 1 을 가지는 비트를 더 많이 가져서 더 큰 K를 제공할 수 있고, 작은 SOR은 값 0 의 비트를 더 많이 가진다는 것이 인정될 수 있다. 예를 들어, 비트 집합 0110, 0000-0000-0111-1111(K=7)은 비트 집합 0011 - 0000-0000-0000-1111(K=4) 보다 크다. 원래의 비트 집합은 간단한 부울 연산을 사용해서 비교될 수 없다는 것이 인정될 수 있다.
앞에서 정의된 구조를 가지는 SOR을 니블로부터 생성하기 위해 사용되는
프로시저는 다음 등식에 의하여 기술된다. 각각의 수학식은 니블의 비트 Nz에 AND 및 OR 부울 연산을 수행함으로써 SOR 내의 비트를 생성하는 것을 기술한다.
X0 = 1
X1 =((N0 + N1) + N2) + N3
X2 =((N1) + N2) + N3
X3 =((N0 & N1) + N2) + N3
X4 = N2 + N3
X5 =(((N0 + N1) & N2) + N3
X6 =((N1) & N2) + N3
X7 =((N0 & N1) & N2) + N3
X8 = N3
X9 =((N0 + N1) + N2) & N3
X10 =(N1 + N2) & N3
X11 =((N0 & N1) + N2) & N3
X12 = N2 & N3
X13 =(((N0 + N1) & N2) & N3
X14 =((N1) & N2) & N3
X15 =((N0 & N1) & N2) & N3
여기서 Xy는 SOR(120)의 비트 y이고 Nz는 니블의 비트 z이다. 모든 아이템의 SOR을 생성하려면 최대 4 개의 단계가 걸릴 수 있다는 것이 인정될 수 있다. 가장 복잡한 SOR 계산은 예를 들어 앞에서 설명된 X1의 계산처럼 니블의 모든 비트를 포함할 수 있는데, 그러려면 니블의 모든 비트가 필요하다. SOR의 다른 비트를 계산하는 것은, X2의 경우에서와 같이 3 개의 단계가 걸릴 수 있는데, 두 개의 단계는 X4의 경우이고 하나의 단계는 X8의 경우이다.
이제부터 참조할 도 2 는, 극단 파인더(210) 및 연상 메모리 어레이(220)를 포함하는 메모리 디바이스(200)의 개략도이다. 극단 파인더(210)는 메모리 어레이(220), SOR 생성기(214) 및 ESOR 파인더(216)에서 발견되는 모든 극단 값의 표시를 제공할 수 있는 마커 벡터(212)를 더 포함한다. 연상 메모리 어레이(220)는 섹션(230)을 포함할 수 있다.
연상 메모리 어레이(220)는 예컨대 2012 년 8 월 7 일 발행된 미국 특허 번호 제 8,238,173 (발명의 명칭: "USING STORAGE CELLS TO PERFORM COMPUTATION"); 2015 년 5 월 14 일 공개된 미국 특허 공개 번호 제 US 2015/0131383 (발명의 명칭: "NON-VOLATILE IN-MEMORY COMPUTING DEVICE"); 2016 년 8 월 16 일에 발행된 미국 특허 번호 제 9,418,719 (발명의 명칭: "IN-MEMORY COMPUTATIONAL DEVICE") 및 2017 년 1 월 31 일 발행된 미국 특허 번호 제 9,558,812 (발명의 명칭: "SRAM MULTI-CELL OPERATIONS")에 기술된 임의의 다목적 연상 메모리 디바이스일 수 있고, 이들 문헌 모두는 본 발명의 공통 양수인에게 양도되고 본 명세서에서 원용에 의해 통합된다.
이제부터 참조할 도 3 은 연상 메모리 어레이(220)의 섹션(230)의 구조를 예시한다. 섹션(230)은 행 및 열로 배치된 연상 메모리 셀을 포함하고 및 전체 연상 메모리 어레이(220)는 복수 개의 섹션(230)을 포함한다.
극단 파인더(210)는 전술된 수학식을 사용하여 SOR(120)을 만들 수 있고, 이들을 메모리 어레이(220)에 저장할 수 있다. 극단 파인더(210)는 각각의 SOR(120)을 상이한 메모리 어레이(220)의 열 내에 저장할 수 있고, SOR(120)의 각각의 비트는 상이한 섹션(230)에 저장된다. 극단 파인더(210)는 각각의 섹션(230)의 추가적인 행을 이용하여 계산 도중에 필요한 추가적인 데이터를 저장할 수 있다.
도 4 내지 도 8 은 연상 메모리 어레이(220)의 섹션(230) 내에 저장된 데이터에 연산이 수행되는 동안에 극단 파인더(210)에 의해 사용되는 기본적인 연산을 예시한다. 각각의 연산은 본 명세서에서 설명되는 전체 방법의 일부일 수 있다. 일부 연산은 섹션의 행 내에 저장된 데이터에 수평으로 수행될 수 있고; 일부 동작은 섹션의 열에 저장된 데이터에 수직으로 수행될 수 있으며; 일부 연산은 여러 섹션의 열 내에 저장된 데이터에 수직으로 수행될 수 있다. 수평 및 수직 연산 양자 모두가 다수의 섹션에 동시에 수행될 수 있다는 것이 인정될 수 있다.
이제부터 참조할 도 4 는 연상 메모리 어레이(220)의 섹션(230)에 저장된 데이터를 예시한다. 극단 파인더(210)는 각각의 SOR의 모든 비트를 연상 메모리 어레이(220) 내의 전용 열에 저장할 수 있고, SOR의 각각의 비트는 섹션(230) 내의 행 B에 저장된다. 예를 들어, 16-비트 SOR은 16 개의 섹션의 행 B에 저장될 수 있다. 더 큰 비트 집합에 대해서는, 더 큰 SOR이 사용될 수 있다.
극단 파인더(210)는 모든 SOR의 비트 j를 섹션 j의 행 B 내에 저장할 수 있다. 열 SOR-0 에서, 극단 파인더(210)는 SOR0의 비트 j를 저장할 수 있는데 이것은 Bit-0j라고 불린다. 열 SOR-1 에서, 극단 파인더(210)는 SOR1의 비트 j를 저장할 수 있고, 이것은 Bit-1j 라고 불리는 등이 수행된다. 일반적으로, 극단 파인더(210)는 모든 SOR(230)의 모든 비트 x를 섹션 x 내에, 동일한 행 B 내에, 그리고 다른 열 SOR-y에 저장할 수 있다.
도 5 는 극단 파인더(210)가 섹션 내의 행 B에 값 "1"이 존재하는지를 발견할 수 있는지를 예시한다. 극단 파인더(210)는 수평 비트단위 OR을 각각의 섹션의 행 B 내에 저장된 모든 비트들 j 사이에서 수행할 수 있고, 비트단위 OR의 결과를 섹션의 전용 열 j에 저장할 수 있으며, 이것이 극단 SOR(ESOR)이라고 불린다. 수평 비트단위 OR은 SOR들의 비트를 저장하는 모든 섹션에 동시에 수행될 수 있다. SOR의 다른 구조를 사용할 경우에는 다른 부울 연산이 적용될 수 있다는 것이 인정될 수 있다.
섹션 j 내의 가능한 최대 값은 1 이고, SOR들 중 적어도 하나가 섹션 j 내에 값 1 을 가진다면, 섹션 j의 행 B에 대한 비트단위 OR의 결과는 1 이 될 것이다. ESOR은 적어도 하나의 SOR의 비트 j 내에 1 이 존재한다는 것을 표시한다. 이와 유사하게, 섹션 j 내의 가능한 최소값은 0 이고, SOR들 중 적어도 하나가 섹션 j 내에 값 0 을 가진다면, 섹션 j의 행 B에 대한 비트단위 AND의 결과는 0 이 될 것이다.
도 6 은 극단 파인더(210)가 ESOR을 모든 SOR에게 어떻게 알릴 수 있는지를 개략적으로 예시한다. 극단 파인더(210)는 ESOR의 비트 j의 값, 즉 ESOR-j를 섹션 j의 행 L의 모든 열에 라이팅(write)할 수 있다. ESOR의 비트 j를 저장하는 행 L이 SOR의 비트 j를 저장하는 행 B와는 다른 행이라는 것이 인정될 수 있다. 알림(advertisement)이 섹션의 모든 열 j에 동시에 수행되며, SOR의 비트를 저장하는 모든 섹션에 동시에 수행될 수 있다는 것이 인정될 수 있다.
도 7 은 극단 파인더(210)가 SOR 및 ESOR의 비트들을 어떻게 비교할 수 있는지를 개략적으로 예시한다. 극단 파인더(210)는 행 B 내에 저장된 SOR m의 각각의 비트 j인 Bit-mj와 행 L에 저장된 ESOR의 비트 j인 ESOR-j 사이에 비트단위 XNOR 연산을 수행할 수 있다. XNOR 연산의 결과는, Bit-mj를 저장하는 행 B 및 ESOR-j를 저장하는 행 L과 다른, 섹션 j의 행 XN 내에 저장될 수 있다. 비트들이 같다면, XNOR의 결과는 1 이 될 것이고, 비트들이 다르다면, XNOR의 결과는 0 이 될 것이라는 것이 인정될 수 있다. 또한, XNOR 연산이 모든 섹션에 동시에 수행될 수 있으며, 비트 Bit-mj가 ESOR-j와 같은지 또는 다른지 여부의, 각각의 SOR의 각각의 비트에 대한 표시를 제공할 수 있다는 것이 인정될 수 있다.
도 8 은 극단 파인더(210)가 SOR의 모든 비트들이 ESOR의 비트들과 같은지 여부를 어떻게 점검할 수 있는지를 개략적으로 예시한다. 모든 비트들이 같은 경우에만, 전체 SOR이 전체 ESOR과 같아진다. 이전의 단계에서, SOR의 각각의 비트는 ESOR의 관련 비트와 비교되었다. 전체 SOR이 ESOR과 같은지 여부를 판정하기 위하여, 극단 파인더(210)는 SOR의 비트들을 저장하는 모든 섹션의 XNOR 연산의 결과들 사이에 비트단위 AND를 수행할 수 있다. AND 연산의 결과는 SOR이 ESOR과 같은지 여부의 표시를 제공할 수 있다 - 비트단위 AND의 값이 0 이면, SOR은 ESOR과 다르고(즉 더 작고), 그 값이 1 이면, SOR은 ESOR과 같다.
도 9 는 극단 파인더(210)가 큰 데이터세트 내에서 극단 값을 찾기 위하여 수행할 수 있는 단계를 설명하는 흐름도(900)이다.
단계 910 에서, 극단 파인더(210)는 데이터세트 내의 모든 아이템을 비트 집합으로 분할할 수 있는데, 제 1 비트 집합은 MSB 비트를 가지고, 마지막 비트 집합은 LSB 비트를 가진다. 극단 파인더(210)는 또한 마커 벡터의 비트들을 1 로 초기화할 수 있는데, 이것은 데이터세트 내의 모든 아이템이 처음에 최대 값이 될 수 있는 후보라는 것을 표시한다.
단계 920 에서, SOR 생성기(214)는 앞에서 상세히 설명된 것처럼 각각의 아이템의 비트 집합의 SOR을 생성할 수 있고, 각각의 생성된 SOR을 메모리 어레이(220)의 열 내에 라이팅할 수 있으며, SOR의 각각의 비트는 도 4 에서 설명된 것과 같은 전용 섹션 내에 라이팅된다.
단계 930 에서, ESOR 파인더(216)는 도 5 에서 설명된 것과 같이 모든 SOR의 비트들을 저장하는 모든 B 행에 수평 비트-단위 부울 연산을 동시에 수행함으로써, 최대/최저 SOR(ESOR)을 계산할 수 있다. 부울 연산은 SOR의 비트들 각각에 대하여 동시에 계산될 수 있고, 비트단위 OR의 결과는 최대 또는 최저 SOR인 ESOR일 수 있다.
단계 940 에서, 극단 파인더(210)는 도 6 에서 설명된 것처럼 ESOR을 모든 SOR에 배포할 수 있다. 극단 파인더(210)는 ESOR j를 섹션 j의 상이한 행렬의 모든 열 내로 배포할 수 있다. ESOR은 모든 SOR의 모든 비트에게 동시에 알려질 수 있다.
단계 950 에서, 극단 파인더(210)는 도 7 설명된 것과 같은 각각의 섹션 내의 수직 XNOR을 사용하고 도 8 에서 설명된 것과 같은 섹션들 사이의 수직 AND를 사용함으로써, 각각의 SOR을 ESOR과 비교할 수 있다. 섹션들 사이의 수직 AND의 결과가 1 이면, SOR은 ESOR과 같다.
단계 960 에서, 극단 파인더(210)는, 단계 940 에서 수행된 수직 AND의 결과가 0 이어서 해당 SOR이 ESOR과 같지 않다는 것을 표시하면, 마커 벡터(212)(도 2)로부터 후보를 제거할 수 있다. 후보를 제거하기 위하여, 극단 파인더(210)는 관련된 아이템의 마커 내의 비트의 값을 0 으로 바꿀 수 있다.
단계 970 에서, 극단 파인더(210)는 처리된 비트 집합이 마지막 비트 집합이었는지를 검사할 수 있다. 마지막 집합이 아니면, 극단 파인더(210)는 단계 920 내지 960 을 다음 비트 집합에 대해서 반복할 수 있다. 마지막 비트 집합이 처리되었으면, 극단 파인더(210)는 단계 980 에서 방법을 끝내고, 모든 잔여 후보, 즉 마커 벡터 내에 있는 값 1 을 가지는 아이템은 최대 값을 가지는 아이템일 수 있다.
이제 참조할 도 10 은, 최대 값이 검색되는 단순화된 예시적인 데이터세트 내의 아이템들의 표(1000)를 제공한다. 열(1005)은 쉽게 설명하기 위하여 데이터세트의 아이템들의 증가하는 인덱스이다. 열(1010)은 데이터세트의 아이템의 십진 값을 제공한다: 6138, 2868, 64390, 64435, 50006 및 64192. 이러한 데이터세트 내의 최대 값은 값 64435 를 가지는 아이템 4 라는 것이 인정될 수 있다. 열(1020)은 각각의 아이템의 이진 표현을 제공하는데 이진 표현은 니블로 분할된다.
열(1030)은 각각의 아이템의 마커의 초기 값을 제공한다. 모든 아이템의 마커는 우선 1 로 초기화되는데, 이것은 각각의 아이템이 잠재적으로 최대 값을 가질 수 있으며 후보로서 시작된다는 것을 나타낸다. 계산이 끝날 때에는, 최대 값의 마커만이 1 을 유지할 것이고 모든 다른 값은 0 이 될 것으로 기대된다. 이러한 예에서는 최대 값을 가지는 아이템이 하나만 존재하지만, 다른 경우에는 최대 값을 가지는 여러 아이템이 존재할 수 있다. 이러한 경우에, 최고 값을 가지는 모든 아이템의 마커는 1 이 될 것이다.
지금부터 참조할 도 11 및 도 12 는 흐름도(900)(도 9)를 표(1000)(도 10)의 아이템에 채용한 결과를 제공한다. 계산의 입력 및 출력이 표들에 의해서 설명된다. 표(1100)는 니블 1 의 계산 세부내용을 제공하고, 표(1200)는 니블 2 의 계산 세부내용을 제공하며, 표(1300)는 니블 3 의 계산 세부내용을 제공하고 표(1400)는 니블 4 의 계산 세부내용을 제공한다. 모든 표의 구조는 동일하다. 열(1110)은 니블의 값을 제공하고, 열(1120)은 SOR의 값을 제공하며(도 9 의 흐름도(900)의 단계(920)); 아이템(1125, 1225, 1325 및 1425)은 각각의 니블의 ESOR의 값을 제공하며(단계(930)); 열(1140)은 분산된 ESOR의 값을 제공하고(단계(940)) 및 열(1130)은 SOR과 ESOR 사이의 비교 결과를 제공한다(단계(950). 열(1150)은 현재 니블의 계산이 시작되기 전의 마커의 값을 제공하고, 열(1160)은 현재 니블의 계산이 완료된 이후의 마커의 값을 제공한다.
제 1 니블에 대해서 계산된, 표(1100) 안에 있는 ESOR(1125)의 값이 1111-1111-1111-1111 이라는 것이 인정될 수 있다(표 내의 모든 아이템들 사이의 비트단위 OR의 결과). ESOR은 표(1100) 내의 각각의 아이템의 열(1140)로 배포된다. SOR과 ESOR 사이의 비교 결과, ESOR과 다른 3 개의 SOR인 아이템 1, 2 및 5 가 얻어지는데, 이들은 후속하여 제 2 니블에 대해서 계산이 시작되기 전에 마커 벡터로부터 제거된다.
이와 유사하게, 표(1200) 내의 제 2 니블에 대해서 계산된 ESOR(1225)의 값은, 0000-1111-1111-1111 이고, SOR과 ESOR을 비교하면 결과적으로 ESOR과 다른 하나의 SOR인 아이템 6 이 얻어지고, 이것은 제 3 니블에 대해서 계산이 시작되기 전에 마커 벡터로부터 제거된다. 표(1300) 내의 제 3 니블의 ESOR(1325)의 값은 0000-1111-1111-1111 이고, 비교 결과 마지막 니블에 대해서 계산이 시작되기 전에 마커 벡터로부터 아이템 3 이 제거된다. 표(1400) 내의 마지막 니블의 ESOR(1425)은 0000-0000-0000-1111 이고, 이것은 데이터세트 내의 최대 아이템인 것으로 보이는 아이템 4 와 같다.
데이터세트 내의 아이템의 크기는 크기 4 의 비트 집합을 사용하는 4 비트, 8 비트, 12 비트, 16 비트 등이거나 크기 5 의 비트 집합을 사용하는 5 비트, 10 비트, 15 비트, 20 비트 등일 수 있다는 것이 인정될 수 있다. SOR의 크기 및 이것을 생성하기 위한 프로시저는 비트 집합의 실제 크기에 맞게 조절될 수 있다. 전술된 Min/Max 연산 동작을 위한 계산 시간이 비트 집합의 개수에 비례할 수 있다는 것이 인정될 수 있다.
앞에서 규정된 SOR의 구조와 부울 OR을 사용하는 동일한 프로시저가, SOR을 니블로부터 직접적으로 생성하는 대신에, 15 의 값 빼기 니블의 값으로부터 SOR을 생성함으로써, 큰 데이터세트 내에서 최소 값을 찾기 위해서 채용될 수 있다는 것이 인정될 수 있다. 이러한 경우에, 마커 벡터는 데이터세트 내의 최소 아이템의 표시를 홀딩할 수 있다. 또는, 최저 값은 부울 AND 연산을 사용하여 발견될 수도 있다.
SOR의 동일한 구조를 사용하는 본 발명의 대안적인 실시예에서, 최대 값은 NOT 및 AND 연산의 조합을 사용하여 발견될 수 있다. 다음 부울 연산들이 최대값을 찾기 위하여 사용될 수 있다: 행 내의 비트의 모든 반전(NOT) 값들 사이의 AND 연산의 결과에 수행되는 NOT 연산.
대안적인 실시예에서, SOR의 구조는 1의 연속 시퀀스와 후속하는 0의 연속 시퀀스일 수 있다. 이러한 구조를 사용하면, 최대 값은 부울 AND 연산을 사용하여 발견될 수 있다.
본 발명의 다른 대안적인 예에서, SOR은 특정한 특징을 제공하는 임의의 다른 유너리(unary) 표현에 의해 표현될 수 있다. 하나의 특징은 각각의 숫자의 고유한 표현일 수 있다. 다른 특징은, 더 작은 숫자의 SOR 내에 특정한 값(예를 들어 "1")을 가지는 비트가 더 큰 숫자의 SOR 내에 동일한 값을 가지는 비트의 서브세트여서, 더 큰 숫자와 더 작은 숫자에 있는 비트들의 값에는 중첩이 있다는 것일 수 있다.
SOR의 구조는 극단 값을 찾기 위해서 필요한 부울 연산을 결정할 수 있다는 것이 인정될 수 있다. 일부 구조에서, 부울 OR을 사용하면 최대 값을 찾을 수 있고 부울 AND를 사용하면 최저 값을 찾을 수 있는 반면에, 다른 구조를 사용하면, 부울 OR이 최저 값을 찾을 수 있고 부울 AND를 사용하면 최대 값을 찾을 수 있는 등이다.
본 발명의 대안적인 실시예에서, SOR의 값은 널로 처리(nulled)될 수 있는데, 이것은 아이템이 더 이상 후보가 아니라는 것을 나타낸다.
본 발명의 바람직한 실시예에서, 상이한 섹션에 대해 이루어지는 계산은 동시에 수행될 수 있다. 또한, SOR 생성은, 모든 비트들 j 사이의 수평 비트단위 OR과 동시에 수행되어서, 개선된 계산 시간을 제공할 수도 있다.
본 발명의 대안적인 실시예에서, 극단 파인더(210)는 데이터세트의 아이템의 서브세트 내에서만 최소 또는 최대 값을 찾을 수 있다. 이러한 경우에, 흐름도(900)는 값 "1"로 마킹된 아이템들 중 일부만을 가지는 벡터를 수신할 수 있고, 그것으로부터 입력 벡터로서 최소 / 최대 값이 검색돼야 한다. 입력 벡터 내의 "1' 의 초기 값은 최소 / 최대값이 되기 위한 관련된 초기 후보를 표시할 수 있다. 비록 본 발명의 특정한 특징들이 본 명세서에서 예시되고 설명되었지만, 이제 많은 변형예, 치환예, 변경예, 및 균등물들이 당업자들에게 착안될 수 있을 것이다. 그러므로, 첨부된 청구항은 본 발명의 진정한 사상에 속하는 이러한 모든 변형예 및 변경예를 포함하는 의도를 가진다는 것이 이해되어야 한다.

Claims (18)

  1. 연상 메모리(associative memory) 어레이 내의 복수 개의 숫자 중에서 극단 값을 찾는 방법으로서,
    상기 복수 개의 숫자의 각각의 숫자에 대한 펼침 표현(spread-out representation; SOR)을 생성하는 단계;
    각각의 SOR을 상기 연상 메모리 어레이의 열 내에 저장하는 단계; 및
    상기 극단 값을 가지는 극단 SOR(extreme SOR; ESOR)을 생성하도록, 상기 연상 메모리 어레이의 행에 수평 비트-단위 부울 연산을 수행하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    숫자 N의 상기 SOR은 0의 연속 시퀀스와 후속하는 K 개의 1의 연속 시퀀스를 포함하고, K=N+1 인, 방법.
  3. 제 1 항에 있어서,
    값 N을 가지는 숫자의 SOR은 1의 연속 시퀀스와 후속하는 K 개의 0의 연속 시퀀스를 포함하고, K=N+1 인, 방법.
  4. 제 1 항에 있어서,
    상기 부울 연산은 OR 연산 및 AND 연산 중 하나인, 방법.
  5. 제 1 항에 있어서,
    상기 숫자는 멀티-비트-숫자의 비트 집합(bit aggregation)인, 방법.
  6. 제 5 항에 있어서,
    제 1 비트 집합은 상기 멀티-비트 숫자의 최상위 비트(most significant bit)를 포함하고, 마지막 비트 집합은 상기 멀티-비트 숫자의 최하위 비트(least significant bit)를 포함하는, 방법.
  7. 제 5 항에 있어서,
    상기 멀티-비트 숫자는 복수 개의 아이템 중 하나의 아이템을 나타내는, 방법.
  8. 제 7 항에 있어서,
    상기 아이템 각각에는 초기 후보성 표시(initial candidacy indication)가 할당되는, 방법.
  9. 제 8 항에 있어서,
    상기 SOR을 생성하는 단계는 후보성 표시를 가지는 아이템만을 위한 것인, 방법.
  10. 제 9 항에 있어서,
    상기 방법은,
    '같음' 및 '같지 않음' 중 하나인 유사성 표시를 제공하도록, 상기 ESOR을 후보성 표시를 가지는 아이템의 각각의 SOR과 비교하는 단계; 및
    '같지 않음' 유사성 표시를 가지는 각각의 숫자로부터 상기 후보성 표시를 제거하는 단계를 더 포함하는, 방법.
  11. 제 10 항에 있어서,
    각각의 상기 멀티-비트 숫자는 다수(multiplicity)의 비트 집합을 가지고, 상기 방법은,
    마지막 그룹 집합까지 상기 멀티-비트 숫자의 각각의 상기 비트 집합에 대하여 상기 SOR을 생성하는 단계, 각각의 SOR을 저장하는 단계, 상기 수평 비트-단위 부울 연산을 수행하는 단계, 상기 ESOR을 각각의 SOR과 비교하는 단계, 및 상기 후보성 표시를 제거하는 단계를 반복함으로써, 상기 극단 값에만 후보성 표시를 제공하는 단계를 더 포함하는, 방법.
  12. 복수 개의 숫자 중에서 극단 값을 찾는 시스템으로서,
    상기 복수 개의 숫자를 저장하는 연상 메모리 어레이 - 각각의 숫자는 열 내에 저장됨 -;
    상기 복수 개의 숫자의 각각의 숫자에 대한 SOR을 생성하고 각각의 상기 SOR을 상기 연상 메모리 어레이의 열 내에 저장하는 펼침 표현(SOR) 생성기; 및
    상기 SOR의 비트를 저장하는 상기 연상 메모리 어레이의 행에 수평 비트-단위 부울 연산을 사용하여 극단 값을 찾는 극단 SOR(ESOR) 파인더(finder)를 포함하는, 시스템.
  13. 제 12 항에 있어서,
    값 N을 가지는 숫자의 상기 SOR은, 0의 연속 시퀀스와 후속하는 K 개의 1의 연속 시퀀스 및 1의 연속 시퀀스와 후속하는 K 개의 0의 연속 시퀀스 중 하나를 포함하고, K=N+1 인, 시스템.
  14. 제 13 항에 있어서,
    상기 부울 연산은 OR 연산 및 AND 연산 중 하나인, 시스템.
  15. 제 12 항에 있어서,
    상기 숫자는 멀티-비트-숫자의 비트 집합(bit aggregation)인, 시스템.
  16. 제 15 항에 있어서,
    제 1 비트 집합은 상기 멀티-비트 숫자의 최상위 비트(most significant bit)를 포함하고, 마지막 비트 집합은 상기 멀티-비트 숫자의 최하위 비트(least significant bit)를 포함하는, 시스템.
  17. 제 15 항에 있어서,
    상기 멀티-비트 숫자는 복수 개의 아이템 중 하나의 아이템을 나타내는, 시스템.
  18. 제 17 항에 있어서,
    상기 시스템은,
    상기 SOR 각각과 동일한 열에 저장된 각각의 아이템에 대한 초기 후보성 표시를 저장하는 상기 메모리 어레이의 행; 및
    상기 ESOR을 각각의 SOR과 비교하고, 상기 ESOR과 다른 값을 가지는 각각의 SOR로부터 상기 후보성 표시를 제거하는 극단 파인더를 더 포함하는, 시스템.
KR1020180092577A 2017-08-29 2018-08-08 연상 메모리에서의 최소값-최대값 계산 방법 KR102409615B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/688,895 2017-08-29
US15/688,895 US10514914B2 (en) 2017-08-29 2017-08-29 Method for min-max computation in associative memory

Publications (2)

Publication Number Publication Date
KR20190024690A KR20190024690A (ko) 2019-03-08
KR102409615B1 true KR102409615B1 (ko) 2022-06-16

Family

ID=65437237

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180092577A KR102409615B1 (ko) 2017-08-29 2018-08-08 연상 메모리에서의 최소값-최대값 계산 방법

Country Status (3)

Country Link
US (2) US10514914B2 (ko)
KR (1) KR102409615B1 (ko)
CN (2) CN109426482B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9859005B2 (en) * 2014-01-12 2018-01-02 Gsi Technology Inc. Memory device
CN108351974A (zh) * 2016-07-17 2018-07-31 Gsi 科技公司 在恒定的处理时间内查找k个极值
US20210011910A1 (en) * 2019-07-08 2021-01-14 Gsi Technology Inc. Reference distance similarity search

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150200009A1 (en) 2014-01-12 2015-07-16 Mikamonu Group Ltd. Memory device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE9002558D0 (sv) * 1990-08-02 1990-08-02 Carlstedt Elektronik Ab Processor
AU707738B2 (en) * 1995-12-01 1999-07-15 Sand Technology Systems International Inc. Method and system for performing a boolean operation on bit strings using a maximal bit slice
DE69807944D1 (de) * 1997-12-16 2002-10-17 Ip Semiconductors As Soborg Verfahren und gerät für anschriftenanalysefunktion in einem netzwerk unter verwendung von booleanlogik und programmierbare strukturen für vollständige bestimmungsanschriftenanalyse
US8341362B2 (en) * 2008-04-02 2012-12-25 Zikbit Ltd. System, method and apparatus for memory with embedded associative section for computations
US8238173B2 (en) 2009-07-16 2012-08-07 Zikbit Ltd Using storage cells to perform computation
US10832746B2 (en) 2009-07-16 2020-11-10 Gsi Technology Inc. Non-volatile in-memory computing device
GB2485774A (en) * 2010-11-23 2012-05-30 Advanced Risc Mach Ltd Processor instruction to extract a bit field from one operand and insert it into another with an option to sign or zero extend the field
US9785434B2 (en) * 2011-09-23 2017-10-10 Qualcomm Incorporated Fast minimum and maximum searching instruction
US9443156B2 (en) * 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine
US9449675B2 (en) * 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US10153042B2 (en) * 2013-11-28 2018-12-11 Gsi Technology Inc. In-memory computational device with bit line processors
US9418719B2 (en) 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device
US9589602B2 (en) * 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
CN106796811B (zh) 2015-05-05 2019-07-30 Gsi科技公司 Sram多单元操作

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150200009A1 (en) 2014-01-12 2015-07-16 Mikamonu Group Ltd. Memory device

Also Published As

Publication number Publication date
US20190065186A1 (en) 2019-02-28
KR20190024690A (ko) 2019-03-08
US20200117452A1 (en) 2020-04-16
US10942736B2 (en) 2021-03-09
US10514914B2 (en) 2019-12-24
CN113448537B (zh) 2023-04-11
CN113448537A (zh) 2021-09-28
CN109426482A (zh) 2019-03-05
CN109426482B (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
US9111615B1 (en) RAM-based ternary content addressable memory
Garside The best sub‐set in multiple regression analysis
KR102409615B1 (ko) 연상 메모리에서의 최소값-최대값 계산 방법
CN105321564B (zh) 多维数据随机化
US9507662B2 (en) Expanded error correction codes
US11169778B2 (en) Converting floating point numbers to reduce the precision
US11275731B2 (en) Accelerated filtering, grouping and aggregation in a database system
US20220244959A1 (en) System and method for parallel combinatorial design
US20170168775A1 (en) Methods and Apparatuses for Performing Multiplication
US11182128B2 (en) Multiply-accumulate operation device, multiply-accumulate operation methods, and systems
US11631002B2 (en) Information processing device and information processing method
Hyyrö et al. Increased bit-parallelism for approximate string matching
KR102154834B1 (ko) 저전력 및 고속 연산을 위한 dram용 비트와이즈 컨볼루션 회로
CN106569906B (zh) 基于稀疏矩阵的编码写入方法及装置
KR102442943B1 (ko) 인-메모리 확률적 라운더
US20230418600A1 (en) Non-volatile memory die with latch-based multiply-accumulate components
JP4785492B2 (ja) メモリシステムおよび検索方法
RU223472U1 (ru) Устройство обработки дескрипторов и параллельного поиска кандидатов межсетевого взаимодействия
CN110728367B (zh) 用于神经网络的数据存储方法及装置
KR102371347B1 (ko) 한 세트의 아이템 하나씩 선택하기
JP2811916B2 (ja) データフアイルアクセス方式
Wang et al. Gray codes over certain run-length sequences for local rank modulation
Zhu et al. iMAT: Energy-Efficient In-Memory Acceleration for Ternary Neural Networks With Sparse Dot Product
US9405508B2 (en) Sorting with key modification
WO2023133438A1 (en) Square root calculations on an associative processing unit

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
E701 Decision to grant or registration of patent right
GRNT Written decision to grant