KR102442943B1 - 인-메모리 확률적 라운더 - Google Patents

인-메모리 확률적 라운더 Download PDF

Info

Publication number
KR102442943B1
KR102442943B1 KR1020190074408A KR20190074408A KR102442943B1 KR 102442943 B1 KR102442943 B1 KR 102442943B1 KR 1020190074408 A KR1020190074408 A KR 1020190074408A KR 20190074408 A KR20190074408 A KR 20190074408A KR 102442943 B1 KR102442943 B1 KR 102442943B1
Authority
KR
South Korea
Prior art keywords
probability
numbers
bit
binary
bits
Prior art date
Application number
KR1020190074408A
Other languages
English (en)
Other versions
KR20200005442A (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 KR20200005442A publication Critical patent/KR20200005442A/ko
Application granted granted Critical
Publication of KR102442943B1 publication Critical patent/KR102442943B1/ko

Links

Images

Classifications

    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Algebra (AREA)
  • Operations Research (AREA)
  • Evolutionary Biology (AREA)
  • Software Systems (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Image Processing (AREA)

Abstract

연관 프로세서는 메모리 어레이 및 제어기를 포함한다. 메모리 어레이는 메모리 어레이의 확률적 섹션의 개별 로우에 다수의 N 비트 확률수를 저장하고 각각의 확률수는 동일한 확률 분포 P를 가진다. 제어기는 원하는 확률 분포 Pdesired를 수신하고, 상기 확률 분포 Pdesired를 생성하는 N 비트 확률수의 세트의 부울 함수를 결정하고, 확률 분포 Pdesired를 갖는 결과적인 확률수를 생성하기 위해 로우 상에서 상기 함수를 활성화하는 확률 계산기를 포함한다.

Description

인-메모리 확률적 라운더{IN-MEMORY STOCHASTIC ROUNDER}
본 발명은 일반적으로 연관 처리(associative processing) 및 특히 연관 프로세서(associative processor) 내에서 확률적 라운딩(stochastic rounding)에 관한 것이다.
확률적 계산은 이 분야에 공지되어 있으며 A. Alaghi와 J. P. Hayes의 설문 기사인 "확률적 계산의 설문"(ACM Transactions on Embedded Computing Systems, Vol. 12, No. 2s, Article 92, 2013 년 5월)에서 다루고 있다.
확률수(Stochastic number)는 [0,1] 간격의 실수를 나타내는 0-1 비트 스트림으로 표현된다. (임의 길이의) 비트 스트림 Z는 Z 내의 1의 개수와 Z의 길이 사이의 비율인 수 p를 나타낸다. 예를 들어, Z_0 = (1,0,0,0) 및 Z_1 = (0,0,1,0,0,1,0,0) 둘 다 p = 0.25의 수를 나타낸다.
도 1에 도시된 바와 같이, 확률수 생성기(stochastic number generator)(10), 즉 이진수 p를 확률수 Z로 변환하는 회로는 난수(또는 의사 난수) 생성기(12) 및 이진수 p 및 난수 생성기(12)의 출력을 수신하는 비교기(14)를 포함한다. 확률수 생성기(10)는 M 클럭 사이클 동안 동작할 수 있으며, 여기서 M은 생성된 확률 이진수 Z의 길이 또는 "정밀도"이다.
M 사이클의 i번째 사이클에서, 비교기(12)는 난수 발생기(12)에 의해 생성 된 현재의 난수 Ri 및 수 p의 함수로서 확률수 Z에 대한 i번째 비트를 생성한다. 비교기(12)는 Ri가 p보다 작으면 1을 생성하고, 그렇지 않으면 0을 생성한다.
도 1은 또한 확률수 Z를 이진수 p로 변환할 수 있는 확률적 변환기(20)를 도시한다. 확률적 변환기(20)는 카운터(16) 및 변환기(18)를 포함한다. 카운터 (16)는 확률수 Z에서 1의 개수를 카운트한다. 변환기(18)은 그 후 Z 내의 비트의 총 수에 대한 1의 개수의 비율로서 수 p를 결정한다.
확률수 Z는 비트 스트림이기 때문에, 이들에 대한 계산은 AND, OR 또는 이들의 조합과 같은 매우 간단한 비트 단위 이진 연산이다. 이것은 확률적 계산을 흥미롭게 한다. 확률적 계산에 대한 자세한 내용은 https://en.wikipedia.org/wiki/Stochastic_computing에서 확인할 수 있다.
확률적 계산은 전형적으로 M 비트의 이진수 p를 확률 값 Z로 나타낸다. 수 p의 정밀도가 증가함에 따라, 연관된 확률수 Z에 대해 훨씬 많은 비트가 필요하다. 그러나 확률적 계산은 "점진적 정밀도(progressive precision)"를 제공하며, 즉 이 계산은 이진수 p의 최상위 비트에서 최하위 비트로 진행함에 따라 정밀도가 증가한다.
확률적 라운딩(Stochastic rounding)은 일반적으로 이진수의 정밀도를 하나의 기준 정밀도에서 더 낮은 정밀도로, 예컨대 32 비트 수에서 16 비트 수로, 줄이기 위해 사용된다. 확률적 라운딩에서, 올림(round up) 또는 버림(round down)에 대한 결정은 수에 포함되지 않은 워드(word)의 부분으로 표시되는 확률에 기초한다. 예를 들어, 이진수가 아닌 경우에서는, 수 102.34는 확률 1-.34 (예: P(rounded = 102) = .66)의 경우에 102로 라운딩되거나, 확률 0.34 (예: P (rounded = 103) = 0.34)의 경우에 103으로 라운딩될 수 있다. 다른 예에서, 수 102.34는 확률이 0.6인 경우에 102.3으로 라운딩되거나, 확률이 0.4인 경우에 102.4로 라운딩될 수 있다. 편향된 라운딩이 아니라 때때로 올림되며 때때로 버림으로 라운딩됨을 알아야 한다.
간단히 참조되는 도 2에 도시된 바와 같이, 정밀도가 감소되는(즉, 라운딩되는) 임의의 워드 또는 이진수는 2개의 섹션으로 분할될 수 있으며, 여기서 유지되는 워드의 일부는 최상위 비트(most significant bit, MSB)이고, 제거되는 워드의 부분은 최하위 비트(least significant bit, LSB)이다. 확률적 라운더(22)는 LSB 비트를 취하여, 그것의 연관된 확률을 결정하고, 연관된 확률을 사용하여 올림할지 버림할지 여부를 결정할 수 있다.
따라서, 본 발명의 바람직한 실시예에 따라, 확률 분포를 생성하는 방법이 제공된다.
본원 방법은 다수개(multiplicity) 확률수를 생성하는 단계 - 각각의 확률수는 동일한 확률 분포 P를 가짐 -, 원하는 확률 분포 Pdesired를 수신하는 단계, 및 원하는 확률과 관련된 확률 분포Pdesired를 생성하는 확률수의 세트의 부울 함수(Boolean function)를 결정하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 상기 확률수는 길이 N을 가지며, 여기서 N은 반올림될 이진수의 수이다.
또한, 본 발명의 바람직한 실시예에 따르면, 동일한 확률 분포 P는 0.5이다.
또한, 본 발명의 바람직한 실시예에 따르면, 상기 결정하는 단계는 상이한 함수들에 대한 확률수를 재사용하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 상기 방법은 확률수의 새로운 버전을 생성하기 위해 상기 확률수 내의 비트를 시프트하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 상기 방법은 미리 정의된 수의 결정 동작을 수행한 후에 상기 다수개의 확률수들을 재생성하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 이진수의 확률적 라운딩 방법이 제공된다. 상기 방법은 라운딩될 다수개의 N 이진 워드들을 가지며, 여기서 각 이진 워드는 유지될 최상위 섹션 및 제거될 최하위 섹션을 가진다. 상기 방법은 또한 각각이 동일한 확률 분포 P를 가지는 길이 N의 다수의 확률수를 가지는 단계를 포함한다. 상기 방법은 또한 최하위 섹션들 중 적어도 하나의 부분을 수신하는 단계와, 상기 부분에 관련된 확률 분포 Pportion로 확률수를 생성하는, 확률수의 세트의 부울 함수를 구현하는 단계와, 상기 부분을 가지는 각 단어에 대하여, 결과적인 확률수의 연관된 비트에 의해 최상위 수를 증가시키는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 결정하는 단계는 난수 생성기를 사용하여 다수개의 N 비트 확률수를 생성하고 이 다수개로부터 집합을 선택하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 결정하는 단계는 상이한 함수에 대하여 다수개의 N 비트 확률수를 재사용하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 상기 방법은 미리 정의된 수의 구현 동작을 수행한 후에 다수개의 N 비트 확률수를 재생성하는 단계를 또한 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 다수개의 N 이진 워드 및 N 비트 확률수는 메모리 어레이에 저장되고, 수신, 결정, 구현 및 가산 동작은 메모리 어레이 내에서 발생한다.
또한, 본 발명의 바람직한 실시예에 따르면, N은 10,000 이상이고, 그 부분은 5 비트 미만이고, 다수개는 25 이하이다.
또한, 본 발명의 바람직한 실시예에 따르면, 상기 부분은 선택된 워드의 상위 섹션의 마지막 비트 다음의 비트들로부터 나온 것이다.
또한, 본 발명의 바람직한 실시예에 따라, 메모리 어레이 및 제어기를 포함하는 연관 프로세서가 제공된다. 메모리 어레이는 메모리 어레이의 확률적 섹션의 개별 로우(row)에 다수개의 N 비트 확률수를 저장하고, 각각의 확률수는 동일한 확률 분포 P를 갖는다. 제어기는 확률 계산기를 포함하며, 이것은 원하는 확률 분포 Pdesired를 수신하고, 확률 분포 Pdesired 를 생성하는 확률수 N 비트의 세트의 부울 함수를 결정하고, 로우에서 함수가 확률 분포 Pdesired를 갖는 결과적인 확률수를 생성하도록 구현하기 위해 확률수의 연관된 로우를 활성화한다.
또한, 본 발명의 바람직한 실시예에 따르면, 동일한 확률 분포 P는 0.5이다.
또한, 본 발명의 바람직한 실시예에 따르면, 제어기는 서로 다른 함수에 대해 확률수를 재사용하기 위한 로우 회전기를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 제어기는 확률수의 새로운 버전을 생성하기 위해 확률수 내의 비트를 시프트하는 시프터(shifter)를 포함한다. 제어기는 또한 다수개의 확률수를 미리 정의된 횟수의 확률 계산으로 재생성한다.
또한, 본 발명의 바람직한 실시예에 따라, 메모리 어레이 및 제어기를 포함하는 연관 프로세서가 제공된다. 메모리 어레이는 데이터 섹션에 라운딩될 다수개의 N 이진 워드를 저장하고, 각 워드는 데이터 섹션의 다른 컬럼(column)에 저장되고 메모리 어레이의 확률적 섹션의 개별 로우에 다수개의 N 비트 확률수를 저장한다. 데이터 섹션의 컬럼과 확률 섹션의 컬럼이 정렬된다. 각각의 확률수는 동일한 확률 분포 P를 가지며, 각 이진 워드는 유지 될 최상위 섹션 및 제거될 최하위 섹션을 갖는다. 제어기는 확률 계산기, 컬럼 매처(column matcher) 및 가산기를 포함한다. 상기 최하위 섹션들 중 적어도 하나의 섹션의 일부를 수신하는 확률 계산기는 상기 부분과 관련된 확률 분포Pportion를 생성하는 확률수의 세트의 부울 함수를 결정하고 상기 확률수의 연관된 로우를 활성화시켜 상기 로우에서 상기 함수을 구현하여 이로써 확률 분포Pportion를 갖는 결과적인 확률수를 생성한다. 컬럼 매처는 상기 부분을 갖는 다수개의 워드의 컬럼들을 식별하고, 가산기는 식별된 컬럼의 결과적인 확률수의 관련 비트를 그 관련 컬럼에 가산한다.
또한, 본 발명의 바람직한 실시예에 따르면, 제어기는 다수개의 N 비트 확률수를 발생시키는 난수 발생기를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 제어기는 다수개의 N 비트 확률수를 다른 로우로 회전시키는 로우 회전기를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 로우 회전기는 새로운 버전의 N 비트 확률수를 생성하기 위해 N 비트 확률수 내의 비트를 시프트시키는 비트 시프터를 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 제어기는 가산기의 미리 정의된 수의 계산 사이클 이후 난수 발생기를 재활성화한다.
또한, 본 발명의 바람직한 실시예에 따르면, 동일한 확률 분포는 0.5이다.
또한, 본 발명의 바람직한 실시예에 따르면, N은 10,000을 초과하고, 그 부분은 5 비트 미만이고, 다수개는 25 이하이다.
마지막으로, 본 발명의 바람직한 실시예에 따라, 이진수의 확률적 라운딩 방법이 제공된다. 상기 방법은 라운딩될 다수개의 N 이진 워드를 가지며, 여기서 각 이진 워드는 유지될 최상위 섹션 및 제거될 최하위 섹션을 갖는다. 이 방법은 또한 확률 분포 Py를 각각 가지는 길이 N의 복수의 확률수 Sy를 가지는 단계를 포함한다. 이 방법은 또한 확률수 Sy의 스팬(span)에서 모두 K개의 확률 pk를 가지는 단계 및 각각 특정 LSB를 갖는 하나의 세트의 수를 나타내는 Q 개의 마커 mq를 가지는 단계를 포함한다. 상기 방법은 또한 마커 mq로 표시된 확률수 Sgen에 의해 정의되는 각 서브 시퀀스 SSq가 각각의 서브 시퀀스 SSq와 연관된 확률 pk를 나타내는 확률수 이도록 길이 N의 확률수 Sgen을 생성하는 단계를 포함한다.
본 발명으로 간주되는 주제는 특히 명세서의 결론 부분에서 지적되고 명백하게 청구된다. 그러나, 본 발명은 그 목적, 특징 및 이점과 함께 구성 및 작동 방법 모두를 첨부된 도면과 함께 읽는 경우에 다음의 상세한 설명을 참조함으로써 가장 잘 이해될 수 있다:
도 1은 종래 기술의 확률수 생성기 및 종래 기술의 확률적 변환기의 블록도이다.
도 2는 확률적 라운더의 동작에 대한 종래 기술도이다.
도 3은 본 발명의 동작을 이해하는데 유용한 종래 기술의 연관 프로세서의 개략도이다.
도 4는 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 연관성 확률적 라운더의 개략도이다.
도 5는 도 4의 확률적 라운더의 일부를 형성하는 로우 회전기의 동작의 개략도이다.
예시의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 일정한 비율로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 일부 요소의 치수는 명확성을 위해 다른 요소에 비해 과장 될 수있다. 또한, 적절한 것으로 고려되는 경우, 참조 부호는 대응하거나 유사한 요소를 나타 내기 위해 도면들 사이에서 반복 될 수 있다.
이하의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 수많은 특정 세부 사항이 설명된다. 그러나, 당업자는 본 발명이 이러한 특정 세부 사항들 없이도 실시될 수 있음을 이해할 것이다. 다른 예들에서, 잘 알려진 방법, 절차 및 구성 요소는 본 발명을 모호하게하지 않도록 상세히 설명되지 않았다.
출원인은 확률적 라운딩(stochastic rounding)이 라운딩되는 각각의 수의 최하위 비트(lowest significant bit, LSB)와 연관된 확률 분포의 생성, 일반적으로 계산-집약적 프로세스 및 특히 많은 수가 한번에 라운딩될 때 집약적인 프로세스가 요구됨을 인식하였다.
출원인은 방향 d로 라운딩될 표준 정밀도 수 {Si}의 길이 N의 시퀀스가 주어진다면, N 이상인 길이의 확률수 Z가 다음과 같이 확률적 라운딩을 수행하기 위해 사용될 수 있음을 알게 되었다:
Z[i] = 1이면 Si는 d 방향으로 라운딩되며,
그렇지 않으면 Si는 다른 방향으로 라운딩된다.
대안으로, Z1[i] = 0 인 경우에만 확률수 Z1을 사용하여 Si를 방향 d로 라운딩할 수 있다.
위의 예는 확률수와 확률적 라운딩 사이의 관계를 예시하고 복수의 수가 단일 확률수 Z 또는 Z1로 일반적으로 동시에 확률적으로 라운딩되는 방법을 보여준다. 출원인은 연관 프로세서가 인-메모리 계산을 병렬로 수행하고 한 번에 아주 많은 다수의 수에 대해 사용될 확률 분포 시뮬레이션을 생성할 수 있어서 동작을 훨씬 간단화 시키고 훨씬 더 비용 효율적일 수 있음을 알게 되었다.
본 명세서에서 참조되는 도 3은 메모리 어레이(41)에서 구현되는 연관 프로세서(40)는 도시하고 있다. 연관 프로세서(40)은 본원과 동일한 권리자이고 본원에 참조로 원용되는 미국 특허 제9,418,719호의 교시에 따라 구현될 수 있다.
간단히 말하면, 연관 프로세서(40)는 워드의 1 비트를 각각 처리하는 다수의 비트 라인 프로세서(13)로 형성될 수 있고, 각각의 워드는 메모리 어레이(41)의 컬럼에 저장된다. 따라서, 메모리 어레이(41)의 각 컬럼은 다수의 비트 라인 프로세서(13)을 구현할 수 있다. 도 3은 6개의 예시적인 2-비트 워드 A, B, Q, R, X 및 Y가 처리되어야 하는 메모리 어레이(41)의 일 부분을 도시한다. 비트 A1 및 B1은 비트 라인 56을 따라 비트 라인 프로세서 42A에 저장 될 수 있고, 반면에 비트 A2 및 B2는 비트 라인 58을 따라 섹션 42B에 저장 될 수 있다. 비트 Q1 및 R1는 비트 라인 70을 따라 비트 라인 프로세서 42A에 저장 될 수 있고, 비트 Q2 및 R2는 비트 라인 72를 따라 비트 라인 프로세서 42B에 저장될 수 있다. 비트 X1 및 Y1은 비트 라인 74를 따라 비트 라인 프로세서 42A에 저장 될 수 있고, 비트 X2 및 Y2는 비트 라인 76을 따라 비트 라인 프로세서 42B에 저장 될 수 있다.
전형적으로, M 비트 워드의 경우, M 개의 섹션이 있을 수 있으며, 각 섹션은 워드의 다른 비트를 저장한다. 각 섹션은 비트 라인의 상위의 수 N, 예를 들어 2048을 가질 수 있고, 따라서 비트 라인 프로세서의 수를 가질 수 있다. 각 섹션은 비트 라인 프로세서의 로우(row)를 제공할 수 있다. 따라서, N개의 M-비트 워드가 병렬로 처리될 수 있으며, 여기서 각 비트는 별개의 비트 라인 프로세서에 의해 병렬로 처리될 수 있다.
셀 컬럼(50)과 같은 전형적인 셀 컬럼은 처리될 입력 데이터를 컬럼의 처음 몇 셀에 저장할 수 있다. 도 3에서, 워드 A, Q 및 X의 비트는 컬럼의 제1 셀에 저장되는 반면, 워드 B, R 및 Y의 비트는 컬럼의 제2 셀에 저장된다. 각 컬럼의 나머지 셀(하나의 컬럼에 20-30개의 셀이 있을 수 있음)은 처리 작업 중 사용하기 위해 임시 저장소로 남겨 둘 수 있다.
멀티플렉서(17)는 비트 라인 프로세서의 로우들을 연결할 수 있고 로우 디코더(도시하지 않음)는 각 비트 라인 프로세서의 적절한 셀들을 활성화할 수 있다. 상술된 바와 같이, 메모리 어레이 내의 셀들의 로우는 워드 라인들에 의해 연결되고, 따라서, 디코더는 판독을 위한 비트 라인 프로세서들의 셀들의 관련 워드 라인 및 기입을 위한 비트 라인 프로세서들의 상이한 세트에서의 관련 워드 라인을 활성화시킬 수 있다.
이제 도 4를 참조하면, 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 연관성 확률적 라운더(associative stochastic rounder)(100)가 도시되어 있다. 이 연관성 확률성 라운더(100)는 도 3과 관련하여 상술한 바와 같이 동작하는 메모리 어레이(110) 및 제어기(120)를 포함하는 연관 프로세서를 이용할 수 있다.
메모리 어레이(110)는 로우와 컬럼으로 연결되며 데이터가 저장될 수 있고 데이터가 그 내부에서 연산될 수 있는 복수의 메모리 셀(휘발성 또는 비휘발성)을 포함할 수 있다. 메모리 어레이(110)는 각각 다른 유형의 데이터를 저장하는 다수의 섹션들로 분할될 수 있다. 제1 섹션은 라운딩될 원래의 데이터를 저장할 수 있는 데이터 섹션(114)일 수 있다. 제2 섹션은 확률 분포를 결정하는데 유용한 확률수를 저장하고 연산하기 위한 확률수 섹션(116)일 수 있고, 제3 섹션은 계산 섹션(118)일 수 있다. 도 4에서 알 수 있는 바와 같이, 섹션(114, 116 및 118)은 섹션(114) 내의 컬럼이 섹션(116 및 118)의 대응하는 컬럼 내로 연장될 수 있도록, 서로 정렬된다. 제어기(120)는 이하에서 더 설명될 것처럼 확률을 생성하고 매칭되는 컬럼을 찾도록 확률적 라운더(100)의 동작을 제어할 수 있다. 이를 위해, 제어기(120)는 난수 생성기(126)에 액세스할 수 있는 확률 분포 생성기(122)를 포함할 수 있다. 제어기(120)는 또한 매처(124) 및 마스크화 증분기(masked incrementer)(125)를 포함 할 수 있다.
라운딩될 본래의 데이터는 16 비트 또는 32 비트 또는 임의의 다른 수의 비트와 같은 R 비트 워드 일 수 있고, 데이터 섹션(114)에 저장될 수 있으며, 각각의 워드는 데이터 섹션(114)의 단일 컬럼 내에 있다. 복수인 N 워드가 있을 수 있으며, N은 이용 가능한 컬럼의 수에 따라 10K, 20K, 32K 또는 그 이상일 수 있다. 따라서, 데이터 섹션(114)은 적어도 메모리 셀들의 RxN 어레이일 수 있다.
확률적 라운더(100)는 R 비트 워드를 M 및 L의 두 부분으로 분할하고, 여기서 길이가 m 인 MSB 부분 M은 상기 최상위 비트들(MSB)을 포함하고, 길이가 l인 LSB 부분 L은 최하위 비트들(LSB)을 포함할 수 있다. 라운더(100)는 LSB 부분 L 또는 그것의 서브 세트를 이용하여, R 비트 워드의 정밀도를 m 비트 워드로 감소시킬 수 있다. 예를 들어, R이 16인 경우 m은 8일 수 있으며 16 비트 워드의 정밀도를 반으로 줄여서 LSB 부분 L의 서브세트의 값에 따라 라운딩된 8 비트 워드로 줄일 수 있다. 16 비트 워드를 8 비트로 라운딩하는 경우, 일부의 비트가 변경되거나 8번째 비트만 변경될 수 있다. 예를 들어, 999에서 1000으로 라운딩하면 모든 자릿수가 변경되게 되지만, 94에서 90으로 변경하는 것은 오직 한 자릿수, 즉 마지막 자릿수만 변경된다.
본 발명의 바람직한 실시예에 따르면, 모든 최하위 비트가 라운딩 연산에 이용될 수 있는 것은 아니다. 대신에, 확률적 라운더(100)는 라운딩 연산을 위한 최하위 비트의 길이 x의 부분 X만을 이용할 수 있다. X는 미리 정의 될 수 있거나 제어기(120)에 대한 입력일 수 있다. 예를 들어, LSB 부분 L의 길이가 8일 때, X는 4 비트 길이일 수 있다. 중요하게도 X는 MSB 부분 M에 가장 가까운 비트를 포함한다.
확률 분포 생성기(122)는 부분 X로 표현되는 디지털 분수(digital fraction)와 연관되는 확률을 결정할 수 있다. 그렇게 하기 위하여, 우선 난수 생성기(126)로부터 길이 N의 Y개의 난수 (또는 의사 난수) 시퀀스 S를 요청할 수 있고, 확률수 섹션(116)의 Y 로우에서 이들을 저장할 수 있다. 예를 들어, Y는 X2 = 16일 수 있고 N은 32K일 수 있다.
본 발명의 바람직한 실시예에 따르면, 확률수 섹션(116)의 각 로우는 P = 0.5의 베르누이 분포를 가지는 독립 랜덤 변수들의 시퀀스 S일 수 있고(즉, 각 로우의 N 비트의 대략 절반은 1이고 절반은 0임), 각 로우는 임의의 다른 로우와 무관할 수있다. 예를 들어, N이 10이면 하나의 로우는 0011101100을 저장할 수 있고, 다른 로우는 1001101001을 저장할 수 있다. 둘 다 1이 5개이고, 따라서, 이 둘은 0.5의 확률 분포를 나타낸다.
소수점 이하의 값을 나타내는 비트의 시퀀스 xyz에서, 비트 x는 1/2을 나타내고, 비트 y는 (1/2)2 = 1/4를 나타내고, 비트 z는 (1/2)3 = 1/8을 나타냄을 알아야 한다. 따라서, 시퀀스가 0010인 컬럼의 부분 X는 1/8을 나타낸다.
확률 분포 생성기(122)는 데이터 섹션(114)의 컬럼들 중 하나로부터 부분 X를 선택할 수 있고, 확률적 로우들의 P = 0.5 확률들로부터 선택된 부분 X에 의해 표현된 확률과 동일한 확률 Pportion를 생성하는 방법을 결정할 수 있다. 확률 분포 생성기(122)는 2X 가능한 다른 비트 시퀀스들을 생성하고 이를 통해 작업하거나 또는 제1 컬럼에서 시작하여 상이한 X 값들을 갖는 컬럼들을 통해 작업하는 것과 같은 임의의 적절한 방식으로 X를 선택할 수 있다.
확률 분포 생성기(122)는 현재 부분 X에 의해 표현된 확률과 동일한 확률 Pportion를 결정하기 위해, AND, OR, NAND 및 NOR와 같은 다양한 부울 연산(Boolean operation)을 수행하도록 요구되는 바와 같이, 확률적 섹션(116)의 다수의 로우를 활성화시켜서, X의 값과 연관된 확률을 생성한다.
다양한 부울 연산의 구현은 본 발명과 동일한 권리자에게 할당되고 여기에 참조로 원용된 미국 특허 제8,238,173호의 교시에 따라 수행될 수 있다. 미국 특허 제8,238,173호는 메모리 어레이의 다수의 로우들을 한번에 활성화시키는 인-메모리(in-memory) 프로세서를 기술하며, 이는 각 컬럼의 활성화된 셀들에서 부울 연산을 발생시킨다. 일부 부울 연산은 한 사이클을 취하고, 다른 부울 연산들은 하나 이상의 사이클을 취하지만, 모두 한 번에 다수의 로우를 활성화하고 그 결과를 다른 로우에 저장함으로써 후속하는 다중 로우 작업에 가능한한 활용될 수 있도록 구현된다. 따라서, 확률적 섹션(116)의 관련 로우를 활성화하고 어느 부울 함수가 계산될지 표시함으로써, 확률 분포 생성기(122)는 임의의 적합한 확률을 결정할 수 있다.
예를 들어, X가 1/8이면, 확률 분포 생성기(122)는 다음을 계산할 것이다:
P(1/8) = P(1/2) AND P(1/2) AND P(1/2) 수학식 1
여기서 AND 연산자는 확률 계산 분야에서 요구되는 교차 연산을 생성할 수 있다.
부울 연산을 생성하기 위해, 확률 분포 계산기(122)는 확률적 로우의 개수를 결정할 수 있고(수학식 1에서, 확률적 섹션(116)의 3개의 로우가 P = 1/8을 생성하는데 필요함), 결정된 개수의 확률적 로우를 활성화한 후에 수행될 부울 연산을 구현할 수 있다. 예를 들어, 확률 분포 계산기(122)는 제1 로우로부터 순서대로 로우들을 선택할 수 있지만, 로우들을 선택하는 다른 방법들 또한 가능하며 본 발명에 포함된다.
수학식 1의 예제에서, 부울 연산은 모든 연산에 대한 AND 연산이다. 모든 OR 연산은 P = 3/4를 생성한다. 모든 NAND 연산은 P(1-1/8) = 7/8을 생성한다.
1/2의 확률 Pi을 각각 가지는 확률적 로우들로 7/16의 확률을 계산하려면 다음과 같이 5개의 로우가 필요하다.
처음에는 2개 로우 P1과 P2를 저장하고, 결과 P1-2를 확률적 섹션(116)의 별도 로우에 저장한다. 다음과 같이 2개 이상의 로우 P3과 P4에 대해 동일하게 수행한다:
P1 AND P2 = ½ * ½ = ¼ = P1-2 수학식 2
P3 AND P4 = ½ * ½ = ¼ = P3-4 수학식 3
이제 다음과 같이 세 번째 결과 로우 P1234를 생성하기 위해 2개의 결과 로우 P1-2 및 P3-4의 AND 연산을 수행한다:
P1-2 AND P3-4 = 1 / 4 = 1 / 16 = P1234 수학식 4
마지막으로 다섯 번째 로우 P5와 결과 로우 P1234를 다음와 같이 OR 연산한다:
P5 OR P1234 = ½ - 1/16 = 7/16 수학식 5
확률 분포 계산기(122)는 모든 N 개의 컬럼에 걸쳐 결과 섹션(118)의 확률 로우(130)에 확률 계산의 결과를 제공 할 수 있다. 따라서, 확률 로우(130)는 데이터 섹션(114)의 모든 데이터 컬럼에 대한 확률적 로우를 사용한 확률 계산의 결과를 저장할 수 있다.
그러나, 데이터 섹션(114)의 모든 컬럼들이 그 최하위 부분의 일부로서 부분 X를 가지는 것은 아니다. 따라서, 매처(124)는 현재 부분 X를 데이터 섹션(114)의 각 컬럼의 최하위 부분의 제1 X 비트와 비교하는, 비교 동작을 수행 할 수 있다. 매처(124)는 부분 X에 매칭된 각각에 대해 1과 같은 플래그를 갖는 마스크(mask)를 생성 할 수 있고, 그렇지 않으면 0과 같은 플래그를 가진 마스크를 생성할 수 있으며, 그 마스크를 결과 섹션(118)의 마스크 로우(132)에 저장할 수 있으며, 여기서 마스크의 각 비트는 관련된 컬럼에 저장될 수 있다.
마스크화 증분기(125)는 확률 로우(130) 및 마스크(132)를 수신할 수 있고, 확률 로우(130)의 연관된 확률 비트에 의해 부분 X(즉, 마스크(132)에 의해 표시된 것들)를 갖는 데이터 섹션(114)의 컬럼을 증가시킬 수 있다. 이러한 증가는 본 발명과 동일한 권리자이며 본 명세서에 참고로 원용되는 미국 특허 출원 제15/708,181호에서 제시되거나 미국 특허 제8,238,173호에 기술되어 있는 전가산기(full adder)로 데이터 섹션(114) 내에서 수행될 수 있다.
관련 컬럼 마다 이러한 동작의 출력이 관련 컬럼 내의 라운딩된 값일 수 있다.
다른 실시예에서, 마스크화 증분기(125)는 별도의 처리 섹션에서 증가 동작을 수행할 수 있고 그 결과를 그 컬럼으로 다시 재기입할 수 있다.
다른 실시예에서, 마스크화 증분기(125)는 M의 마지막 비트를 마스크 로우(132)의 데이터에 의해 마스크화 확률 로우의 결과로 대체할 수 있다.
또 다른 대안적인 실시예에서, 마스크화 증분기(125)는 각각의 LSB에 대한 마스크화 확률 로우(즉, 확률 로우(130) AND 마스크(132)의 결과)을 저장할 수 있다. LSB들 사이에 중첩이 없기 때문에, 마스크화 증분기(125)는 모든 마스크화 확률 로우들을 함께 가산할 수 있고 그 결과를 사용하여 하나의 증가 동작에서 모든 컬럼들을 증가시킬 수 있다.
제어기(120)는 한 번에 N개인 다수의 워드에 확률적 라운더 연산자를 제공할 수 있음을 이해할 것이다. 또한, 각 계산에 대해 새로운 난수를 생성하는 종래 기술과 대조적으로, 제어기(120)는 Y개 확률적 로우를 한 번에 생성할 수 있고, 그들을 다수의 계산에 대해 사용할 수 있는데, 이는 분명히 확률적 섹션(116)의 Y개 로우들이 서로 독립적이기 때문이다. 그러나, 이러한 독립성을 유지하기 위해, Y개 로우는 2X 계산과 같은 미리 정의된 횟수의 계산에 대해서만 활용할 수 있다. 이 시점에서, 제어기(120)는 확률적 로우들의 새로운 세트를 필요로 할 수 있다.
본 발명의 바람직한 실시예에 따르면, 도 5에 도시된 바와 같이, 제어기(120)는 현존하는 로우들을 일정량만큼 회전시킴으로써 확률적 로우들의 새로운 세트를 생성하는 로우 회전기(140)를 추가로 포함할 수 있다. 이 회전은 확률적 섹션(116)의 각 로우가 한번 이용된 이후와 같은 임의의 시간에 발생할 수 있고, 제어기(120)는 확률수 생성기(126)가 Y개 확률적 로우의 새로운 세트를 생성하도록 지시하기 이전에 로우들을 Y 번 회전시킬 수 있다.
로우 회전기(140)는 또한 하나 이상의 확률 로우들의 비트들을 로우들 내의 다른 컬럼들로 시프트함으로써(즉, 비트들은 그들의 연관된 로우 내에 남아 있지만 다른 컬럼으로 이동함) 확률적 로우들을 변경할 수 있다. 이것은 0.5의 확률 분포를 유지하지만 시퀀스를 변경할 수 있다.
또 다른 대안적인 실시예에서, 제어기(120)는 어떤 확률 분포에 대해 어느 로우가 이용되어야 하는지를 정의할 수 있다(즉, X가 1/4일 때 로우 1 및 2가 사용될 것이고, X가 1/8일 때 로우 3, 4 및 5가 사용될 것임). 이 실시예에서, 로우 회전기(140)는 어느 로우를 어느 확률 분포에 할당할 것인지를 변경할 수 있다.
확률적 라운더(100)는 각 워드에 대해 랜덤 비트 시퀀스를 생성할 필요없이 한 번에 대량의 복수의 워드의 인-메모리 확률적 라운딩을 제공할 수 있다는 것을 이해해야 할 것이다. 라운더(100)는 매 2X 계산과 같이 주기적으로 확률수를 생성할 수 있고, 각각의 계산은 많은 수의 워드에 대해 병렬로 동작할 수 있다. 또한, 확률은 기존의 확률수에 대한 매우 간단한 비트 라인 연산으로 계산된다. 부울 연산은 관련 로우를 활성화하는 것만으로 수행된다(미국 특허 제8,238,173호에 설명되어 있음).
확률적 라운더(100)는 다음의 방법을 수행할 수 있음을 이해해야 할 것이다:
라운더(100)는 선택된 워드의 MSB 섹션 M의 마지막 비트에 후속하는 부분 X를 수신하면, N 비트의 확률수들(각각 동일한 확률 분포 P를 가짐)의 세트의 부울 함수를 결정하여 부분 X에 관련된 확률 분포 Pportion를 생성한다. 확률적 라운더(100)는 확률 분포가 Pportion인 결과적인 확률수를 생성하기 위해 상기 세트에 함수를 구현할 수 있다. 부분 X를 갖는 N개 워드의 각 워드에 대해, 확률적 라운더(100)는 결과인 확률수의 연관 비트를 워드의 MSB 섹션 M에 더할 수 있다.
AND, OR 및 보수 연산(complement operation)과 같은 비트 단위의 부울 연산만을 사용하여 n개의 확률수로부터 모든 확률(2배수(duplicate)) 1/2 n , 2/2 n , ..., (2 n -1)/2 n 이 생성될 수 있다. 예를 들어, 1/16, 2/16, ..., 15/16은 4개의 확률수에서 생성될 수 있는데, 왜냐하면 비트 단위의 부울 연산을 사용할 때 ½과 모두 동등한 4개의 독립적인 확률수의 "스팬"이 1/16, 2/16, ..., 15/16를 포함하기 때문이다.
또한, 본 발명은 1/2 이외의 확률을 갖는 확률수들의 이용을 포함하는 것으로 이해될 것이다. 예를 들어, 확률적 섹션(116)에 저장된 확률수들의 확률은 1/3 또는 1/7 또는 1/10 또는 임의의 다른 적합한 기본 확률일 수 있다. 이들 실시예에서, 확률 분포 생성기(122)는 확률 분포 Pportion를 기본 확률의 함수로서 생성할 수 있다.
본 발명은:
길이 N의 시퀀스이고 각각이 동일한 확률 값을 갖는 Y 개 확률수 Sy;
확률수 Sy의 스팬 내에 있는 모든 K개 확률 pk; 및
각각 특정 LSB를 가지는 수들의 하나의 세트를 각각 나타내는 Q개 마커 mq,
가 주어지는 경우에, mq에 의해 표시된 Sgen에 의해 정의되는 각각의 서브-시퀀스 SSq가 각각의 서브-시퀀스 SSq와 연관된 pk를 나타내는 확률수가 되도록 길이 N의 확률수 Sgen을 생성할 수 있는 방법을 제공할 수 있음을 이해해야 한다.
본 발명의 특정 특징들이 본 명세서에 예시되고 기술되었지만, 많은 수정, 대체, 변경 및 등가물이 당업자에게 발생할 수 있다. 그러므로, 첨부된 청구 범위는 본 발명의 진정한 사상 내에 있는 그러한 모든 수정 및 변경을 포함하도록 의도된 것으로 이해되어야 한다.

Claims (28)

  1. 확률 분포들을 생성하는 방법으로서,
    다수개 확률수(stochastic number)를 생성하는 단계 - 각각의 확률수는 동일한 확률 분포 P를 가짐 -;
    원하는 확률 분포 Pdesired를 수신하는 단계; 및
    상기 원하는 확률 분포 Pdesired에 관련된 확률 분포를 생성하는 상기 확률수들의 세트의 부울 함수를 결정하는 단계를 포함하는, 확률 분포들을 생성하는 방법.
  2. 제1항에 있어서,
    상기 확률수들은 길이 N을 가지며, 여기서 N은 라운딩될(rounded) 이진수의 개수인, 확률 분포들을 생성하는 방법.
  3. 제1항에 있어서,
    상기 동일한 확률 분포 P는 0.5 인 것인, 확률 분포들을 생성하는 방법.
  4. 제1항에 있어서,
    상기 결정하는 단계는 상이한 함수들에 대해 상기 확률수들을 재사용하는 단계를 포함하는, 확률 분포들을 생성하는 방법.
  5. 제4항에 있어서,
    상기 확률수들의 새로운 버전을 생성하도록 상기 확률수들 내에서 비트들을 시프트하는 단계를 더 포함하는, 확률 분포들을 생성하는 방법.
  6. 제4항에 있어서,
    상기 결정하는 단계를 미리 정의된 횟수로 수행한 후에 상기 다수개 확률수를 재생성하는 단계를 더 포함하는, 확률 분포들을 생성하는 방법.
  7. 이진수들의 확률적 라운딩을 위한 방법으로서,
    라운딩될 다수개 N 이진 워드를 가지는 단계 - 각 이진 워드는 유지될 최상위 섹션 및 제거될 최하위 섹션을 포함함 -;
    길이 N의 복수의 확률수를 가지는 단계 - 각각의 확률수는 동일한 확률 분포 P를 가짐 -;
    최하위 섹션들 중 적어도 하나 최하위 섹션의 부분을 수신하는 단계;
    확률수들의 세트의 부울 함수를 구현하는 단계 - 상기 부울 함수는 상기 부분과 관련된 확률 분포 Pportion를 갖는 확률수를 생성함 -; 및
    상기 부분을 갖는 각각의 워드에 대해, 결과적인 확률수의 연관된 비트만큼 최상위 수를 증가시키는 단계를 포함하는, 이진수들의 확률적 라운딩을 위한 방법.
  8. 제7항에 있어서,
    상기 결정하는 단계는 난수 생성기를 사용하여 다수개 N 비트 확률수를 생성하고 상기 다수개로부터 세트를 선택하는 단계를 포함하는, 이진수들의 확률적 라운딩을 위한 방법.
  9. 제8항에 있어서,
    상기 결정하는 단계는 상이한 함수들에 대해 상기 다수개 N 비트 확률수를 재사용하는 단계를 포함하는, 이진수들의 확률적 라운딩을 위한 방법.
  10. 제9항에 있어서,
    상기 N 비트인 확률수들의 새로운 버전을 생성하도록 N 비트인 이진 확률수들 내의 비트들을 시프트하는 단계를 더 포함하는, 이진수들의 확률적 라운딩을 위한 방법.
  11. 제9항에 있어서,
    상기 구현하는 단계를 미리 정의된 횟수로 수행한 후에 상기 다수개 N 비트 확률수를 재생성하는 단계를 더 포함하는, 이진수들의 확률적 라운딩을 위한 방법.
  12. 제7항에 있어서,
    상기 다수개 N 이진 워드 및 상기 N 비트 확률수는 메모리 어레이에 저장되고, 상기 수신하는 단계, 결정하는 단계, 구현하는 단계 및 추가하는 단계는 상기 메모리 어레이 내에서 발생하는, 이진수들의 확률적 라운딩을 위한 방법.
  13. 제7항에 있어서,
    상기 동일한 확률 분포는 1/2 인 것인, 이진수들의 확률적 라운딩을 위한 방법.
  14. 제7항에 있어서,
    N은 10,000보다 크고, 상기 부분은 5 비트보다 작고, 상기 다수개는 25 이하인, 이진수들의 확률적 라운딩을 위한 방법.
  15. 제7항에 있어서,
    상기 부분은 선택된 워드의 상위 섹션의 마지막 비트 다음의 비트들로부터 나오는 것인, 이진수들의 확률적 라운딩을 위한 방법.
  16. 연관 프로세서(associative processor)로서,
    상기 메모리 어레이의 확률적 섹션의 개별 로우에 다수개 N 비트 확률수를 저장하기 위한 메모리 어레이 - 각각의 확률수는 동일한 확률 분포 P를 가짐 -; 및
    제어기를 포함하고,
    상기 제어기는,
    원하는 확률 분포 Pdesired를 수신하고, 상기 확률 분포 Pdesired를 생성하는 상기 N 비트 확률수의 세트의 부울 함수를 결정하고, 상기 확률수들의 관련 로우들을 활성화하여 상기 로우들에서 상기 함수를 구현하고, 이로써 상기 확률 분포 Pdesired를 갖는 결과적인 확률수를 생성하는 확률 계산기를 포함하는, 연관 프로세서.
  17. 제16항에 있어서,
    상기 동일한 확률 분포 P는 0.5 인 것인, 연관 프로세서.
  18. 제16항에 있어서,
    상기 제어기는 상이한 함수들에 대한 상기 확률수들을 재사용하기 위한 로우 회전기를 포함하는, 연관 프로세서.
  19. 제18항에 있어서,
    상기 제어기는 확률수들의 새로운 버전을 생성하기 위해 상기 확률수들 내의 비트들을 시프트하는 시프터를 포함하는, 연관 프로세서.
  20. 제18항에 있어서,
    상기 제어기는 또한 미리 정의된 횟수의 확률 계산으로 상기 다수개 확률수를 재생성하는, 연관 프로세서.
  21. 연관 프로세서로서,
    메모리 어레이 및 제어기를 포함하고,
    상기 메모리 어레이는,
    데이터 섹션에 라운딩될 다수개 N 이진 워드를 저장하고 - 각각의 이진 워드는 데이터 섹션의 서로 다른 컬럼에 저장됨 -,
    메모리 어레이의 확률적 섹션의 개별 로우에 다수개 N 비트 확률수를 저장하고,
    데이터 섹션의 컬럼들과 확률 섹션의 컬럼들이 정렬되고, 각각의 확률수는 동일한 확률 분포 P를 가지며, 각각의 이진 워드는 유지될 최상위 섹션 및 제거될 최하위 섹션을 가지고,
    상기 제어기는,
    최하위 섹션들 중 적어도 하나의 최하위 섹션의 일부를 수신하고, 상기 부분과 관련된 확률 분포 Pportion를 생성하는 확률수의 세트의 부울 함수를 결정하고, 상기 확률수의 연관된 로우를 활성화시켜 상기 로우에서 상기 함수을 구현하고, 이로써 확률 분포 Pportion를 갖는 결과적인 확률수를 생성하는 확률 계산기,
    상기 부분을 가지는 다수개 워드의 컬럼들을 식별하는 컬럼 매처(column matcher), 및
    식별된 컬럼의 결과적인 확률수의 연관 비트를 그 연관 컬럼에 가산하는 가산기를 포함하는, 연관 프로세서.
  22. 제21항에 있어서,
    상기 제어기는 다수개 N 비트 확률수를 생성하는 난수 발생기를 포함하는, 연관 프로세서.
  23. 제21항에 있어서,
    상기 제어기는 다수개 N 비트 확률수를 상이한 로우들로 회전시키는 로우 회전기를 포함하는, 연관 프로세서.
  24. 제23항에 있어서,
    상기 로우 회전기는 N 비트 확률수들의 새로운 버전을 생성하기 위해 상기 N 비트 확률수들 내의 비트들을 시프트하는 비트 시프터를 포함하는, 연관 프로세서.
  25. 제23항에 있어서,
    상기 제어기는 상기 가산기의 미리 정해진 횟수의 계산 사이클 후에 상기 난수 발생기를 재활성화시키는, 연관 프로세서.
  26. 제21항에 있어서,
    상기 동일한 확률 분포는 0.5인 것인, 연관 프로세서.
  27. 제21항에 있어서,
    N은 10,000보다 크고, 상기 부분은 5 비트보다 작으며, 상기 다수개는 25 이하인 것인, 연관 프로세서.
  28. 이진수들의 확률적 라운딩 방법으로서,
    라운딩될 다수개 N 이진 워드를 가지는 단계 - 각각의 이진 워드는 유지될 최상위 섹션 및 제거될 최하위 섹션을 가짐 -;
    확률 분포 Py를 각각 가지는 길이 N의 복수의 확률수 Sy를 가지는 단계;
    확률수 Sy의 스팬(span)에 있는 모든 K개 확률 pk를 가지는 단계;
    특정 LSB를 갖는 수들의 하나의 세트를 나타내는 Q개 마커 mq를 가지는 단계; 및
    마커 mq로 표시된 확률수 Sgen에 의해 정의되는 각각의 서브 시퀀스 SSq가 각각의 서브 시퀀스 SSq와 연관된 확률 pk를 나타내는 확률수가 되도록, 길이 N의 확률수 Sgen을 생성하는 단계를 포함하는, 이진수들의 확률적 라운딩 방법.
KR1020190074408A 2018-07-05 2019-06-21 인-메모리 확률적 라운더 KR102442943B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/027,381 2018-07-05
US16/027,381 US10803141B2 (en) 2018-07-05 2018-07-05 In-memory stochastic rounder

Publications (2)

Publication Number Publication Date
KR20200005442A KR20200005442A (ko) 2020-01-15
KR102442943B1 true KR102442943B1 (ko) 2022-09-13

Family

ID=69101533

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190074408A KR102442943B1 (ko) 2018-07-05 2019-06-21 인-메모리 확률적 라운더

Country Status (3)

Country Link
US (1) US10803141B2 (ko)
KR (1) KR102442943B1 (ko)
CN (1) CN110688091A (ko)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2166247A1 (en) * 1995-12-28 1997-06-29 Ravi Shankar Ananth Supervisory circuit
TWI408903B (zh) * 2004-06-30 2013-09-11 Noriyoshi Tsuyuzaki 隨機脈衝產生源及半導體裝置、使用該源產生隨機數及/或機率之方法與程式
US8238173B2 (en) 2009-07-16 2012-08-07 Zikbit Ltd Using storage cells to perform computation
KR102149770B1 (ko) * 2013-08-26 2020-08-31 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법
US9418719B2 (en) 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
KR102458885B1 (ko) * 2016-03-23 2022-10-24 쥐에스아이 테크놀로지 인코포레이티드 인메모리 행렬 곱셈 및 뉴럴 네트워크에서 그것의 사용
US10534836B2 (en) 2016-12-06 2020-01-14 Gsi Technology Inc. Four steps associative full adder
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning

Also Published As

Publication number Publication date
KR20200005442A (ko) 2020-01-15
US20200012708A1 (en) 2020-01-09
CN110688091A (zh) 2020-01-14
US10803141B2 (en) 2020-10-13

Similar Documents

Publication Publication Date Title
US10534836B2 (en) Four steps associative full adder
US9111615B1 (en) RAM-based ternary content addressable memory
US11681497B2 (en) Concurrent multi-bit adder
US9240237B2 (en) Semiconductor device and method of writing/reading entry address into/from semiconductor device
US11169778B2 (en) Converting floating point numbers to reduce the precision
CN110244932B (zh) 用于关联存储器中的长加法和长乘法的系统和方法
KR20190024690A (ko) 연상 메모리에서의 최소값-최대값 계산 방법
EP3769208B1 (en) Stochastic rounding logic
US7185268B2 (en) Memory system and method for use in trellis-based decoding
US20220244959A1 (en) System and method for parallel combinatorial design
KR102442943B1 (ko) 인-메모리 확률적 라운더
CN112380018A (zh) 基于遗传算法的确定用于矩阵乘法的矩阵分块参数的方法
CN112328206A (zh) 面向向量化部件的并行随机数生成方法
CN100498727C (zh) 矩阵的解压缩方法和设备
US20240118866A1 (en) Shift array circuit and arithmetic circuit including the shift array circuit
US20210263707A1 (en) Iterative binary division with carry prediction
US20230221925A1 (en) Square root calculations on an associative processing unit
JP2008165493A (ja) 演算装置
WO2009142670A1 (en) Large-factor multiplication in an array of processors

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant