KR102371347B1 - 한 세트의 아이템 하나씩 선택하기 - Google Patents

한 세트의 아이템 하나씩 선택하기 Download PDF

Info

Publication number
KR102371347B1
KR102371347B1 KR1020180099357A KR20180099357A KR102371347B1 KR 102371347 B1 KR102371347 B1 KR 102371347B1 KR 1020180099357 A KR1020180099357 A KR 1020180099357A KR 20180099357 A KR20180099357 A KR 20180099357A KR 102371347 B1 KR102371347 B1 KR 102371347B1
Authority
KR
South Korea
Prior art keywords
item
value
items
delete delete
data
Prior art date
Application number
KR1020180099357A
Other languages
English (en)
Other versions
KR20190024741A (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 KR20190024741A publication Critical patent/KR20190024741A/ko
Priority to KR1020220026648A priority Critical patent/KR20220029645A/ko
Application granted granted Critical
Publication of KR102371347B1 publication Critical patent/KR102371347B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • 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
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Complex Calculations (AREA)

Abstract

연관 메모리 어레이 내의 아이템의 세트로부터 하나씩 아이템을 선택하는 방법 및 시스템은 세트의 밀도를 결정하는 것, 밀도가 희박하다면, 극단 아이템 선택(EIS) 방법을 반복적으로 수행하여 상기 세트로부터 선출된 상기 아이템 중 다음 선출된 아이템을 선택하고, 상기 세트로부터 상기 다음 선출된 아이템을 제거하여 다음 세트를 생성하는 것, 및 상기 밀도가 희박하지 않다면, 다음 인덱스 선택(NIS) 방법을 수행하여 상기 선출된 아이템의 링크된 목록을 생성하고, 상기 세트로부터 다음 선출된 아이템을 반복적으로 선택하는 것을 포함한다. 연관 메모리 어레이는 행 및 열로 배열된 복수의 연관 메모리 셀을 포함하며, 여기서 제 1 행 및 제 1 열 내의 각각의 제 1 셀은 인접한 열에서 제 2 행 내의 제 2 셀의 컨텐츠에 액세스한다.

Description

한 세트의 아이템 하나씩 선택하기{ONE BY ONE SELECTION OF ITEMS OF A SET}
관련 출원에 대한 상호 참조
본 출원은 본 명세서에 참고로 포함된 2017년 8월 30일자로 출원된 미국 특허 출원 제15/690,305호로부터 우선권을 주장한다.
기술분야
본 발명은 일반적으로 연관 계산 및 특히 연관 계산을 이용하는 데이터 마이닝 알고리즘에 관한 것이다.
애플리케이션에서는 종종 아이템의 큰 세트에서 하나씩 여러 선출된 아이템을 택하거나 검색할 필요가 있다. 선출된 아이템 세트는 다음의 방식 중 하나로 생성될 수 있다: 사용자에 의해 수동으로 선택; 알고리즘에 의해 생성; 또는 검색 또는 애플리케이션이 필요로 하는 아이템 세트를 생성하는 임의의 다른 절차의 결과.
데이터 세트에서, 세트에 속하는 아이템은 세트의 일부로 명시적으로 식별된다. 세트 내의 아이템은 차례로 검색될 수 있어, 각각의 검색 단계에서, 세트로부터 단일 아이템이 검색된다. 검색 후에, 검색된 아이템은 세트에서 제거되어 다시 검색되지 않을 수 있다. 각각의 특정 단계에서 검색할 아이템을 택하는 방법은 본 명세서에서 "아이템 선택"이라 지칭된다. 애플리케이션은 세트 내의 모든 아이템이 검색되고 세트가 비워질 때까지 검색 단계를 반복할 수 있음을 알 수 있다.
세트 내의 모든 아이템이 결국 검색되는 한, 세트로부터 아이템을 검색하는 순서에는 암묵적인 중요성이 없다고 가정한다. 순수(naive) "아이템 선택" 방법은 데이터 세트 내 내의 그 위치에 의해 아이템을 선택하는 데 사용될 수 있다. 각각의 검색 연산에서, 제 1 아이템부터 시작하여 세트에 속한 아이템이 발견될 때까지 전체 데이터 세트가 스캔될 수 있다. 일단 판독되면, 판독된 아이템에 "판독" 표시가 할당될 수 있고, 애플리케이션은 다음 검색 연산을 수행할 수 있다.
전체 데이터 세트를 스캔하는 단일 검색 연산의 복잡도는 O(N)임이 이해될 것이며, 여기서 N은 데이터 세트의 크기이고, P개의 아이템을 갖는 전체 세트를 판독하는 복잡도는 O(P*N)이다.
본 발명의 바람직한 실시예에 따르면, 아이템의 큰 데이터 세트로부터 선출된 아이템 세트로부터 하나씩 아이템을 선택하는 방법이 제공된다. 방법은 세트의 밀도가 희박한지 여부를 결정하는 단계를 포함한다. 밀도가 희박하다면, 방법은 극단 아이템 선택(extreme item select, EIS) 방법을 반복적으로 수행하여 세트로부터 선출된 아이템 중 다음 선출된 아이템을 선택하고, 세트로부터 다음 선출된 아이템을 제거하여 다음 세트를 생성하는 단계를 포함한다. 밀도가 희박하지 않다면, 방법은 다음 인덱스 선택(next index select, NIS) 방법을 수행하여 선출된 아이템의 링크된 목록을 생성하고 세트로부터 다음 선출된 아이템을 반복적으로 선택하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 데이터 세트는 연관 메모리 어레이에 저장된다.
또한, 본 발명의 바람직한 실시예에 따르면, 방법은 또한 데이터 세트와 동일한 크기를 갖는 마커 벡터를 생성하는 단계로서, 여기서 선출된 아이템의 모든 인덱스는 제 1 값을 가지고, 선출되지 않은 아이템의 모든 인덱스는 제 2 값을 갖는다.
또한, 본 발명의 바람직한 실시예에 따르면, 제 1 값은 "1"이고 제 2 값은 "0"이다.
또한, 본 발명의 바람직한 실시예에 따르면, 결정하는 단계는 마커 벡터 내의 제 1 값의 수를 카운팅하여 크기를 생성하고, 그 크기를 데이터 세트 내의 아이템의 수로 나누고, 나눈 결과를 상기 미리 정의된 값과 비교하여 밀도를 제공하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 결정하는 단계는 마커 벡터 내의 제 1 값의 수를 카운팅하여 크기를 생성하고 그 크기를 미리 정의된 값과 비교하여 밀도를 제공하는 단계를 포함한다.
본 발명의 바람직한 실시예에 따르면, 아이템의 큰 데이터 세트로부터 선출되는 택해진 아이템 세트로부터 원하는 아이템을 선택하는 방법이 제공된다. 방법은 마커 벡터 내의 각각의 마커 비트에 대해, 마커 비트로부터의 합성 값(composed value, CV)을 CV의 최상위 비트(most significant bit, MSB) 및 데이터 세트의 아이템의 인덱스로서 생성하는 단계로서, 마커 비트는 세트 내의 각각의 아이템과 연관된 제 1 값 및 세트 내에 없는 각각의 아이템과 연관된 제 2 값을 갖는, 단계; 및 원하는 아이템을 CV가 극단 값을 갖는 아이템으로 선택하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 극한 값은 최대치 또는 최소치이다.
또한, 본 발명의 바람직한 실시예에 따르면, MSB는 극한 값이 최대치일 경우 마커 비트의 값이고, MSB는 극한 값이 최소치일 경우 마커 비트의 값의 역이다.
본 발명의 바람직한 실시예에 따르면, 아이템의 큰 데이터 세트로부터 선출되는 택해진 아이템 세트로부터 한 번에 하나의 아이템을 선택하는 방법이 제공된다. 방법은 마커 벡터를 갖는 단계를 포함하고, 여기서 선출된 아이템의 모든 인덱스가 제 1 값을 갖고 선출되지 않은 아이템의 모든 인덱스가 제 2 값을 갖는 마커 벡터를 갖는다. 제 1 값을 갖는 비트에 대해, 방법은 제 1 값을 갖는 마커 벡터 내의 제 1 값을 갖는 제 1 비트로부터 다음 비트까지의 델타를 계산하는 단계, 인덱스에 델타를 추가하여 아이템의 인덱스의 링크된 목록을 생성하는 단계, 목록의 제 1 아이템을 선택하는 단계, 및 마커 비트가 제 1 값을 갖는, 링크된 목록으로부터의 다음 아이템을 반복적으로 선택하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 다음 아이템은 인덱스가 링크된 목록에서 뒤따라 나오는 아이템이고 마커 비트가 제 1 값을 갖는 것이다.
또한, 본 발명의 바람직한 실시예에 따르면, 델타는 최대 크기를 갖는다.
또한, 본 발명의 바람직한 실시예에 따르면, 링크된 목록은 또한 마커 비트가 제 2 값을 갖는 중간 아이템을 포함하고, 여기서 선택하는 것은 다음 아이템이 중간 아이템일 경우, 중간 아이템에 의해 나타내어진 다음 아이템을 선택하는 것을 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 델타를 계산하는 것은 델타 벡터를 생성하고, 델타 벡터의 모든 요소를 "0" 값으로 초기화하고, 델타 벡터에서의 모든 비트에 대해 동시에, 마커 벡터의 값이 제 2 값이면, 델타 벡터에서의 현재 비트의 값에 1을 추가하고, 델타 벡터에서의 모든 비트에 대해 동시에 마커 벡터에서의 후속 비트의 값과 마커 벡터에서의 현재 비트의 값 사이의 부울 연산을 수행함으로써 마커 벡터를 업데이트하여 제 1 값을 갖는 마커 비트를 시프팅하고, 미리 결정된 횟수로 추가 및 업데이트를 반복하는 것을 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 부울 연산은 제 1 값이 "1"이고 제 2 값이 "0"일 경우 OR 연산이고, 제 1 값이 "0"이고 제 2 값이 "1"일 경우 AND 연산이다.
본 발명의 바람직한 실시예에 따라, 연관 메모리 어레이가 제공된다. 연관 메모리 어레이는 행 및 열로 배열된 복수의 연관 메모리 셀을 포함하며, 여기서 제 1 행 및 제 1 열 내의 각각의 제 1 셀은 인접한 열에 있는 제 2 행 내의 제 2 셀의 컨텐츠에 액세스한다.
또한, 본 발명의 바람직한 실시예에 따르면, 제 1 행 및 제 2 행은 동일한 행이다.
또한, 본 발명의 바람직한 실시예에 따르면, 연관 메모리 어레이는 각각의 열에 대해, 제 1 열의 왼쪽으로부터 인접한 열 또는 제 1 열의 오른쪽에 인접한 열 중 어느 일방을 선택하는 멀티플렉서 유닛을 더 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 연관 메모리 어레이는 각각의 열에 대해, 제 1 열로부터의 판독된 컨텐츠와 제 2 열로부터 판독된 컨텐츠 사이의 부울 연산을 수행하는 로직 유닛을 더 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 연관 메모리 어레이는 부울 연산의 결과를 제 1 열 내의 셀에 저장하는 회로를 더 포함한다.
본 발명의 바람직한 실시예에 따르면, 아이템의 큰 데이터 세트로부터 선출된 아이템 세트로부터 하나씩 아이템을 선택하기 위한 시스템이 제공된다. 시스템은 아이템 선택기, 극단 아이템 선택기(EIS), 및 다음 인덱스 선택기(NIS)를 포함한다. 아이템 선택기는 세트의 밀도가 희박한지를 결정한다. EIS는 세트가 희박하다면, 세트로부터 선출된 아이템 중 다음 선출된 아이템을 반복적으로 선택하고, 다음 아이템을 세트로부터 제거하여 다음 세트를 생성한다. NIS는 세트가 희박하지 않다면, 선출된 아이템의 링크된 목록을 생성하고, 세트로부터 다음 선출된 아이템을 반복적으로 선택한다.
또한, 본 발명의 바람직한 실시예에 따르면, 시스템은 또한 데이터 세트를 저장하는 연관 메모리 어레이를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 시스템은 또한 선출된 아이템의 모든 인덱스는 제 1 값으로 마킹되고, 선출되지 않은 아이템의 인덱스는 제 2 값으로 마킹되는 데이터 세트와 동일한 크기를 갖는 마커 벡터를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 제 1 값은 "1"이고 제 2 값은 "0"이다.
본 발명의 바람직한 실시예에 따르면, 아이템의 큰 데이터 세트로부터 선출되는 택해진 아이템 세트로부터 원하는 아이템을 선택하기 위한 시스템이 제공된다. 시스템은 연관 메모리 어레이 및 EIS를 포함한다. 연관 메모리는 복수의 열을 포함하고, 각각의 열은 합성 값(CV)을 저장하며, 여기서 아이템의 데이터 세트의 각각의 아이템과 연관된 마커 비트는 CV 각각의 최상위 비트(MSB)이고, 아이템의 데이터 세트의 각각의 아이템과 연관된 인덱스는 CV 각각의 다른 비트를 제공한다. EIS는 극단 값을 갖는 CV와 연관된 아이템을 선택한다.
또한, 본 발명의 바람직한 실시예에 따르면, MSB는 극한 값이 최대치일 경우 마커 비트의 값이고, MSB는 극한 값이 최소치일 경우 마커 비트의 값의 역이다.
본 발명의 바람직한 실시예에 따르면, 아이템의 큰 데이터 세트로부터 선출되는 택해진 아이템 세트로부터 한 번에 하나의 아이템을 선택하기 위한 시스템이 제공된다. 시스템은 연관 메모리 어레이 및 NIS를 포함한다. 연관 메모리 어레이는 복수의 열을 포함하며, 각각의 열은 마커 벡터로부터의 비트를 저장한다. NIS는 처음에, 제 1 값을 갖는 마커 벡터에서 제 1 값을 갖는 제 1 비트로부터 다음 비트까지의 델타를 계산하고, 델타를 인덱스에 추가하여 마킹된 아이템의 인덱스의 링크된 목록을 생성하고, 후속하여 링크된 목록의 제 1 아이템을 선택하고, 인덱스가 링크된 목록 내의 다음 아이템 인 아이템을 반복적으로 선택한다.
본 발명으로 간주되는 주제는 본 명세서의 결론 부분에서 특히 지적되고 명백하게 청구된다. 그러나, 본 발명은 그 목적, 특징, 및 이점과 함께 구성 및 동작 방법 모두에 있어서, 첨부 도면과 함께 읽을 시에 다음의 상세한 설명을 참조함으로써 가장 잘 이해될 수 있으며, 여기서:
도 1은 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 아이템 선택 시스템의 개략도이다;
도 2a 및 도 2b는 본 발명의 바람직한 실시예에 따라 구성되고 동작하는, 도 1의 시스템의 일부를 형성하는 연관 메모리 어레이의 섹션의 개략도이다;
도 3은 본 발명의 바람직한 실시예에 따른 연관 메모리 어레이 구성 요소에 저장된 데이터의 개략도이다;
도 4는 본 발명의 바람직한 실시예에 따른, 도 1의 시스템에 의해 사용되는 방법을 설명하는 상태 머신이다;
도 5는 본 발명의 바람직한 실시예에 따른, 도 1의 시스템에 저장되고 극단 아이템 선택기에 의해 사용되는 예시적인 데이터의 개략도이다;
도 6은 본 발명의 바람직한 실시예에 따른, 도 1의 시스템에 저장되고 다음 아이템 선택기에 의해 사용되는 예시적인 데이터의 개략도이다;
도 7은 본 발명의 바람직한 실시예에 따른, 링크된 목록을 구축하기 위해 도 6의 다음 아이템 선택기에 의해 수행되는 단계를 도시하는 흐름도이다;
도 8 및 도 9는 본 발명의 바람직한 실시예에 따른, 세트의 아이템들 사이의 델타를 생성하기 위해 도 7의 플로우에 의해 생성되고 조작된 데이터의 개략도이다;
도 10은 본 발명의 바람직한 실시예에 따른, 도 7의 플로우에 의해 생성된 최종 링크된 목록의 개략도이다; 그리고
도 11은 본 발명의 바람직한 실시예에 따라 다음 아이템 선택기에 의해 구현되는 아이템을 가져 오는 플로우이다.
설명의 단순성 및 명확성을 위해, 도면에 도시된 요소는 반드시 일정한 비율로 그려진 것은 아니라는 것이 이해될 것이다. 예를 들어, 요소 중 일부의 치수는 명확성을 위해 다른 요소에 비해 과장될 수 있다. 또한, 적절한 것으로 고려되는 경우, 대응하는 또는 유사한 요소를 나타내기 위해 참조 부호가 도면들 사이에서 반복될 수 있다.
다음의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 제시된다. 그러나, 본 발명은 이들 특정 세부 사항없이 실시될 수 있음이 본 기술분야의 통상의 기술자에 의해 이해될 것이다. 다른 예에서, 공지된 방법, 절차, 및 구성 요소는 본 발명을 모호하게 하지 않도록 상세하게 설명되지 않았다.
출원인은 복잡도가 데이터 세트 크기에 비례하기 때문에, 제 1 아이템부터 시작하여 세트 내의 각각의 아이템에 걸쳐 다시 전체 데이터 세트를 스캔하여 아이템을 선택하는 것은 효율적이지 않음을 깨달았다. 데이터 세트가 커질수록 아이템을 가져 오거나 택하거나 선택하는 평균 시간은 증가될 것이고, 응답 시간이 악화될 수 있다.
출원인은 연관 메모리 장치가 큰 데이터 세트를 저장하는 데 사용될 수 있고, 데이터 세트의 크기에 상관없이 일정한 계산 복잡도 O(l)로 "아이템 선택" 방법을 수행할 수 있는 효율적인 메모리 내 시스템을 제공할 수 있음을 또한 깨달았다.
이러한 일정한 복잡도를 제공할 수 있는 메모리 장치는 2012년 8월 7일에 발행된 미국 특허 제8,238,173호(발명의 명칭 "USING STORAGE CELLS TO PERFORM COMPUTATION"); 2015년 5월 14일에 공개된 미국 특허 공개 제 US 2015/0131383호(발명의 명칭 "NON-VOLATILE IN-MEMORY COMPUTING DEVICE"); 2015년 7월 16일에 공개된 미국 특허 공개 제2015/0200009호(발명의 명칭 "MEMORY DEVICE") - 2018년 1월 2일에 미국 특허 제9,859,005호로 발행됨 -; 2016년 8월 16일에 발행된 미국 특허 제9,418,719호(발명의 명칭 "IN-MEMORY COMPUTATIONAL DEVICE"); 및 2017년 1월 31일에 발행된 미국 특허 제9,558,812호(발명의 명칭 "SRAM MULTI-CELL OPERATIONS")에 기재되어 있으며, 이들 모두는 본 발명의 공통 양수인에게 양도되고 참조로서 본 명세서에 포함된다.
이체 참조되는 도 1은 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 아이템 선택 시스템(100)을 개략적으로 도시한다. 아이템 선택 시스템(100)은 아이템 선택기(110) 및 데이터 세트 및 임의의 관련된 정보를 저장할 수 있는 연관 메모리 어레이(120)를 포함한다.
아이템 선택기(110)는 이하에서 설명되는 선택 방법 중 하나에 따라 세트로부터 아이템을 선택할 수 있다. 아이템 선택기(110)는 이하에서 상세히 설명되는, 발견되고 선택된(found and selected, FS) 벡터(112), 세트에서 가장 높은/낮은 인덱스를 갖는 아이템을 선택하는 "극단 아이템 선택기"(EIS)(114), 및 아이템의 링크된 목록에서 다음 아이템을 선택하는 "다음 인덱스 선택기"(NIS)(116)를 더 포함한다.
아이템 선택기(110)는 FS(112)에 선택된 아이템의 표시를 추가할 수 있으며, FS(112)는 선택된 아이템을 가져 오거나 택하는 데 사용될 수 있다. 아이템 선택기(110)는 아이템을 가져 온 후에 FS(112)로부터 표시를 제거할 수 있다. 각각의 가져 오기 연산에서, 단일 표시가 FS 벡터(112)에 존재한다는 것을 알 수 있다. 아이템 선택기(110)는 그것이 가져온 후에 세트로부터 아이템을 더 제거할 수 있다.
연관 메모리 어레이(120)는 본 발명의 바람직한 실시예에 따라 구성되고 동작하며, 이제 참조되는 도 2a 및 도 2b에 상세히 도시된 다수의 섹션(122)을 포함하는 메모리 장치일 수 있다. 섹션(122)은 메모리 유닛(230)의 행(210) 및 열(220)에 배열될 수 있으며, 메모리 유닛 중 3개의 열은 LJ, J, 및 RJ로 라벨링된다. 각각의 메모리 유닛(230)은 그 자신의 데이터(232)를 저장할 수 있고, 각각의 측면에서 인접한 메모리 유닛에 저장된 데이터(232)에 액세스할 수 있다. MU-J는 파선 화살표(241)로 도시된 바와 같이 메모리 유닛(230)에서 그 왼쪽에 저장된 데이터(232), MU-LJ를 판독할 수 있거나, 파선 화살표(242)로 도시된 바와 같이 메모리 유닛(230)에에서 그 오른쪽에 저장된 데이터(232), MU-RJ를 판독할 수 있다.
도 2b는 본 발명의 바람직한 실시예에 따라 구성되고 동작되는 (도 2a의) 섹션(122) 의 열(J)과 연관된 회로(200)를 개략적으로 도시한다. 회로(200)는 메모리 유닛(MU-J)이 인접한 메모리 유닛(MU-RJ 및 MU-LJ)에 액세스하고, 임의적으로 그 안에 저장된 데이터(232)와 MU-J의 데이터(232) 사이의 부울 연산을 수행하는 것을 가능하게 할 수 있다.
회로(200)는 2개의 요소: 멀티플렉서(mux)(260) 및 로직 유닛(280) 및 와이어를 포함한다. 회로(200)의 와이어는 열(J)의 메모리 유닛(230)과 회로(200)의 요소 사이의 연결을 제공한다. 와이어(250-J)는 열(J)의 메모리 유닛(230)과 로직(280) 사이의 연결을 제공할 수 있다. 와이어(250-LJ)는 열(LJ)의 메모리 유닛(230)과 mux(260) 사이의 연결을 제공할 수 있다. 와이어(250-LJ)는 열(RJ)의 메모리 유닛(230)과 mux(260) 사이의 연결을 제공할 수 있다. 열(LJ, J, RJ)과 회로(200) 내의 요소 사이의 와이어(250-LJ, 250-J, 250-RJ)는 그 열의 임의의 메모리 유닛(230)에 저장된 데이터(232)를 판독할 수 있음을 알 수 있다. 추가적으로 또는 대안적으로, 와이어(250-LJ, 250-J, 및 250-RJ)는 각각 열(LJ, J, RJ)에 있는 여러 메모리 유닛(230) 셀에 저장된 데이터(232) 사이에 수행된 부울 연산의 결과를 제공할 수 있다.
와이어(270)는 mux(260)와 로직(280) 사이의 연결을 제공할 수 있고, 와이어(290)는 로직(280)과 MU-J 사이의 연결을 제공할 수 있다. Mux(260)는 MU-LJ로부터 또는 MU-RJ로부터 데이터(232)를 판독하도록 선택할 수 있다. 로직(280)은 MU-J로부터 데이터(232)를 판독할 수 있고 mux(260)로부터 데이터를 수신할 수 있다. 로직(280)은 MU-J로부터 판독된 데이터(232)와 mux(260)로부터 수신된 데이터 사이에서 부울 연산을 수행할 수 있다. 로직(280)은 결과를 MU-J와 같은 열(J)의 메모리 유닛(230)에 기입할 수 있다.
회로(200)를 사용하여, 메모리 유닛(MU-J)은 자신의 저장된 데이터를 인접한 메모리 유닛의 데이터로 대체할 수 있다는 것을 알 수 있다. 메모리 유닛(MU-J)은 대안적으로 자신의 저장된 데이터(232)와 인접한 메모리 유닛으로부터의 데이터 사이의 부울 연산을 수행할 수 있고, 자신의 데이터를 실행된 부울 연산의 결과로 대체할 수 있다.
유사한 회로가 (도 1의) 연관 메모리 어레이(120)의 (도 2a) 각각의 섹션(122)의 각각의 열과 연관될 수 있다는 것을 알 수 있다.
이제 참조되는 도 3은 데이터 및 그것이 연관 메모리 어레이(120)에 저장되는 방식을 도시한다. 연관 메모리 어레이(120)는 데이터 세트(310), 각각의 아이템과 관련된 고유 값을 갖는 인덱스(320), 및 마커 벡터(330)를 저장할 수 있다. 데이터 세트(310)의 각각의 아이템은 여러 개의 행에 걸친 전용 열(220)에 저장될 수 있다. 특정 아이템과 관련된 인덱스는 특정 아이템과 동일한 열(220)에 저장될 수 있다. 인덱스는 메모리 섹션(122)의 여러 행에 저장된 벡터(320)를 형성할 수 있다. 섹션(122)의 행(210)(도 2a)에 저장된 마커 벡터(330)의 표시는 특정 아이템의 동일한 열에 저장될 수 있고, 열에 저장된 아이템이 세트의 일부인지 여부를 나타낼 수 있다. 본 발명의 일 실시예에서, 마커 벡터(330)의 셀 내의 값 1은 열에 저장된 아이템이 세트에 있음을 나타낼 수 있다(따라서, 마커 벡터(330)의 셀 내의 값 0은 열 저장된 아이템이 세트에 있지 않음을 나타낼 수 있다).
도 3에 도시된 바와 같이, 실제 저장 및 대부분의 계산은 열에서 수직으로 행해진다. 논리적 연산은 모든 열(220)에 대해 병렬로, 즉 데이터 세트에 저장된 모든 아이템과 관련된 데이터에 대해 동시에 수행된다는 것을 알 수 있다.
도 3은 연관 메모리 어레이(120)에 저장된 예시적인 데이터 세트(310)를 제공한다. 데이터 세트(310)는 데이터 아이템: 데이터-0, 데이터-1 ... 데이터-n을 저장한다. 이 예에서, 전체 데이터 세트 중에서, 마커 벡터(330)에서 값 1을 갖는 3개의 아이템이 선출된 세트에 있고, 이 예에서, 데이터 아이템(데이터-1, 데이터-2, 및 데이터-x)이 선출되어 판독되어야 함을 알 수 있다.
아이템 선택기(110)는 임의의 적절한 "아이템 선택" 방법을 사용할 수 있다. 전술한 바와 같이, EIS(114)는 세트에서 가장 높은/가장 낮은 인덱스를 갖는 아이템을 선택할 수 있다. 그리고, NIS(116)는 세트 내의 아이템의 링크된 목록이 구축되고 사전에 액세스 가능하다면, 목록 내의 제 1 아이템에서 시작하여, 아이템의 링크된 목록에서 다음 아이템을 선택할 수 있다. EIS(114) 및 NIS(116) 양자 모두가 이하에서 상세하게 설명된다.
일 실시예에서, 아이템 선택기(110)는 마커 벡터(330)의 밀도에 따라 방법을 사용하기로 택할 수 있다. 이제 참조되는 도 4에 도시된 바와 같이, 아이템 선택기(110)는 마커 벡터(330)의 밀도를 검사할 수 있다(단계(410)). 검사는 마커 벡터(330) 내의 마커의 수를 카운팅하고 결과를 전체 데이터 세트 내의 아이템의 수로 나눔으로써 행해질 수 있다. 비율이 미리 정의된 값(예컨대, 5%, 10%, 15% 등)보다 작다면, 마커 벡터(330)는 희박한 것으로 간주될 수 있고, 그렇지 않다면 조밀한 것으로 간주될 수 있다. 대안적으로, 밀도는 세트 내의 아이템의 수를 미리 정의된 값과 비교함으로써 결정될 수 있고, 세트 내의 아이템의 수가 미리 정의된 값보다 작다면, 마커 벡터(330)는 희박한 것으로 간주될 수 있다.
마커의 밀도는 임의의 다른 방식으로 평가될 수 있음을 알 수 있다. 마커 벡터(330)가 단계(420))에 나타낸 바와 같이 희박할 경우, 아이템 선택기(110)는 EIS(114)를 사용할 수 있고, 반면에 마커 벡터(330)가 단계(430))에 나타낸 바와 같이 조밀할 경우, 아이템 선택기(110)는 NIS(116)를 사용할 수 있다.
아이템 선택기(110)는 마커 벡터(330)의 밀도 이외의 고려 사항에 따라 EIS(114) 또는 NIS(116)를 선택할 수 있다는 것을 또한 알 수 있다. 아이템 선택기(110)는 오직 EIS(114)만, 오직 NIS(116)만, 그리고 EIS(114)와 NIS(116)의 임의의 혼합을 사용할 수 있다.
EIS(114)는 데이터 세트에 저장된 데이터 아이템과 연관된 인덱스 및 데이터 아이템과 연관된 마커(양자 모두 동일한 열에 저장됨)를 데이터 아이템과 연관된 하나의 합성 값(CV)으로서 고려할 수 있으며, 여기서 마커 비트는 합성 값의 최상위 비트(MSB)이고, 인덱스는 나머지 비트를 제공한다. CV를 고려하면, 이러한 방식으로, MSB에 1을 갖는 이진수가 MSB에 0을 갖는 이진수보다 크므로, 마크 벡터(330)에서 "1"로 마킹된 선출된 아이템은 "0"으로 마킹된 선출되지 않은 아이템보다 큰 값을 가질 것이고, 각각의 아이템이 고유한 인덱스를 가지고, 따라서 CV가 고유하고, 단일 극단 CV가 있을 것이기 때문에, 단일 아이템이 결국 택해질 것이 보장된다.
EIS(114)는 또한 마커 비트(NOT 마커)의 인덱스 및 마커 비트의 역(NOT-마커)을 CV의 MSB로 고려하고, 세트에서 가장 낮은 인덱스를 발견할 수 있음을 알 수 있다. CV를 고려하면, 이러한 방식으로, 마커 벡터(330)에서 "1"로 마킹된 선출된 아이템은 CV의 MSB로 0(NOT 1)을 가져 MSB에 1(NOT 0)을 갖는 선출되지 않은 아이템보다 작은 값을 갖는 것이 보장된다.
EIS(114)는 임의의 검색 방법을 이용하여 CV들 사이의 최대 또는 최소 값을 발견할 수 있다. 참조로 포함된 미국 특허 제9,859,005호는 크기에 상관없이 일정한 계산 복잡도로 데이터 세트에서 최대 값을 발견하는 방법을 설명할 수 있고, EIS(114)에 의해 사용될 수 있음을 알 수 있다.
이제 참조되는 도 5는 시스템(100)에 저장된 예시적인 데이터 및 EIS(114) 방법에 의한 그 사용을 도시한다. 시스템(100)에 저장된 상이한 데이터 아이템은 여러 개의 수평 벡터: 실제 데이터를 저장하는 데이터(510); 저장된 아이템의 인덱스를 저장하는 인덱스(520); 및 선출된 아이템 세트를 저장하는 마커 벡터(530)에 의해 제시된다. 아이템 선택기(110)에 의해 사용된 추가 정보는 특정 가져 오기 요청에서 아이템 선택기(110)에 의해 선택된 아이템의 표시를 갖는 CV 벡터(540) 및 FS 벡터(112)이다. CV(540)는 아이템 선택 시스템(100)에 실제로 저장되지 않을 수 있고 명확성을 위해도 5에 도시되어 있음을 알 수 있다. 명확성을 위해, 벡터의 위치 x에 저장된 값은 본 명세서에서는 Vector[x]로 표현된다.
도 5의 예에서, 마커 벡터(530)는 Maker[2], Maker[4], Maker[7], Maker[8], Maker[10], 및 Maker[14]에 표시를 포함시켜, 인덱스가 각각 4, 7, 8, 10, 및 14인 아이템이 선출된 아이템의 세트에 있음을 나타낸다. 이들 인덱스에 위치된 데이터 아이템은 각각 데이터-2, 데이터-4, 데이터-7, 데이터-8, 데이터-10, 및 데이터-14인 것을 알 수 있다. CV(540)는 마커 벡터(530)의 비트를 마커에 의해 생성된 값의 MSB 및 데이터 아이템의 인덱스로서 참조함으로써 생성될 수 있다. CV(540)에서 가장 큰 값은 예상되는 바와 같이, 아이템 데이터-2, 데이터-4, 데이터-7, 데이터-8, 데이터-10, 및 데이터-14와 연관된 18, 20, 23, 24, 26, 30이다.
미국 특허 제9,859,005호에 설명된 방법을 사용하여, 아이템 선택기(110)는 CV(540)에서 가장 큰 수를 발견할 수 있다. 데이터 아이템(데이터-14)은 CV(540)에서 가장 큰 값인 30과 연관된다는 것을 알 수 있을 것이다. 아이템 선택기(110)는 도시된 바와 같이 FS(112)에서 FS[14]의 값을 1로 설정하고, 그 다음에 FS[14]와 연관된 아이템을 판독할 수 있다.
아이템을 판독하고/가져 온 후에, 아이템 선택기(110)는 비트가 관련된 판독된 데이터 아이템과 연관된 Maker[14]를 제로로 하여, 세트로부터 판독된 아이템을 근본적으로 제거할 수 있다. 마커 비트를 제로로 한 후에, CV 14]는 재산출될 수 있고, FS[14]는 제로로 될 수 있다. 원래 값은 열(220A)에 의해 나타내어지고, 수정된 값은 열(220B)에 의해 나타내어진다. 아이템 선택기(110)는 이제 EIS(114)의 다른 연산을 할 준비가 될 수 있다.
가장 큰 값을 발견하고 마커 벡터(530)에서 엔트리를 널링하는 이들 단계는 마커 벡터(530)에 마킹된 오브젝트가 더 이상 존재하지 않을 때까지, 즉 세트가 비게 될 때까지 반복됨을 알 수 있다.
이미 전술한 바와 같이, 세트 내의 아이템 수가 많을 경우, 링크된 목록이 한 번 구축되기 때문에, NIS(116)가 더 효율적일 수 있고, 한 번 구축되면, 모든 관련 아이템은 (최대 또는 최소 검색 연산 대신에) 직접적으로 액세스될 수 있다.
NIS(116)는 마커들 사이의 "델타"를 계산함으로써 마킹된 아이템의 인덱스의 링크된 목록을 생성할 수 있다. 델타는 "1"의 값을 갖는 각각의 2개의 연속 셀들 사이에서 "0"의 값을 갖는 마커 벡터 내의 셀의 수이다. 각각의 계산된 델타는 현재 선출된 아이템의 인덱스에 추가되어 다음 선출된 아이템의 인덱스를 얻을 수 있다.
이제 참조되는 도 6은 시스템(100)에 저장된 예시적인 데이터 및 NIS(116)에 의한 그 사용을 도시한다. 시스템(100)에 저장된 상이한 데이터 아이템은 여러 개의 수평 벡터:저장된 아이템의 인덱스를 포함하는 인덱스(610); 실제 데이터를 포함하는 데이터(620); 및 선출된 아이템 세트를 포함하는 마커 벡터(630)에 의해 제시된다. NIS(116)는 추가 정보: 중간 계산에 사용되는 임시 벡터인 Temp(635); 델타 벡터(640); 아이템 선택기(110)에 의해 현재 선택된 하나의 아이템의 표시를 갖는 FS 벡터(112) 및 목록(650)을 사용할 수 있다.
도 6의 예에서, 마커 벡터(630)는 Maker[3], Maker[5], Maker[10], Maker[19], Maker[20], Maker[23], Maker[25], 및 Maker[27]에 표시를 포함하며, 이는 인덱스가 각각 Index[3], Index[5], Index[10], Index[19], Index[20], Index[23], Index[25] ,및 Index[27]의 값, 즉 데이터-3, 데이터-5, 데이터-10, 데이터-19, 데이터-20, 데이터-23, 데이터-25, 및 데이터-27인 아이템이 선출된 아이템의 세트 내에 있고, 링크된 목록(650)이 이들 인덱스를 포함해야 함을 나타낸다.
NIS(116)는 먼저 마커 벡터(630)에서 마커들 사이의 델타를 동시에 계산할 수 있는데, 여기서 델타는 마커 벡터(630)에서 각각의 2개의 연속적인 마커들 사이의 제로의 수이다. 링크된 목록 내의 제 1 아이템은 제 1 델타의 값일 수 있다. 예에서, 제 1 마커 비트는 인덱스가 3 인 아이템과 연관되어 있으므로, 목록(650)에서의 제 1 값(즉 인덱스 0에 위치된 값)은 3이다(List[0] = 3). 목록(650) 내의 다음 아이템은 현재 마킹된 아이템의 인덱스에(다음 마커에 대한) 델타를 추가하고 현재 마킹된 아이템에 의해 차지된 공간인 1을 더함으로써 계산될 수 있다. 목록(650) 내의 아이템의 값을 계산하는 공식은 식 1에 정의되어 있다.
List[x] = Index[x] + Delta[x+1] + 1 식 1
예에서, 목록(650) 내의 다음 아이템은 List[3]이다. List[3]에 저장하기 위한 값은 이 예에서 1인 델타(640)로부터의 관련 값을 추가하고, Delta[3+1], 다른 1을 추가하여 계산된다, 즉 List[3] = 3 + 1 + 1 = 5이다. 화살표(651)는 목록(650) 내의 제 1 아이템이 가리키는 열을 시각적으로 가리킨다. 목록(650) 내의 다음 아이템은 이전 아이템이 가리키는 위치, 즉 List[3]에 저장된다. 화살표(652)는 List[3]이 가리키는 아이템을 시각적으로 가리키고, 화살표(653)는 목록 내의 다음 아이템을 시각적으로 가리킨다. 목록(650) 내의 마지막 아이템의 값은 링크된 목록의 외부를 가리킬 수 있기 때문에 무효일 수 있음을 알 수 있다. 예에서, 그리고 화살표(654)에 의해 도시된 바와 같이, 마커(630)에 설정된 마지막 비트는 Maker[27]이고, 목록 외부에 있는 29를 "가리킨다". 링크된 목록을 구축하고 이를 사용하기 위한 상세한 메커니즘은 아래에 설명되어 있다.
이제 도 7, 도 8, 및 도 9가 참조된다. 도 7은 링크된 목록 구축하기 위해 NIS(116)에 의해 수행되는 단계를 설명하는 흐름도(700)이다. 도 8 및 도 9는 플로우(700)의 단계를 수행하는 동안 델타(640) 및 목록(650)의 데이터를 도시한다. 단계(710)에서, NIS(116)는 델타(640) 및 목록(650)을 생성 할 수 있고, 이들을 0으로 초기화할 수 있다. 또한, NIS(116)는 Temp(635)를 생성하여, 나중에 사용하기 위해 마커(630)의 원래 값을 건드리지 않은 채로 유지하면서 계산 중에 사용되고 조작될 마커(630)의 복사본을 저장할 수 있다.
도 8은 도 7의 단계(710)에서 인덱스(610), 마커(630), Temp(635), 델타(640), 및 목록(650)에 저장된 값의 예를 도시한다. 도 7로 돌아가면, 단계(720)는 단계(730)의 계산을 K회 반복할 수 있는 루프이다. K는 고정된 수, 마크의 수로 나뉜 데이터 세트의 크기, 마크의 수로 나뉜 데이터 세트의 크기 곱하기 2와 같은 임의의 경험적 방식(heuristic), 또는 임의의 다른 경험적 방식으로 정의될 수 있는 특정한 미리 정의된 값이다.
단계(730)는 델타가 전체 벡터에서 어떻게 동시에 계산되는지를 설명한다. 델타(640)의 각각의 위치 i에서의 Delta[i] 값(i = 0 .. N, N은 데이터 세트의 크기임)은 임시 벡터 내의 동일한 위치, 즉 Temp[i]에 "0"이 있는 한 증가한다. 각각의 반복에서, Temp 벡터(635)의 각각의 셀 i의 값은 식 2에서 정의된 바와 같이, 셀 i의 값과 벡터에서 다음 셀인 셀 i + 1의 값의 부울 OR의 결과로서 산출될 수 있다.
Temp[i] = Temp[i] OR Temp[i +1] 식 2
Temp(635)의 엔트리에 대한 부울 OR 연산의 영향은 근본적으로 값 "1"을 갖는 엔트리를 최대 K배까지 왼쪽으로 복사하는 것임을 알 수 있다. 값 1만이 왼쪽으로 복사되고, 한편 0의 값은 복사되지 않음을 알 수 있다. Temp(635) 내의 엔트리의 값이 "0"인 한, 델타(640)의 값은 증가된다, 즉 각각의 반복에서, 델타 벡터(640) 내의 각각의 셀의 값 Delta[i]는 식 3에서 정의된 바와 같이, Delta[i] 더하기 Temp(635) 내의 각각의 셀에 저장된 값 Temp[i]의 역으로 산출될 수 있다.
Delta[i] = Delta[i] + NOT(Temp[i]) 식 3
그 결과, 반복을 통해, 각각의 Delta[i]는 Temp[i]가 1이 될 때까지 1씩 증가될 것이다.
이제 참조되는 도 9는 여러 번의 반복 후에 델타(640) 및 Temp(635)의 값을 도시한다. Temp1은 제 1 반복 후에 Temp(635)의 값을 도시하고, Temp2는 제 2 반복 후에 Temp(635)의 값을 도시하고, Tempk는 마지막(K번째) 반복 후에 Temp(635)의 값을 도시하며, 여기서 Temp(635)의 각각의 셀의 값은 식 2를 사용하여 산출된다. Temp(635)의 마지막 셀의 값은 마지막 셀 이후에 셀이 없기 때문에 변경되지 않는다는 것을 알 수 있다. Temp(635)의 셀의 값은 0에서 1로 변경될 수 있지만, 반대로 1에서 0으로 변경될 수는 없음에 유의한다. 마지막 반복 후에, Deltak[0]과 (마커(630)에서) 가장 가까운 설정된 마커 사이의 거리는 3이고, Deltak[1]과 가장 가까운 마커 사이의 거리는 2이고, Deltak[2]와 가장 가까운 마커 사이의 거리가 1이고, Deltak[3]은 마커의 실제 위치이므로 가장 가까운 마커까지의 거리가 0임을 알 수 있다.
델타1은 제 1 반복 후에 델타(640)의 값을 나타내고, 델타2는 다음 반복 후에 델타(640)의 값을 나타내고, 델타k는 마지막(K번째) 반복 후에 델타(640)의 값을 나타내며, 여기서 델타(640) 내의 각각의 셀의 값은 식 3을 사용하여 계산된다. 셀의 값은 증가되고, 각각의 i에 대한 과거의 반복에서 Temp(635)에서 마주치는 제로의 수를 나타내며, 결국 한 아이템과 다음의 마킹된 아이템 사이의 제로의 수를 나타냄에 유의한다.
도 7로 돌아가서, 단계(740)는 단계(730)의 최종 반복 후에 목록(650)의 산출을 설명한다. 목록(650)는 델타(640) 및 인덱스(610)에 저장된 델타로부터 생성될 수 있다. 목록(650) 내의 제 1 아이템은 인덱스 0을 갖는 데이터 세트 내의 제 1 아이템과 연관될 수 있는 제 1 델타의 값일 수 있다. 목록(650)의 모든 아이템은 제 1 아이템을 제외하고, 전술한 식 1에서 정의된 바와 같이, 델타 및 다음 아이템을 "가리키는" 아이템의 인덱스의 함수로서 산출될 수 있다.
이제 참조되는 도 10은 도시된 바와 같이 Temp(635) 및 델타(640)에 저장된 값을 사용하여 산출되는 목록(650)의 값을 도시한다. 목록(650) 내의 제 1 아이템은 제 1 마킹된 아이템을 가리킨다, 즉 List[0] = 3인 것을 알 수 있다. 목록(650)의 다음 아이템은 List[3]이며, 이는 5를 가리킨다. 목록(650)의 엔트리는 화살표(655)로 가리켜지고, 목록의 다른 엔트리는 NIS(116)에 의해 사용되지 않는 의미없는 값을 갖는다.
반복 횟수인 K는 실제 마커 벡터 내의 마커들 사이의 실제 델타에 대한 임의의 연결 없이 선택된다는 점에 유의해야 한다. 따라서, K보다 큰 델타가 있을 수 있다. 이 경우, 큰 델타는 K번의 반복만으로는 계산될 수 없기 때문에, 목록(650)에 나열되지 않을 것이다. 대신에, 목록(650)는 마킹되지 않은 아이템을 가리키는 중간 포인터인 List[x]를 포함할 수 있다, 즉 마커[x]의 값은 0일 수 있다. 그럼에도 불구하고, List[x]는 결국에는 마킹된 엔트리와 연관될 수 있는 목록(650) 내의 다른 엔트리를 가리킬 수 있다.
목록(650)가 준비되면, 아이템을 판독하는 데 사용될 수 있다. NIS(116)에 의해 구현되는 아이템 가져 오기 플로우는 이제 참조되는 도 11에 설명되어 있다. 플로우(1100)는 판독될 제 1 아이템이 목록의 제 1 아이템에 위치된 인덱스, 즉 index = List[0]를 갖는 1일 수 있는 단계(1110)을 설명한다. 단계(1130)는 마커가 설정되면, 즉 Marker[index] == 1이면, (도 1의) NIS(116)는 Data[index]를 가져 올 수 있음을 나타내고, 단계 1140에서, NIS(116)는 목록 내의 현재 위치로부터 가져 오기 위해 다음 아이템의 인덱스, 즉 index = List[index]를 판독할 수 있다. 단계(1145)는 인덱스가 유효한지, 즉 그 값이 세트의 크기인 N보다 작은지를 검사한다. 인덱스가 세트보다 크면, 플로우는 단계(1150)에서 종료된다.
플로우(700) 및 플로우(110)에서 도시된 단계는 제한하려는 의도가 아니며, 플로우 양자 모두는 더 많거나 더 적은 단계 또는 상이한 단계 시퀀스 또는 이들의 임의의 조합으로 실시될 수 있음을 본 기술분야의 통상의 기술자는 알 수 있다.
아이템 선택 시스템(100)은 데이터베이스로부터 선출된 아이템을 가져 오기 위한 계산 시간을 감소시킬 수 있음을 알 수 있다. 계산 단계는 벡터 Temp(635) 및 벡터 델타(640)의 모든 셀에 대해 동시에 수행될 수 있다. 연관 메모리 장치의 기능, 즉 모든 열에 대한 동시 부울 연산 및 동일한 행 내의 인접한 셀에 저장된 데이터에 대한 동시 액세스는 두 아이템 선택의 방법 모두에 있어서 벡터 크기에 의존하지 않는 계산 복잡도를 제공할 수 있다. 크기 P의 세트에 대해, EIS(114)의 계산 복잡도는 O(P)이고, NIS(116)의 계산 복잡도는 O(K)이다.
본 발명의 특정 특징이 본 명세서에 도시되고 기술되었지만, 많은 수정, 대체, 변경, 및 균등물이 이제 본 기술분야의 통상의 기술자에게 일어날 것이다. 따라서, 첨부된 청구범위는 본 발명의 진정한 사상 내에 있는 그러한 모든 수정 및 변경을 포함하도록 의도된 것으로 이해되어야 한다.

Claims (28)

  1. 아이템의 큰 데이터 세트로부터 선출되는 이전에 택해진 아이템의 세트로부터 원하는 아이템을 선택하기 위한 방법에 있어서, 아이템의 데이터 세트는 연관 메모리 어레이에 저장되는 것이고, 상기 방법은:
    상기 데이터 세트의 각각의 아이템에 대해, 인덱스 및 그와 연관된 마커 비트를 갖는 단계로서, 상기 마커 비트는 상기 아이템이 상기 이전에 택해진 아이템의 세트 내에 있는 경우 제 1 값을 갖고 상기 아이템이 상기 이전에 택해진 아이템의 세트 내에 있지 않은 경우 제 2 값을 갖는, 단계;
    상기 각각의 아이템에 대해, 상기 마커 비트 및 상기 아이템과 연관된 상기 인덱스를 포함하는 연관된 합성 값(composed value, CV)을 생성하는 단계로서, 상기 생성하는 것은 상기 마커 비트를 상기 CV의 최상위 비트(most significant bit, MSB)로서 배치하는 것을 포함하는, 단계;
    아이템의 CV가 상기 데이터 세트 내의 다른 아이템들과 연관된 나머지 CV들의 값들에 비해 최대 또는 최소 값을 갖는 아이템으로서 상기 원하는 아이템을 선택하는 단계
    를 포함하는, 아이템의 큰 데이터 세트로부터 선출되는 이전에 택해진 아이템의 세트로부터 원하는 아이템을 선택하기 위한 방법.
  2. 제1항에 있어서,
    상기 MSB는 선택될 상기 CV가 최대치일 경우 상기 마커 비트의 값이고, 상기 MSB는 선택될 상기 CV가 최소치일 경우 상기 마커 비트의 값의 역인, 아이템의 큰 데이터 세트로부터 선출되는 이전에 택해진 아이템의 세트로부터 원하는 아이템을 선택하기 위한 방법.
  3. 아이템의 큰 데이터 세트로부터 선출되는 이전에 택해진 아이템의 세트로부터 원하는 아이템을 선택하기 위한 시스템에 있어서,
    복수의 열을 포함하는 연관 메모리 어레이로서, 적어도 하나의 열은 데이터 세트의 아이템과 연관된 합성 값(composed value, CV)을 저장하기 위한 것이고, 각각의 상기 CV는 상기 아이템의 인덱스 및 상기 아이템과 연관된 마커 비트를 포함하고, 상기 마커 비트는 상기 아이템이 상기 이전에 택해진 아이템의 세트 내에 있는 경우 제 1 값을 갖고 상기 아이템이 상기 이전에 택해진 아이템의 세트 내에 있지 않은 경우 제 2 값을 가지며, 상기 마커 비트는 상기 CV의 최상위 비트(most significant bit, MSB)인, 연관 메모리 어레이; 및
    상기 데이터 세트 내의 다른 아이템들과 연관된 나머지 CV들의 값들에 비해 최대 또는 최소 값을 갖는 CV와 연관된 아이템을 선택하기 위한 극단 아이템 선택기(extreme item selector, EIS)
    를 포함하는, 아이템의 큰 데이터 세트로부터 선출되는 이전에 택해진 아이템의 세트로부터 원하는 아이템을 선택하기 위한 시스템.
  4. 제3항에 있어서,
    상기 MSB는 선택될 상기 CV가 최대치일 경우 상기 마커 비트의 값이고, 상기 MSB는 선택될 상기 CV가 최소치일 경우 상기 마커 비트의 값의 역인, 아이템의 큰 데이터 세트로부터 선출되는 이전에 택해진 아이템의 세트로부터 원하는 아이템을 선택하기 위한 시스템.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020180099357A 2017-08-30 2018-08-24 한 세트의 아이템 하나씩 선택하기 KR102371347B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220026648A KR20220029645A (ko) 2017-08-30 2022-03-02 한 세트의 아이템 하나씩 선택하기

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/690,305 2017-08-30
US15/690,305 US10956432B2 (en) 2017-08-30 2017-08-30 One by one selection of items of a set

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220026648A Division KR20220029645A (ko) 2017-08-30 2022-03-02 한 세트의 아이템 하나씩 선택하기

