KR20080029906A - 어드레스 가능 위치로부터의 인코딩된 데이터에 기반한승수 곱 생성 - Google Patents

어드레스 가능 위치로부터의 인코딩된 데이터에 기반한승수 곱 생성 Download PDF

Info

Publication number
KR20080029906A
KR20080029906A KR1020070098167A KR20070098167A KR20080029906A KR 20080029906 A KR20080029906 A KR 20080029906A KR 1020070098167 A KR1020070098167 A KR 1020070098167A KR 20070098167 A KR20070098167 A KR 20070098167A KR 20080029906 A KR20080029906 A KR 20080029906A
Authority
KR
South Korea
Prior art keywords
circuit
encoded data
data
encoded
product
Prior art date
Application number
KR1020070098167A
Other languages
English (en)
Other versions
KR100958965B1 (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 KR20080029906A publication Critical patent/KR20080029906A/ko
Application granted granted Critical
Publication of KR100958965B1 publication Critical patent/KR100958965B1/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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • 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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

개시된 일 실시예에 있어서, 장치는 제1 수에 대응하는 어드레스에 적어도 부분적으로 기초하여 어드레스 가능 위치로부터 인코딩된 데이터를 출력하는 제1 회로 - 상기 인코딩된 데이터는 상기 제1 수에 대응하고 부분 곱 감소을 위해 인코딩되는 데이터에 적어도 부분적으로 기초함 -, 및 상기 인코딩된 데이터와 제2 수에 대응하는 데이터에 적어도 부분적으로 기초하여 곱을 생성하는 제2 회로를 포함한다. 다른 실시예들도 개시된다.
부분 곱 감소(partial product reduction), 인코딩된 데이터, 부분 곱 생성, 인코딩 회로

Description

어드레스 가능 위치로부터의 인코딩된 데이터에 기반한 승수 곱 생성{MULTIPLIER PRODUCT GENERATION BASED ON ENCODED DATA FROM ADDRESSABLE LOCATION}
본 명세서에 기술된 실시예들은 승수(multiplier)에 관한 것이다.
프로세서는 수의 곱 생성을 가속화하기 위해서 승수 회로(multiplier circuit)를 가질 수 있다. 프로세서는, 예컨대 FIR(finitie impulse response) 필터, IIR(infinite impulse response}, DCT(discrete cosine transform) 및/또는 FFT(fast Fourier transform)과 같은 DSP(digital signal processing) 애플리케이션의 구동 속도를 위해서 승수 회로를 사용할 수 있다. 프로세서는 예컨대 콤플렉스 필터 동작의 구동을 가속화하기 위해서 승수, 멀티플라이-애드(multiply-add) 및/또는 멀티플라이-어큐물레이트(multiply-accumulate) 회로의 클러스터를 가질 수 있다.
본 발명은 승수 회로를 통해 곱 생성을 가속화하기 위한 것이다.
일 실시예에 따라, 본 발명은 제1 수에 대응하는 어드레스에 적어도 부분적으로 기초하여 어드레스 가능(addressable) 위치로부터 인코딩된 데이터를 출력하기 위한 수단 - 상기 인코딩된 데이터는, 상기 제1 수에 대응하고 부분 곱 감소를 위해 인코딩되는, 데이터에 적어도 부분적으로 기초함 -; 및 상기 인코딩된 데이터와 제2 수에 대응하는 데이터에 적어도 부분적으로 기초하여 곱을 생성하기 위한 수단을 포함하는 장치이다.
다른 실시예에 따라, 본 발명은 적어도 일부에서 제1 수에 대응하는 어드레스에 기초하여 어드레스 가능(addressable) 위치로부터 인코딩된 데이터를 출력하는 단계 - 상기 인코딩된 데이터는 적어도 일부에서 상기 제1 수에 대응하고 부분 곱 감소를 위해 인코딩되는 데이터에 기초함 -; 및 적어도 일부에서 상기 인코딩된 데이터와 제2 수에 대응하는 데이터에 기초하는 곱을 생성하는 단계를 포함하는 방법이다.
본 발명은 승수 회로를 통해 곱 생성을 가속화할 수 있다.
다음의 상세한 기술은 어드레스 가능 위치로부터의 인코딩된 데이터에 기반 한 승수 곱 생성에 관한 장치, 방법 및 시스템의 예시적 실시예를 설명한 것이다. 예컨대, 구조(들), 기능(들) 및/또는 특성(들)과 같은 특징은 편이를 위해서 일 실시예를 참조해서 기술되나 다양한 실시예들이 임의의 적절한 하나 이상의 기술된 특징으로 구현될 수 있다.
도 1은 어드레스 가능 위치로부터 인코딩된 데이터에 적어도 부분적으로 기초해서 곱을 생성하는 회로(100)를 도시한다. 도 1에 도시된 바와 같이, 일 실시예에 관한 회로(100)는 제1 수에 해당하는 어드레스(101)에 적어도 부분적으로 기초해서 어드레스 가능 위치로부터 인코딩된 데이터(111)을 출력하는 회로(110) 및 제2 수에 해당하는 데이터(102) 및 인코딩된 데이터(111)에 적어도 부분적으로 기초해서 곱(103)을 생성하는 회로(140)를 포함한다. 일 실시예에 관한 인코딩된 데이터(111)는 제1 수에 해당하고 부분 곱 감소(partial product reduction)를 위해 인코드되는 데이터에 적어도 부분적으로 기초할 수 있다. 일 실시예에 관한 회로(140)는 제1 수 및 제2 수의 곱을 생성할 수 있다. 일 실시예로서, 제1 수는 승수(multiplier)일 수 있고, 제2 수는 피승수(multiplicand)일 수 있다. 다른 실시예로서, 제1 수는 피승수일 수 있고, 제2 수는 승수일 수 있다.
일 실시예에 관한 회로(110)는 부분 곱 감소를 위한 동일한 데이터를 반복적으로 인코딩해야 하는 것을 감소하거나 피하기 위해서 제1 수에 해당하는 어드레스(101)에 적어도 부분적으로 기초해서 어드레스 가능 위치로부터 인코딩된 데이터(111)를 출력하는데 사용될 수 있다. 일 실시예에 관한 회로(110)는 곱 생성 동작을 가속화하기 위해서 인코딩된 데이터를 출력하는데 사용될 수 있다. 일 실시 예에 관한 회로(110)는 전력 소모 및/또는 열 손실을 줄이기 위해서 인코딩된 데이터를 출력하는데 사용될 수 있다. 일 실시예에 관한 회로(110)는 동작 속도를 향상 및/또는 전력 손실 및/또는 열 손실 저감을 위해서 사용될 수 있는데, 특히 회로(110)는 상수로서 반복해서 다른 피승수에 곱해져야 하는 승수에 관한 인코딩된 데이터(111)를 출력하는데 사용된다.
도 2는 일 실시예에 따라서, 어드레스 가능 위치로부터 인코딩된 데이터에 적어도 부분적으로 기반해서 곱을 생성하는 회로의 흐름도(200)를 도시한다. 도 2의 블록(202)에 관해서, 회로(110)는 제1 수에 대응하는 어드레스(101)에 적어도 부분적으로 기초해서 어드레스 가능 위치로부터 인코딩된 데이터(111)를 출력할 수 있다. 블록(204)에서, 회로(140)는 인코딩된 데이터(111) 및 제2 수에 대응하는 데이터(102)에 적어도 부분적으로 기초해서 곱(103)을 생성할 수 있다.
인코딩된 데이터(111)는 임의의 적절한 비트-길이의 제1 수에 해당할 수 있고, 임의의 적절한 방식으로 부분 곱 감소를 위해 인코딩된 데이터에 적어도 부분적으로 기초할 수 있으며, 임의의 적절한 크기를 가질 수 있다. 일 실시예에 관한 인코딩된 데이터(111)는 예컨대 16-비트 제1 수에 해당할 수 있다. 일 실시예에 관한 인코딩된 데이터(111)는 임의의 적절한 비트-길이의 제1 수를 위하여 적절한 수의 선택 비트의 임의의 적절한 수의 세트를 포함할 수 있다.
일 실시예에 관한, 인코딩된 데이터(111)는 부스(Booth) 인코딩 또는 예컨대 라디스-4 부스(radix-4 Booth)(혹은 개량된 부스) 인코딩과 같은 개량된 부스 인코딩을 사용해서 인코딩된 데이터에 적어도 부분적으로 기초할 수 있다. 일 실시예 에 관한, 인코딩된 데이터(111)는 제1 수에 해당하는 데이터의 개량된 부스 인코딩 또는 부스 인코딩되어 나온 인코딩된 데이터일 수 있다. 일 실시예에 관한, 인코딩된 데이터(111)는 라디스-4 부스(혹은 개량된 부스) 인코딩을 이용해서 인코딩된 16비트 수에 관해서, 6개 선택 비트의 8개 세트인 48비트 길이일 수 있다.
일 실시예에 관한, 인코딩된 데이터(111)는 이미 인코딩된 데이터를 추가로 인코딩해서 나온 인코딩된 데이터일 수 있다. 일 실시예에 관한, 그런 추가 인코딩은 예컨대 인코딩된 데이터를 압축하는데 사용될 수 있다. 일 실시예에 관한, 인코딩된 데이터(111)는 LZD(leading zeros detection) 또는 변형된 LZD를 이용해서 이미 인코딩된 데이터를 추가적으로 인코딩해서 나온 인코딩된 데이터일 수 있다. 일 실시예에 관한, 인코딩된 데이터(111)는 제1 수에 해당하는 데이터의 부스 인코딩 또는 변형된 부스 인코딩, 및 LZD나 변형된 LZD를 이용해서 인코딩된 데이터의 추가 인코딩으로부터 나온 인코딩된 데이터일 수 있다. 인코딩된 데이터가 6개 선택 비트의 8개 세트를 가지고 각 세트는 그 세트의 다른 비트와 상이한 하나의 비트만을 가지는(예컨대, 세트 내 한 개의 로직 1만이 있는 것과 같이) 일 실시예에서, LZD 또는 변형된 LZD 인코딩은 인코딩된 데이터(111)에 관해서 6개 선택 비트의 8개 세트를 전체 24 비트인 3개의 인코딩된 선택 비트의 8개 세트로 인코드할 수 있다.
회로(110)는 임의의 적합한 소스로부터 임의의 적합한 비트-길이의 어드레스(101)를 수신하도록 연결될 수 있다. 도 1에 도시된 바와 같이, 일 실시예에 있어서 회로(110)는 제어 회로(130)로부터 어드레스(101)를 수신하도록 연결될 수 있 다. 제어 회로(130)는, 임의의 적합한 방식으로 회로(110)에 대한 어드레스(101) 출력을 제어하기 위하여 임의의 적합한 회로를 포함할 수 있다. 일 실시예에 있어서 제어 회로(130)는 하나 이상의 레지스터에 어드레스(101)를 저장할 수 있다. 일 실시예에 있어서 제어 회로(130)는 제1 수에 대응하는 데이터에 응답하여 회로(110)에 대해 어드레스(101)를 출력할 수 있다. 일 실시예에 있어서 제어 회로(130)는 제1 수에 대응하는 데이터를 어드레스(110)로 변환할 수 있다.
제어 회로(140)는 임의의 적합한 소스로부터 임의의 적합한 비트-길이의 데이터(102)를 수신하도록 연결될 수 있다. 도 1에 도시된 바와 같이, 일 실시예에 있어서 제어 회로(140)는 제어 회로(130)로부터 데이터(102)를 수신하도록 연결될 수 있다. 제어 회로(130)는, 임의의 적합한 방식으로 회로(140)에 대한 데이터(102) 출력을 제어하기 위하여 임의의 적합한 회로를 포함할 수 있다. 일 실시예에 있어서 제어 회로(130)는 하나 이상의 레지스터에 데이터(102)를 저장할 수 있다.
제어 회로(130)가 회로(110)에 어드레스(101)를 출력하는 것과 같이, 일 실시예에 있어서 제어 회로(130)는 회로(140)에 데이터(102)를 출력할 수 있다. 일 실시예에 있어서 제어 회로(130)는 동일한 클록 에지에 이용 가능해지도록 어드레스(101)와 데이터(102)를 출력할 수 있다. 일 실시예에 있어서 제어 회로(130)는 어드레스(101) 및/또는 데이터(102)를 출력하기 위한 프로그램 가능 논리를 포함할 수 있다. 일 실시예에 있어서 제어 회로(130)는 명령어에 응답하여 그 명령어를 실행하기 위해서 어드레스(101) 및 데이터(102)를 출력할 수 있다.
인코딩된 데이터 출력 회로
회로(110)는 인코딩된 데이터(111)를 임의의 적합한 방식으로 어드레스 가능 위치로부터 출력하는 임의의 적합한 회로를 포함할 수 있다.
도 3에 도시된 바와 같이, 일 실시예에 있어서 회로(110)는 다양한 수에 대응하여 인코딩된 데이터를 저장하기 위한 메모리(322)를 포함할 수 있다. 메모리(322)는 임의의 적합한 비트-길이의 임의의 적합한 수들에 대해 임의의 적합한 양의 인코딩된 데이터를 저장할 수 있다. 일 실시예에 있어서 메모리(322)는 다양한 수에 대응하여 인코딩된 데이터로 사전 로딩될 수 있다. 일 실시예에 있어서 메모리(322)는, 먼저 제품 생성에 이용된 수에 대응하여 인코딩된 데이터로 로딩될 수 있다. 일 실시예에 있어서 회로(110)는 어드레스(101)에 기초하여 메모리(322) 내의 어드레스 가능 위치로부터 인코딩된 데이터를 판독할 수 있고 그러한 판독된 인코딩된 데이터를 회로(140)에 출력할 수 있다.
임의의 적합한 양의 인코딩된 데이터를 저장하기 위하여 메모리(322)가 임의의 적합한 회로를 이용하여 구현될 수 있다. 메모리(322)는 휘발성 메모리를 위한 회로 및/또는 비휘발성 메모리를 위한 회로를 포함할 수 있다. 메모리(322)는 복수의 레지스터로 이루어진 세트를 위한 회로, 임의의 적합한 ROM을 위한 회로, 임의의 적합한 RAM, 예컨대 적합한 정적 RAM 또는 적합한 동적 RAM 등을 위한 회로, 및/또는 임의의 적합한 플래시 메모리를 위한 회로를 포함할 수 있는데, 다만 이는 예일 뿐 이로써 제한되는 것은 아니다.
도 3에 도시된 바와 같이, 일 실시예에 있어서 회로(110)는 메모리(322)로부터 인코딩된 데이터를 판독하기 위하여 어드레스를 수신하고 수신된 어드레스의 적어도 일부를 디코딩하도록 연결된 어드레스 디코더(324)를 포함할 수 있다. 또 다른 실시예에서 회로(110)는 어드레스 디코더(324)를 포함하지 않을 수도 있고 오히려 수신된 어드레스를 이용하여 직접 메모리(322)를 어드레싱할 수 있다.
도 3에 도시된 바와 같이, 일 실시예에 있어서 회로(110)는 회로(140)에 인코딩된 데이터를 출력하기 위한 버퍼 회로(326)를 포함할 수 있다. 버퍼 회로(326)는 임의의 적합한 방식으로 메모리(322)로부터 인코딩된 데이터를 수신하고 그리고/또는 인코딩된 데이터를 출력하도록 연결된 임의의 적합한 회로를 포함할 수 있다. 일 실시예에 있어서 버퍼 회로(326)는 회로(140)에 대해 제1 수에 대응하여 인코딩된 데이터의 부분을 연속하여 출력할 수 있다. 일 실시예에 있어서 버퍼 회로(326)는 제1 수에 대응하여 전체 인코딩된 데이터를 회로(140)에 출력할 수 있다.
곱(product) 생성 회로
회로(140)는 임의의 적합한 비트-길이의 인코딩된 데이터(110) 및 임의의 적합한 비트-길이의 데이터(102)에 적어도 부분적으로 기초하여 임의의 적합한 방식으로 임의의 적합한 비트-길이의 곱(103)을 생성하기 위하여 임의의 적합한 회로를 포함할 수 있다.
도 4에 도시된 바와 같이, 일 실시예에 있어서 회로(140)는 부분 곱 생성 회 로(452)와 선택 회로(454)를 포함할 수 있다.
일 실시예에 있어서 부분 곱 생성 회로(452)는 제2 수에 대응한 데이터(102)에 관한 다양한 포텐셜 부분 곱들에 대응한 데이터를 생성할 수 있다. 부분 곱 생성 회로(452)는 임의의 적합한 비트-길이의 데이터(102)를 위하여 임의의 적합한 방식으로 임의의 적합한 비트-길이의 임의의 적합한 데이터를 생성하기 위한 임의의 적합한 회로를 포함할 수 있다. 일 실시예에 있어서 부분 곱 생성 회로(452)는 부호 익스텐션(sign extension)과 함께 포텐셜 부분 곱들에 대응한 데이터를 생성할 수 있다.
일 실시예에 있어서 부분 곱 생성 회로(452)는 적어도 부분적으로 데이터(102)에 기초한 하나 이상의 포텐셜 부분 곱들에 대응한 데이터를 생성할 수 있다. 일 실시예에 있어서 부분 곱 생성 회로(452)는 데이터(102)를 수신하도록 연결될 수 있다. 일 실시예에 있어서 부분 곱 생성 회로(452)는 Booth(또는 변형된 Booth) 인코딩에 따라 포텐셜 부분 곱들에 대응한 데이터를 생성할 수 있다.
일 실시예에 있어서 부분 곱 생성 회로(452)는, 예컨대 전체 논리 0들에 대응한 데이터, 전체 논리 1들에 대응한 데이터, 제2 수에 대응한 데이터, 제2 수의 두 배에 대응한 데이터, 제2 수의 2의 보수에 대응한 데이터, 및/또는 제2 수의 두 배의 곱의 2의 보수에 대응한 데이터를 생성할 수 있다. 일 실시예에 있어서 부분 곱 생성 회로(452)는, 예컨대 16-비트 제2 수를 위한 부호 익스텐션과 함께, Booth(또는 변형된 Booth) 인코딩에 따라 예컨대 17-비트 포텐셜 부분 곱들을 생성할 수 있다.
일 실시예에 있어서 선택 회로(454)는 부분 곱 생성 회로(452)로부터 포텐셜 부분 곱을 선택하도록 연결될 수 있다. 일 실시예에 있어서 선택 회로(454)는 회로(110)로부터 출력된 인코딩된 데이터(111)에 적어도 부분적으로 기초하여 포텐셜 부분 곱을 선택할 수 있다. 일 실시예에 있어서 선택 회로(454)는 회로(110)로부터 출력된 인코딩된 데이터(111)의 선택 비트들 세트에 기초하여 포텐셜 부분 곱을 선택할 수 있다. 도 4에 도시된 바와 같이, 일 실시예에 있어서 선택 회로(454)는 회로(110)로부터 인코딩된 데이터(111)를 수신하도록 연결될 수 있다. 선택 회로(454)는 임의의 적합한 방식으로 부분 곱 생성 회로(452)로부터 포텐셜 부분 곱을 선택하기 위한 임의의 적합한 회로를 포함할 수 있다. 부분 곱 생성 회로(452)가 한번에 복수의 포텐셜 부분 곱들을 생성 및 출력할 수 있는 실시예에 있어서, 일 실시예의 선택 회로(454)는 그러한 출력으로부터 포텐셜 부분 곱들을 선택할 수 있다. 일 실시예에 있어서 선택 회로(454)는 적합한 멀티플렉싱 회로를 포함할 수 있다.
일 실시예에서, 부분 곱 생성 회로(partial product generation circuitry; 452)는 한 번에 데이터(102)에 대한 6개의 잠재적인 부분 곱들을 생성 및 출력할 수 있다: 모든 논리 0들에 대응되는 데이터, 모든 논리 1들에 대응되는 데이터, 제2 수에 대응되는 데이터, 제2 수의 두 배에 대응되는 데이터, 제2 수의 2의 보수(two's complement)에 대응되는 데이터, 및 제2 수 두 배의 곱의 2의 보수에 대응되는 데이터. 일 실시예에서, 선택 회로(454)는 이와 같이 출력된 잠재적인 부분 곱 하나를 인코딩된 데이터(111)에 기초하여 선택할 수 있다. 일 실시예에서, 인코딩된 데이터(111)는 6개의 선택 비트들의 세트를 포함할 수 있는데, 이 비트들 중 하나는 6개의 잠재적인 부분 곱들 중 하나를 선택하도록 나머지 비트들과 상이할 수 있다. 일 실시예에서, 인코딩된 데이터(111)는 6개의 잠재적인 부분 곱들 중 하나를 선택하도록 3개의 선택 비트들의 세트를 포함할 수 있다.
일 실시예에서, 회로(140)는 도 4에 도시된 바와 같이, 부분 곱 감소 회로(partial product reduction circuitry; 456) 및 가산기(adder; 458)를 포함할 수 있다.
일 실시예에서, 부분 곱 감소 회로(456)는 부분 곱들을 압축할 수 있다. 일 실시예에서, 부분 곱 감소 회로(456)는 선택 회로(454)로부터 선택된 부분 곱들을 수신하도록 연결될 수 있다. 부분 곱 감소 회로(456)는 임의의 적당한 비트-길이의 부분 곱들을 임의의 적당한 방식으로 압축하여 임의의 적당한 비트-길이의 임의의 적당한 출력들을 생성하는 임의의 적당한 회로를 포함할 수 있다. 일 실시예에서, 부분 곱 감소 회로(456)는 부분 곱들을 압축하여 캐리-저장 포맷(carry-save format)으로 출력들을 생성할 수 있다. 일 실시예에서, 제1 수에 대해 인코딩된 데이터(111)는, 예컨대 선택 회로(454)를 이용하여 8개의 부분 곱들을 선택하기 위한 선택 비트들의 8개의 세트들을 포함하고, 부분 곱 감소 회로(456)는 8개의 부분 곱들을 압축하여 2개의 출력들을 생성할 수 있다. 일 실시예에서, 부분 곱 감소 회로(456)는, 예컨대 8개의 17-비트 부분 곱들을 압축하여 예컨대, 2개의 32-비트 출력들을 생성할 수 있다.
일 실시예에서, 가산기(458)는 부분 곱 감소 회로(456)의 출력들을 가산하여 곱(103)을 생성할 수 있다. 일 실시예에서, 가산기(458)는 부분 곱 감소 회로(456)로부터 출력들을 수신하도록 연결될 수 있다. 가산기(458)는 임의의 적당한 방식으로 임의의 적당한 비트-길이의 출력들을 가산하여 임의의 적당한 비트-길이의 임의의 적당한 형태로 곱(103)을 생성하는 임의의 적당한 회로를 포함할 수 있다. 일 실시예에서, 가산기(458)는 캐리 전달 가산기(carry propagate adder)가 될 수 있다. 일 실시예에서, 가산기(458)는 출력들을 가산하여 2의 보수 형태로 곱(103)을 생성할 수 있다. 일 실시예에서, 가산기(458)는 예컨대, 부분 곱 감소 회로(456)로부터의 32-비트 출력들을 가산하여, 예컨대, 32-비트 곱(103)을 생성할 수 있다.
데이터 인코딩 회로(DATA ENCODING CIRCUITRY)
일 실시예에서, 회로(110)는 제1 수에 대응되는 데이터를 인코딩하고, 이후 사용을 위해 어드레스 가능 위치에 인코딩된 데이터를 저장하는 인코딩 회로를 포함할 수 있다. 일 실시예에서, 회로(110)는 임의의 적당한 방식으로 데이터를 인코딩하는 임의의 적당한 인코딩 회로를 포함할 수 있다.
회로(110)는 임의의 적당한 소스로부터 제1 수에 대응되는 데이터를 수신하도록 연결될 수 있다. 이러한 데이터는 임의의 적당한 비트-길이를 가질 수 있다. 일 실시예에서, 회로(110)는 도 5에 도시된 바와 같이, 제어 회로(130)로부터의 제1 수에 대응되는 데이터(501)를 수신하도록 연결될 수 있다. 제어 회로(130)는 데이터(501)의 출력을 임의의 적당한 방식으로 회로(110)에로 제어하는 임의의 적당 한 회로를 포함할 수 있다. 일 실시예에서, 제어 회로(130)는 하나 이상의 레지스터들에 데이터(501)를 저장할 수 있다.
일 실시예에서, 제어 회로(130)는 또한 제1 수에 대응되는 인코딩된 데이터가 저장될 수 있는 위치를 어드레스하는 어드레스(101)를 회로(110)로 출력할 수 있다. 일 실시예에서, 제어 회로(130)는 어드레스(101) 및 데이터(501)를 동일한 클럭 엣지(clock edge) 상에서 이용가능하도록 출력할 수 있다. 일 실시예에서, 제어 회로(130)는 어드레스(101) 및/또는 데이터(501)를 출력하는 프로그램가능한 로직을 포함할 수 있다. 일 실시예에서, 제어 회로(130)는 명령(instruction)에 응답하여 명령을 실행하도록 어드레스(101) 및/또는 데이터(501)를 출력할 수 있다.
일 실시예에서, 회로(110)는 도 5에 도시된 바와 같이, 데이터(501)를 인코딩하기 위하여 데이터(501)를 수신하도록 연결된 인코딩 회로(560)를 포함할 수 있다. 인코딩 회로(560)는 임의의 적당한 방식으로 데이터(501)를 인코딩하고, 어드레스 가능 위치로 인코딩된 데이터를 출력하는 임의의 적당한 회로를 포함할 수 있다. 일 실시예에서, 회로(110)는 도 5에 도시된 바와 같이, 메모리(522)를 포함할 수 있고, 인코딩 회로(560)는 메모리(522)에 인코딩된 데이터를 저장하기 위해 인코딩된 데이터를 메모리(522)로 출력하도록 연결될 수 있다. 일 실시예에서, 메모리(522)는 일반적으로 도 3의 메모리(322)에 대응될 수 있다.
일 실시예에서, 회로(110)는 도 5에 도시된 바와 같이, 메모리(522)로 인코딩된 데이터를 기록하고 및/또는 메모리(522)로부터 인코딩된 데이터를 판독하도록 어드레스를 수신하고 수신된 어드레스의 적어도 일부를 디코딩하도록 연결되는 어드레스 디코더(524)를 포함할 수 있다. 또 하나의 다른 일 실시예에서, 회로(110)는 어드레스 디코더(524)를 포함하지 않을 수 있고, 수신된 어드레스를 이용하여 바로 메모리(522)를 어드레스할 수 있다.
일 실시예에서, 회로(110)는 도 5에 도시된 바와 같이, 회로(140)로 인코딩된 데이터를 출력하는 버퍼 회로(526)를 포함할 수 있다. 버퍼 회로(526)는 메모리(522)로부터 인코딩된 데이터를 수신하여 임의의 적당한 방식으로 인코딩된 데이터를 저장 및/또는 출력하도록 연결되는 임의의 적당한 회로를 포함할 수 있다. 일 실시예에서, 버퍼 회로(526)는 또한 인코딩 회로(560)로부터 인코딩된 데이터를 수신하도록 연결되는 임의의 적당한 회로를 포함할 수 있다. 일 실시예에서, 버퍼 회로(526)는 회로(140)로 제1 수에 대응되는 인코딩된 데이터의 일부들을 연속으로 출력할 수 있다. 일 실시예에서, 버퍼 회로(526)는 제1 수에 대응되는 모든 인코딩된 데이터를 한꺼번에 회로(140)로 출력할 수 있다.
일 실시예에서, 제어 회로(130)는 제1 수의 인코딩된 데이터가 회로(140)로의 출력을 위한 어드레스 가능 위치에 아직 저장되어 있지 않은 경우, 그 제1 수에 대응되는 데이터(501) 및 어드레스(101) 양자 모두를 출력할 수 있다. 일 실시예에서, 제어 회로(130)는 다음, 회로(110)가 데이터(501)를 인코딩하고 곱으로 인코딩된 데이터를 어드레스(101)에 대응되는 위치에 저장하도록 제어할 수 있다. 일 실시예에서, 제어 회로(130)는 동일한 제1 수의 후속 사용을 위하여, 그 제1 수에 대응되는 어드레스(101)를 출력하고, 회로(110)를 제어하여 어드레스(101)에 대응 되는 위치로부터 이전에 인코딩된 데이터를 출력할 수 있다. 이러한 방식으로 회로(110)는, 일 실시예에서 부분 곱 감소를 위해 동일한 데이터를 반복적으로 인코딩하는 것을 회피 또는 감소하는데 사용될 수 있다. 제어 회로(130)는 제1 수에 대응되는 인코딩된 데이터가 회로(140)로의 출력을 위한 어드레스 가능 위치에 이전에 저장되어 있는지 아닌지를 추적하는 임의의 적당한 회로를 포함할 수 있다.
도 6은 일 실시예에 따라, 인코딩된 데이터를 출력하는 흐름도(600)를 도시한다.
블록(602)에서, 제어 회로(130)가 회로(140)로의 출력을 위한 어드레스 가능 위치에 제1 수에 대응되는 인코딩된 데이터가 아직 저장되지 않은 것으로 식별한 경우, 블록(604)에서 제어 회로(130)는 제1 수에 대응되는 데이터 및 어드레스 양자를 모두 출력할 수 있고, 블록(606)에서 제어 회로(130)는 회로(110)를 제어하여 이 데이터를 인코딩하고, 곱으로 인코딩된 데이터를 어드레스에 대응되는 위치에 저장할 수 있다. 블록(608)에서, 회로(110)는 곱으로 인코딩된 데이터를 바로 회로(140)로 출력하거나 또는 어드레스 가능 위치로부터 회로(140)로 출력할 수 있다.
블록(602)에서, 제어 회로(130)가 회로(140)로의 출력을 위한 어드레스 가능 위치에 제1 수에 대응되는 인코딩된 데이터가 이전에 저장된 것으로 식별한 경우, 블록(610)에서 제어 회로(130)는 제1 수에 대응되는 어드레스를 출력할 수 있고, 블록(612)에서 제어 회로(130)는 회로(110)를 제어하여 이전에 인코딩 데이터를 어드레스에 대응되는 위치로부터 회로(140)로 출력할 수 있다.
곱 실시예에 있어서, 부호화 회로(560)는 임의의 적절한 방식으로의 부분적 곱(product) 감소를 위하여 임의의 적절한 비트-길이의 데이터(501)를 인코딩하고 임의의 적절한 크기의 인코딩된 데이터를 생성하여 출력하기 위하여 임의의 적절한 회로를 포함할 수 있다. 일 실시예에 있어서, 데이터(501)는 16 비트 길이를 가질 수 있다. 일 실시예에 있어서, 인코딩 회로(560)는 임의의 적절한 비트 길이의 데이터(501)를 인코딩하고 임의의 적절한 개수의 선택 비트들의 임의의 적절한 개수의 세트를 포함하는 부화화된 데이터를 생성하고 출력하기 위하여 임의의 적절한 회로를 포함할 수 있다.
도 7에 도시된 바와 같은 일 실시예에 따른 인코딩 회로(560)는 임의의 비트-길이의 데이터(501)를 수신하고, 예를 들어 부스 인코딩 또는 수정 부스 인코딩(예를 들어, radix-4 부스 (또는 수정된 부스))을 사용하여 데이터(501)를 인코딩하고, 임의의 적절한 크기의 인코딩된 데이터를 생성 및 출력하기 위하여 연결된 회로(762)를 포함할 수 있다. 일 실시예에 따른 회로(762)는 16 비트 길이의 데이터(501)를 인코딩하고, 48 비트 길이(즉, 6개 선택 비트의 8개 세트)의 인코딩된 데이터를 생성하기 위하여 radix-4 부스(또는 수정 부스) 인코딩을 사용할 수 있다.
도 7에 도시된 바와 같은 일 실시예에 따른 인코딩 회로(560)는 선택적으로 회로(762)로부터 임의의 적절한 크기의 인코딩된 데이터를 수신하고, 이러한 인코딩된 데이터를 임의의 적절한 방식으로 추가적으로 인코딩하고, 임의의 적절한 크기의 인코딩된 데이터를 생성 및 출력하기 위하여 연결된 회로(764)를 포함할 수 있다. 일 실시예에 따른 회로(764)는 인코딩된 데이터를 압축하는 것을 돕기 위ㅎ하여 임의의 적절한 회로를 포함할 수 있다. 일 실시예에 따른 회로(764)는 LZD(Leading Zeros Detection) 또는 수정 LZD를 사용하여 이미 인코딩된 데이터를 인코딩할 수 있다. 일 실시예에 따른 회로(764)는 6개 선택 비트의 8개 세트를 갖되 각 세트에 있어서 하나의 비트만이 해당 세트의 다른 비트들과 다른(예를 들어, 위 세트 내의 유일한 1 로직 1 비트) 인코딩된 데이터를 인코딩하고, 총 24 비트의 인코딩된 데이터에 대해 3개 인코딩된 선택 비트의 8개 세트를 생성하기 위하여 LZD 또는 수정 LZD를 사용할 수 있다.
일 실시예에 따른 회로(764)는 3개 인코딩된 선택 비트의 세트를 생성하기 위해 하나의 로직 하나의 비트만 갖는 6개 선택 비트의 세트를 인코딩하기 위하여 도 8에 도시된 바와 같이 회로(864)를 포함할 수 있다. 도 8에 도시된 바와 같이, 회로(864)는 OR 게이트들(866,867,868)의 기능을 구형하기 위하여 임의의 적절한 회로를 포함할 수 있다. OR 게이트(866)는 6개의 선택 비트 중 최하위 비트(least significant bit), 최하위에서 3번째 비트(3rd least significant bit) 및 최상위에서 두번째 비트(2nd most significant bit)를 입력으로 가지며, 이는 3개의 인코딩된 선택 비트의 세트 중 최하위 비트를 출력하기 위함이다. OR 게이트(867)는 6개의 선택 비트 중 최하위에서 3번째 비트(3rd least significant bit) 및 최상위에서 3번째 비트(3rd most significant bit)를 입력으로 가지며, 이는 3개의 인코딩된 선택 비트의 세트 중 최하위에서 2번째 비트를 출력하기 위함이다. OR 게이트(868)는 6개의 선택 비트 중 최하위에서 2번째 및 3번째 비트(2nd and 3rd least significant bit)를 입력으로 가지며, 이는 3개의 인코딩된 선택 비트의 세트 중 최상위 비트(most significant bit)를 출력하기 위함이다.
일 실시예에 따른 인코딩 회로(560)는 선택적으로 회로(764)를 포함하지 않거나 사용하지 않고 인코딩된 데이터를 직접 회로(762)로부터 출력할 수 있다.
일 실시예에 따른 회로(110)는 어드레스 가능 위치(addressable location)로부터의 첫번째 숫자에 대응하는 이미 인코딩된 데이터를 그 동일한 첫 번째 숫자에 대응되는 데이터를 인코딩하는 것보다 상대적으로 빠르게 출력하도록 설계될 수 있다. 일 실시예에 따른 회로(110)는 그리고 곱(product) 생성의 속도 성능을 돕도록 사용될 수 있다.
일 실시예에 따른 회로(110)는 어드레스할 수 있는 위치로부터의 첫번째 숫자에 대응하는 이미 인코딩된 데이터를 그 동일한 첫 번째 숫자에 대응되는 데이터를 인코딩하는 것보다 상대적으로 적은 전력을 소모 및/또는 열을 발산하도록 설계될 수 있다. 일 실시예에 따른 회로(110)는 그리고 전력 소모 및/또는 열 발산을 줄이는 것을 돕도록 사용될 수 있다.
예시 시스템(EXAMPLE SYSTEM)
도 1의 회로(100)는 임의의 적절한 목적을 위해서, 임의의 적절한 환경 아래서 어드레스 가능 위치로부터의 인코딩된 데이터에 적어도 부분적으로 기초하여 곱(product)을 생성하는데 사용될 수 있다.
도 9는 어드레스 가능 위치로부터의 인코딩된 데이터에 적어도 부분적으로 기초하여 곱을 생성하기 위한 회로(100)를 갖는 하나 또는 그 이상의 승수 회로(multiplier circuits)(912)를 갖는 프로세서(910)를 포함하는 예시 시스템(900)을 도시한다. 일 실시예에 따른 프로세서(910)는 DSP(Digital Signal Processing) 응용(예를 들어, FIR(Finite Impulse Response) 필터들, IIR(Ininite Impulse Response) 필터들, DCT(Discrete Consine Transform) 및/또는 FFT(Fast Fourier Transform))의 수행을 돕기 위하여, 예를 들어 하나 또는 그 이상의 승수 회로(912)를 사용할 수 있다.
다른 실시예에 따른 시스템(900)은 복수의 프로세서를 포함할 수 있으며, 이 중 하나 또는 그 이상이 유사하게 하나 또는 그 이상의 승수 회로를 가질 수 있다.
일 실시예에 따른 프로세서(910)는 하나 또는 그 이상의 전력 공급기(902)로부터 전력을 수신하도록 연결될 수 있다. 일 실시예에 따른 전력 공급기(들)(902)은 하나 또는 그 이상의 에너지 셀들(예를 들어 배터리 및/또는 연료 셀)을 포함할 수 있다. 일 실시예에 따른 전력 공급기(들)(902)은 AC-DC 변환기를 포함할 수 있다. 일 실시예에 따른 전력 공급기(들)(902)은 DC-DC 변환기를 포함할 수 있다.
일 실시예에 따른 시스템(900)은 또한 프로세서(910)에 연결된 칩셋(920), 칩셋(920)에 연결된 BIOS(Basic Input Output System) 메모리(930), 칩셋(920)에 연결된 휘발성 메모리(940), 칩셋(920)에 연결된 비휘발성 메모리 및/또는 저장 장치(들)(950), 칩셋(920)에 연결된 디스플레이(970), 칩셋(920)에 연결된 하나 또는 그 이상의 통신 인터페이스들(980) 및/또는 칩셋(920)에 연결된 하나 또는 그 이상의 다른 입출력(I/O) 장치들(990)을 포함할 수 있다.
일 실시예에 따른 칩 셋(920)은 프로세서(910) 및/또는 칩셋(920)과 통신하는 임의의 적절한 장치 또는 부품과의 임의의 적절한 통신 링크를 제공하기 위하여 임의의 적절한 인터페이스 제어기들을 포함할 수 있다.
일 실시예에 따른 칩 셋(920)은 BIOS 메모리(930)에 인터페이스를 제공하기 위하여 펌웨어 제어기를 포함할 수 있다. BIOS 메모리(930)는 시스템(900)을 위한 임의의 적절한 시스템 및/또는 비디오 BIOS 소프트웨어를 저장하는데 사용될 수 있다. BIOS 메모리(930)는 예를 들어 임의의 적절한 플래쉬 메모리와 같은 임의의 적절한 비휘발성 메모리를 포함할 수 있다. 일 실시예에 따른 BIOS 메모리(930)는 대안적으로 칩셋(920)에 포함될 수 있다.
일 실시예에 따른 칩 셋(920)은 휘발성 메모리(940)에 인터페이스를 제공하기 위하여 하나 또는 그 이상의 메모리 제어기를 포함할 수 있다. 휘발성 메모리(940)는 예를 들어 시스템(900)을 위한 데이터 및/또는 명령어들을 로드 및 저장하는데 사용될 수 있다. 휘발성 메모리(940)는 예를 들어 적절한 DRAM(Dynamic Random Access Memory)와 같은 임의의 적절한 휘발성 메모리를 포함할 수 있다.
일 실시예에 따른 칩 셋(920)은 디스플레이(970)에 인터페이스를 제공하기 위하여 그래픽 제어기를 포함할 수 있다. 디스플레이(970)는 예를 들어 CRT(Cathod Ray Tube) 또는 LCD(Liquid Crystal Display)와 같은 임의의 적절한 디스플레이를 포함할 수 있다. 일 실시예에 따른 그래픽 제어기는 대안적으로 칩셋(920)의 외부에 있을 수 있다.
일 실시예에 따른 칩 셋(920)은 비휘발성 메모리 및/또는 저장 장치(들 )(950), 입력 장치(들)(960), 통신 인터페이스(들)(980) 및/또는 I/O 장치들(990)에 인터페이스를 제공하기 위하여 하나 또는 그 이상의 입출력(I/O) 제어기를 포함할 수 있다.
비휘발성 메모리 및/또는 저장장치(들)(950)은 예를 들어 데이터 및/또는 명령어들을 저장하는데 사용될 수 있다. 비휘발성 메모리 및/또는 저장 장치(들)(950)은 임의의 적절한 비휘발성 메모리(예를 들어 플래시 메모리)를 포함할 수 있으며, 임의의 적절한 비휘발성 저장 장치(들)(예를 들어, 하나 또는 그 이상의 하드 디스크 드라이브들(HDD), 하나 또는 그 이상의 CD(Compact disc) 드라이브들, 및/또는 하나 또는 그 이상의 DVD(Digital Versatile disc) 드라이브들)을 포함할 수 있다.
입력 장치(들)(960)에는 키보드, 마우스 및/또는 임의의 다른 적절한 커서 제어 장치와 같은 임의의 적절한 입력 장치(들)이 포함될 수 있다.
통신 인터페이스(들)(980)는 하나 이상의 네트워크를 통해 통신하기 위해 시스템(900)을 위한 인터페이스 및/또는 임의의 다른 적절한 장치를 제공할 수 있다. 통신 인터페이스(들)(980)는 임의의 적절한 하드웨어 및/또는 펌웨어를 포함할 수 있다. 일 실시예에 대한 통신 인터페이스(들)(980)는, 예컨대 네트워크 어댑터, 무선 네트워크 어댑터, 전화 모뎀 및/또는 무선 모뎀을 포함할 수 있다. 무선 통신을 위해서, 일 실시예에 대한 통신 인터페이스(들)(980)는 하나 이상의 안테나(982)를 사용할 수 있다.
입/출력 장치(들)(990)는, 예컨대 사운드에 대응하는 디지털 신호로 변환하 도록 돕는, 그리고/또는 디지털 신호에 대응하는 사운드로 변환하도록 돕는 오디오 장치, 카메라, 캠코더, 프린터 및/또는 스캐너와 같은 임의의 적절한 입/출력 장치(들)를 포함할 수 있다.
칩셋(920) 내에 존재하는 것으로 설명되었지만, 칩셋(920)의 하나 이상의 제어기가 프로세서(910)와 함께 집적되어 프로세서(910)가 하나 이상의 장치 또는 콤포넌트와 직접 통신하도록 할 수 있다. 일 예로서, 일 실시예에 대한 하나 이상의 메모리 제어기가 프로세서(910)와 함께 집적되어, 프로세서(910)가 휘발성 메모리(940)와 직접 통신하도록 할 수 있다.
전술한 설명에서, 실시예들이 설명되었다. 첨부된 특허청구범위의 범위를 벗어나지 않으면서 다양한 변형 및 변경이 상기 실시예들에 이루어질 수 있다. 따라서 상세한 설명 및 도면은 제한적이라기보다는 예시적인 의미로 간주되어야 한다.
실시예들은 예시의 목적으로 도시되는 것이지, 첨부된 도면의 값들에 한정되지 않으며, 동일한 참조 보호는 동일한 요소를 지시한다.
도 1은 일 실시예에 따라서, 어드레스 가능 위치로부터 인코딩된 데이터에 적어도 부분적으로 기반해서 곱을 생성하는 회로의 블록도를 도시한다.
도 2는 일 실시예에 따라서, 어드레스 가능 위치로부터 인코딩된 데이터에 적어도 부분적으로 기반해서 곱을 생성하는 회로의 흐름도를 도시한다.
도 3은 일 실시예에 따라서, 어드레스 가능 위치로부터 인코딩된 데이터를 출력하는 회로의 블록도를 도시한다.
도 4는 일 실시예에 따라서, 제1 수에 해당하는 인코딩된 데이터 및 제2 수에 해당하는 데이터에 적어도 부분적으로 기초해서 곱을 생성하는 회로의 블록도를 도시한다.
도 5는 일 실시예에 따라서, 데이터를 인코드해서 어드레스 가능 위치에 저장하기 위한 회로의 블록도를 도시한다.
도 6은 일 실시예에 따라서, 인코딩된 데이터를 출력하는 흐름도를 도시한다.
도 7은 일 실시예에 따라서, 도 5의 블록도를 위한 인코딩 회로를 도시한다.
도 8은 일 실시예에 따라서, 도 7의 블록도를 위한 LZD(leading zeros detection)를 수행하기 위한 회로를 도시한다.
도 9는 일 실시예에 따라서, 어드레스 가능 위치로부터의 인코딩된 데이터에 적어도 부분적으로 기초하여 곱을 생성하는 회로를 가지는 프로세서를 포함하는 예시적 시스템의 블록도이다.
본 도면들의 수치들은 반드시 척도에 맞게 그려진 것이 아니다.

Claims (15)

  1. 제1 수에 대응하는 어드레스에 적어도 부분적으로 기초하여 어드레스 가능(addressable) 위치로부터 인코딩된 데이터를 출력하기 위한 수단 - 상기 인코딩된 데이터는, 상기 제1 수에 대응하고 부분 곱 감소를 위해 인코딩되는, 데이터에 적어도 부분적으로 기초함 -; 및
    상기 인코딩된 데이터와 제2 수에 대응하는 데이터에 적어도 부분적으로 기초하여 곱을 생성하기 위한 수단
    을 포함하는 장치.
  2. 제1항에 있어서,
    인코딩된 데이터를 출력하기 위한 상기 수단은 다른 수들에 대응하는 인코딩된 데이터를 저장하기 위한 수단을 포함하는 장치.
  3. 제1항 또는 제2항에 있어서,
    인코딩된 데이터를 출력하기 위한 상기 수단은 한 수에 대응하는 데이터를 인코딩하기 위한 수단을 포함하는 장치.
  4. 제3항에 있어서,
    데이터를 인코딩하기 위한 상기 수단은 부스(Booth) 또는 수정된 부 스(modified Booth) 인코딩을 사용하기 위한 수단을 포함하는 장치.
  5. 제3항 또는 제4항에 있어서,
    데이터를 인코딩하기 위한 상기 수단은 선행 영 검출(leading zeroes detection; LZD) 또는 수정된 LZD를 사용하기 위한 수단을 포함하는 장치.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    곱을 생성하기 위한 상기 수단은 상기 제2 수에 대응하는 데이터를 위해 다른 포텐셜 부분 곱들(potential partial products)에 대응하는 데이터를 생성하기 위한 수단을 포함하는 장치.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    적어도 일부에서 인코딩된 데이터에 기초하는 부분 곱을 선택하기 위한 수단을 포함하는 장치.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    곱을 생성하기 위한 상기 수단은 부분 곱들을 압축하기 위한 수단을 포함하는 장치.
  9. 제8항에 있어서,
    곱을 생성하기 위한 상기 수단은 부분 곱들을 압축하기 위한 상기 수단으로부터의 출력물을 추가하기 위한 수단을 포함하는 장치.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 제1 수는 승수(multiplier)이고 상기 제2 수는 피승수(multiplicand)인 장치.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    하나 이상의 에너지 셀과, 하나 이상의 에너지 셀로부터 전력을 받도록 연결된 프로세서와 조합되며, 상기 프로세서는 인코딩된 데이터를 출력하기 위한 상기 수단과 곱을 생성하기 위한 상기 수단을 갖는 장치.
  12. 적어도 일부에서 제1 수에 대응하는 어드레스에 기초하여 어드레스 가능(addressable) 위치로부터 인코딩된 데이터를 출력하는 단계 - 상기 인코딩된 데이터는 적어도 일부에서 상기 제1 수에 대응하고 부분 곱 감소를 위해 인코딩되는 데이터에 기초함 -; 및
    적어도 일부에서 상기 인코딩된 데이터와 제2 수에 대응하는 데이터에 기초하는 곱을 생성하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 출력하는 단계는 상기 제1 수에 대응하는 상기 어드레스에 적어도 부분적으로 기초하여 메모리로부터 인코딩된 데이터를 읽어들이는 단계를 포함하는 방법.
  14. 제12항 또는 제13항에 있어서,
    한 수에 대응하는 데이터를 인코딩하는 단계
    를 포함하는 방법.
  15. 제14항에 있어서,
    상기 인코딩하는 단계는 부스(Booth) 또는 수정된 부스(modified Booth) 인코딩을 사용하는 단계를 포함하는 방법.
KR1020070098167A 2006-09-29 2007-09-28 어드레스 가능 위치로부터의 인코딩된 데이터에 기반한승수 곱 생성 KR100958965B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/540,346 2006-09-29
US11/540,346 US8078662B2 (en) 2006-09-29 2006-09-29 Multiplier product generation based on encoded data from addressable location

Publications (2)

Publication Number Publication Date
KR20080029906A true KR20080029906A (ko) 2008-04-03
KR100958965B1 KR100958965B1 (ko) 2010-05-20

Family

ID=39319489

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070098167A KR100958965B1 (ko) 2006-09-29 2007-09-28 어드레스 가능 위치로부터의 인코딩된 데이터에 기반한승수 곱 생성

Country Status (2)

Country Link
US (1) US8078662B2 (ko)
KR (1) KR100958965B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9354843B2 (en) 2012-02-29 2016-05-31 Samsung Electronics Co., Ltd. Apparatus and method for generating partial product for polynomial operation

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7477171B2 (en) 2007-03-27 2009-01-13 Intel Corporation Binary-to-BCD conversion
EP3480710A1 (en) * 2017-11-03 2019-05-08 Nokia Technologies Oy Computer architectures and instructions for multiplication

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6301599B1 (en) * 1999-03-29 2001-10-09 Sony Corporation Of Japan Multiplier circuit having an optimized booth encoder/selector
US6446104B1 (en) * 1999-09-15 2002-09-03 Sun Microsystems, Inc. Double precision floating point multiplier having a 32-bit booth-encoded array multiplier
US6571269B1 (en) * 1999-12-30 2003-05-27 Intel Corporation Noise-tolerant digital adder circuit and method
US7188134B2 (en) * 2001-09-28 2007-03-06 Intel Corporation High-performance adder
US20030158880A1 (en) * 2002-02-13 2003-08-21 Ng Kenneth Y. Booth encoder and partial products circuit
JP4177125B2 (ja) 2003-01-22 2008-11-05 三菱電機株式会社 演算装置及び演算装置の演算方法
US7131055B2 (en) * 2003-02-25 2006-10-31 Intel Corporation Fast bit-parallel Viterbi decoder add-compare-select circuit
US20040220994A1 (en) * 2003-04-30 2004-11-04 Intel Corporation Low power adder circuit utilizing both static and dynamic logic
US20040220993A1 (en) * 2003-04-30 2004-11-04 Intel Corporation Low power adder
US7272624B2 (en) * 2003-09-30 2007-09-18 International Business Machines Corporation Fused booth encoder multiplexer
US7325024B2 (en) * 2003-12-04 2008-01-29 Intel Corporation Adder circuit with sense-amplifier multiplexer front-end
KR20050081407A (ko) 2004-02-13 2005-08-19 삼성전자주식회사 부스 알고리즘을 이용한 곱셈기의 인코더
US7380099B2 (en) * 2004-09-30 2008-05-27 Intel Corporation Apparatus and method for an address generation circuit
US7509368B2 (en) * 2005-05-09 2009-03-24 Intel Corporation Sparse tree adder circuit
US7693925B2 (en) * 2005-09-30 2010-04-06 Intel Corporation Multiplicand shifting in a linear systolic array modular multiplier
US20070233760A1 (en) * 2006-03-29 2007-10-04 Sanu Mathew 3:2 Bit compressor circuit and method
US7693926B2 (en) * 2006-03-30 2010-04-06 Intel Corporation Modular multiplication acceleration circuit and method for data encryption/decryption
US20070299902A1 (en) * 2006-06-26 2007-12-27 Kumashikar Mahesh K Sparse tree adder

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9354843B2 (en) 2012-02-29 2016-05-31 Samsung Electronics Co., Ltd. Apparatus and method for generating partial product for polynomial operation

Also Published As

Publication number Publication date
US8078662B2 (en) 2011-12-13
US20080098278A1 (en) 2008-04-24
KR100958965B1 (ko) 2010-05-20

Similar Documents

Publication Publication Date Title
US10298385B2 (en) Homomorphic processing unit (HPU) for accelerating secure computations under homomorphic encryption
US9411726B2 (en) Low power computation architecture
US20180341484A1 (en) Tensor Processor Instruction Set Architecture
JPH10187438A (ja) 乗算器の入力に対する遷移を減少させる方法
WO2019205617A1 (zh) 一种矩阵乘法的计算方法及装置
CN113853601A (zh) 用于矩阵运算的装置和方法
US20210232205A1 (en) Reducing power consumption in a neural network environment using data management
JP2020129373A (ja) メモリ装置およびそれを用いたコンピューティング装置
JP2006146644A (ja) プロセッサ
KR100958965B1 (ko) 어드레스 가능 위치로부터의 인코딩된 데이터에 기반한승수 곱 생성
JP2000148730A (ja) 内積ベクトル演算装置
US9600236B2 (en) Systems and methods for computing mathematical functions
US11500962B1 (en) Emulating fine-grained sparsity in a systolic array
US20100199067A1 (en) Split Vector Loads and Stores with Stride Separated Words
TW394895B (en) LNS-based computer processor and method of use thereof
EP3358460B1 (en) Systems and methods for computing mathematical functions
CN111158757B (zh) 并行存取装置和方法以及芯片
CN114510217A (zh) 处理数据的方法、装置和设备
CN113536221B (zh) 运算方法、处理器以及相关产品
US20050010632A1 (en) Digital signal processor based on jumping floating-point arithmetic
Hwang et al. A novel MDCT/IMDCT computing kernel design
Khan et al. High performance discrete cosine transform operator using multimedia oriented subword parallelism
US20050160122A1 (en) Joint adaptive fixed-point representation and related arithmetic and processor thereof
TWI808000B (zh) 矩陣裝置及其操作方法
US20230133360A1 (en) Compute-In-Memory-Based Floating-Point Processor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130503

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 10