Publications (2)

Publication Number Publication Date
KR20190024741A KR20190024741A (ko) 2019-03-08
KR102371347B1 true KR102371347B1 (ko) 2022-03-04

Family

ID=65437340

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020180099357A KR102371347B1 (ko) 2017-08-30 2018-08-24 한 세트의 아이템 하나씩 선택하기
KR1020220026648A KR20220029645A (ko) 2017-08-30 2022-03-02 한 세트의 아이템 하나씩 선택하기

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220026648A KR20220029645A (ko) 2017-08-30 2022-03-02 한 세트의 아이템 하나씩 선택하기

Country Status (3)

Country Link
US (3) US10956432B2 (ko)
KR (2) KR102371347B1 (ko)
CN (1) CN110020003A (ko)

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3851313A (en) * 1973-02-21 1974-11-26 Texas Instruments Inc Memory cell for sequentially addressed memory array
US5295101A (en) * 1992-01-31 1994-03-15 Texas Instruments Incorporated Array block level redundancy with steering logic
US5452244A (en) * 1994-08-10 1995-09-19 Cirrus Logic, Inc. Electronic memory and methods for making and using the same
US5506810A (en) * 1994-08-16 1996-04-09 Cirrus Logic, Inc. Dual bank memory and systems using the same
US6278992B1 (en) * 1997-03-19 2001-08-21 John Andrew Curtis Search engine using indexing method for storing and retrieving data
JP2001216136A (ja) * 2000-02-01 2001-08-10 Toshiba Corp 加算回路およびプロセッサ
JP4329238B2 (ja) * 2000-07-05 2009-09-09 ソニー株式会社 データストリーム生成装置とその方法、可変長符号化データストリーム生成装置とその方法、カメラシステム
JP3661594B2 (ja) * 2001-02-07 2005-06-15 ソニー株式会社 データストリーム生成装置とその方法、可変長符号化データストリーム生成装置とその方法、および、カメラシステム
CA2451208A1 (en) * 2001-06-21 2003-01-03 Paul P. Vagnozzi Database indexing method and apparatus
EP1524810B1 (en) * 2003-10-13 2008-07-30 STMicroelectronics S.r.l. Optical bus transmission method
JP4872282B2 (ja) * 2005-09-08 2012-02-08 セイコーエプソン株式会社 画像表示システム,画像表示方法,画像表示プログラム,記録媒体,データ処理装置,画像表示装置
US7499961B2 (en) * 2006-01-12 2009-03-03 Sun Microsystems, Inc. Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
WO2007113964A1 (ja) * 2006-03-31 2007-10-11 Kyushu Institute Of Technology 多段論理回路の再構成装置及び再構成方法、論理回路修正装置、並びに再構成可能な多段論理回路
US7822944B2 (en) * 2006-05-26 2010-10-26 Symbol Technologies, Inc. Data format for efficient encoding and access of multiple data items in RFID tags
US8321485B2 (en) * 2006-11-08 2012-11-27 Hitachi, Ltd. Device and method for constructing inverted indexes
CN102057359A (zh) * 2009-04-10 2011-05-11 松下电器产业株式会社 高速缓冲存储器装置、高速缓冲存储器控制方法、程序及集成电路
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
WO2011015199A1 (en) * 2009-08-07 2011-02-10 Aalborg Universitet Compression of bitmaps and values
US8966184B2 (en) * 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9047069B2 (en) * 2011-04-12 2015-06-02 Texas Instruments Incorporated Computer implemented method of electing K extreme entries from a list using separate section comparisons
US9251197B2 (en) * 2011-06-27 2016-02-02 Jethrodata Ltd. System, method and data structure for fast loading, storing and access to huge data sets in real time
US9418719B2 (en) 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device
US9859005B2 (en) * 2014-01-12 2018-01-02 Gsi Technology Inc. Memory device
US9965482B2 (en) * 2014-06-24 2018-05-08 Infinidat Ltd. Hash based read and write operations in a storage system
US10248681B2 (en) * 2014-07-08 2019-04-02 Sap Se Faster access for compressed time series data: the block index
WO2016178172A1 (en) 2015-05-05 2016-11-10 Gsi Technology Inc. Sram multi-cell operations
US10565198B2 (en) * 2015-06-23 2020-02-18 Microsoft Technology Licensing, Llc Bit vector search index using shards
KR20170034126A (ko) * 2015-09-18 2017-03-28 에스케이하이닉스 주식회사 고전압 스위치 회로 및 이를 포함하는 반도체 메모리 장치
US20210056085A1 (en) * 2019-08-19 2021-02-25 Gsi Technology Inc. Deduplication of data via associative similarity search

Also Published As

Publication number Publication date
CN110020003A (zh) 2019-07-16
US20240119061A1 (en) 2024-04-11
US20210182289A1 (en) 2021-06-17
US11860885B2 (en) 2024-01-02
KR20190024741A (ko) 2019-03-08
US20190065558A1 (en) 2019-02-28
US10956432B2 (en) 2021-03-23
KR20220029645A (ko) 2022-03-08

Similar Documents

Publication Publication Date Title
US5848416A (en) Method and apparatus for storing and retrieving data and a memory arrangement
AU2002222096B2 (en) Method of organising, interrogating and navigating a database
US8429143B2 (en) Methods and systems for improving hash table performance
US5671406A (en) Data structure enhancements for in-place sorting of a singly linked list
KR102409615B1 (ko) 연상 메모리에서의 최소값-최대값 계산 방법
US7130859B2 (en) Data structure for search
JPH09179743A (ja) エレメントをソートする方法および装置
CN107798117B (zh) 一种数据存储与读取的方法和装置
KR102371347B1 (ko) 한 세트의 아이템 하나씩 선택하기
US8166043B2 (en) Bit strings search apparatus, search method, and program
Dillabaugh et al. Succinct and I/O efficient data structures for traversal in trees
Hyyrö et al. Increased bit-parallelism for approximate string matching
CN110825846B (zh) 数据处理方法及装置
JP2004534981A5 (ko)
US20040107312A1 (en) System and method for determining a cache optimized ordering of cells in an unstructured graph
JP4349803B2 (ja) データベースのデータの編成
KR20220099745A (ko) 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치
JP5041003B2 (ja) 検索装置および検索方法
Pagh Basic external memory data structures
Jo et al. Encoding two-dimensional range top-k queries revisited
Fischer et al. A Practical Succinct Data Structure for Tree-Like Graphs
JP3754043B2 (ja) データ検索装置
Ohashi Cache oblivious data structures
CN113408098A (zh) 一种基于图搜索的最优二相码序列波形遍历搜索方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant