KR20120040197A - 콤팩트한 산술 처리 구성요소를 이용한 처리 - Google Patents

콤팩트한 산술 처리 구성요소를 이용한 처리 Download PDF

Info

Publication number
KR20120040197A
KR20120040197A KR1020127001525A KR20127001525A KR20120040197A KR 20120040197 A KR20120040197 A KR 20120040197A KR 1020127001525 A KR1020127001525 A KR 1020127001525A KR 20127001525 A KR20127001525 A KR 20127001525A KR 20120040197 A KR20120040197 A KR 20120040197A
Authority
KR
South Korea
Prior art keywords
lphdr
arithmetic
operations
values
processing
Prior art date
Application number
KR1020127001525A
Other languages
English (en)
Other versions
KR101235997B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=43355205&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20120040197(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 싱귤라 컴퓨팅, 엘엘씨 filed Critical 싱귤라 컴퓨팅, 엘엘씨
Publication of KR20120040197A publication Critical patent/KR20120040197A/ko
Application granted granted Critical
Publication of KR101235997B1 publication Critical patent/KR101235997B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • 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/5235Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Nonlinear Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Multi Processors (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

프로그램 가능 및/또는 대량의 병렬 프로세서 또는 다른 장치와 같은 프로세서 또는 다른 장치는 정밀도는 낮지만 동적 범위가 높은 (“LPHDR 연산”)의 수치들에 대해 산술 연산(반드시는 아니지만 예를 들어, 덧셈, 곱셈, 뺄셈 그리고 나눗셈들 중 하나 이상을 포함)을 수행하도록 설계된 처리 구성요소를 포함한다. 이러한 프로세서 또는 다른 장치는 예를 들어 단일 칩으로 구현될 수 있다. 단일 칩으로 구현되든지 간에, 본 발명의 특정 실시예에서 프로세서 또는 장치에서 LPHDR 산술 구성요소들의 수는 만일 있다면, 전통적인 정밀도의 높은 동적 범위 연산(32비트 또는 64비트 부동 소수점 연산과 같은)을 수행하도록 설계된 프로세서 또는 다른 장치들에서 산술 구성요소의 개수를 상당히 초과(3배보다 적어도 20만큼 초과)한다.

Description

콤팩트한 산술 처리 구성요소를 이용한 처리 {Processing with compact arithmetic processing element}
본 발명은 연산력을 효율적으로 제공하는 것에 관한 것으로, 보다 상세하게는 계산(산술 연산과 같은)을 수행하도록 저정밀 고동적범위(LPHDR) 처리 구성요소들을 이용하는 컴퓨터 프로세서 또는 다른 장치들에 관한 것이다.
빠르게 계산하는 능력은 인류에게 대단히 중요해졌다. 날씨와 기후 예측, 의학적 적용 (약물 디자인 및 비침습 영상), 국방, 지질학 탐사, 재정 모델, 인터넷 검색, 네트워크 통신, 다양한 분야에서 과학적 연구, 및 새로운 연산 하드웨어의 설계조차 모두 많은 양의 계산을 빠르게 수행할 수 있는 능력에 의존하게 되었다. 복잡한 나노 크기의 시스템들의 컴퓨터-도움 설계와 같은 진행 또는 보고, 듣고 이해하는 소비재의 개발은 보다 더 큰 연산력의 경제적 해방을 필요로 한다.
고든 무어(Gordon Moore)의 예언, 달러 당 연산 성능은 2년마다 두 배가 될 것이라는 예언은 30년 이상 유효한 것으로 판명되었고 이러한 형태를 계속 유지할 것으로 보인다. 그러나, 이러한 기하급수적인 개선에도 불구하고, 현실은 실리콘으로부터 유용한 고유의 연산력은 소프트웨어에 이용할 수 있도록 만들어지는 것보다 더 빠르게 성장해왔다. 달리 말하면, 연산 하드웨어의 이론적인 연산력이 기하급수적으로 성장해왔음에도, 소프트웨어가 하드웨어에 접속하도록 요구되는 인터페이스들은 하드웨어의 이론적인 최대 연산력에 도달하는 어떤 것이든 연산을 수행하도록 하드웨어를 이용하는 소프트웨어의 능력을 제한한다.
대략 1GHz의 클럭의, 약 10억 개의 트랜지스터들을 포함하는 요즈음의 실리콘 마이크로프로세서 칩을 생각하자. 각 사이클에서 대략 하나의 유용한 산술 연산을 소프트웨어에 전달하며 칩은 동작한다. 예를 들어, 레지스터들 사이에서 하나의 값이 전달될 것이고, 다른 값은 증가되며, 아마도 곱셈이 이루어진다. 이는 클럭 속도가 오늘날 천 배 정도 빨라졌음에도 불구하고, 무섭게도 30년 전에 칩들이 한 것과 다르지 않다.
실제 컴퓨터들은 물리적인 장치들로 만들어지고, 기계들로부터 만들어지는 내재하는 물리학은 종종 복잡하고 흥미로운 작용을 나타낸다. 예를 들어, 실리콘 금속 산화막 반도체 전계 효과 트랜지스터(MOSFET)는 누승법과 같은 흥미로운 비선형 연산들을 수행할 수 있는 장치이다. 두 전선들의 연결은 회로를 추가할 수 있다. 적절히 구성된다면, 10억 개의 트랜지스터 및 전선들은 기본 부품들의 약간의 전달 지연 내(전반적인 설계가 전통적인 디지털 디자인이라면 한 사이클)에서 10억의 흥미로운 계산에 관한 연산들의 몇몇 중대한 분수(fraction)를 수행할 수 있어야 한다. 아직, 오늘날의 CPU 칩들은 그들의 10억 개의 트랜지스터들을 이용하여 소프트웨어들이 가능할 수 있는 10억의 중대한 분수(fraction)가 아닌, 사이클 마다 약간의 이러한 연산들만 수행 가능하게 하도록 한다.
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로 계산(산술 연산과 같은)을 수행하도록 저정밀 고동적범위(LPHDR) 처리 구성요소들을 이용하는 컴퓨터 프로세서 또는 다른 장치들을 제공함에 그 목적이 있다.
본 발명의 실시예들에 따르면, 프로그램 가능 및/또는 대량의 병렬 프로세서 또는 다른 장치와 같은 프로세서 또는 다른 장치는 정밀도는 낮지만 동적 범위가 높은 (“LPHDR 연산”)의 수치들에 대해 산술 연산(반드시는 아니지만 예를 들어, 덧셈, 곱셈, 뺄셈 그리고 나눗셈들 중 하나 이상을 포함)을 수행하도록 설계된 처리 구성요소를 포함한다. 이러한 프로세서 또는 다른 장치는 예를 들어 단일 칩으로 구현될 수 있다. 단일 칩으로 구현되든지 간에, 본 발명의 특정 실시예에서 프로세서 또는 장치에서 LPHDR 산술 구성요소들의 수는 만일 있다면, 전통적인 정밀도의 높은 동적 범위 연산(32비트 또는 64비트 부동 소수점 연산과 같은)을 수행하도록 설계된 프로세서 또는 다른 장치들에서 산술 구성요소의 개수를 상당히 초과(3배보다 적어도 20만큼 초과)한다.
일부 실시예들에서, “저정밀” 처리 구성요소들은 적어도 .1%(1퍼센트의 1/10)만큼 정확한 결과와 자주 다른 결과들을 생성하는 산술 동작을 수행한다. 이는 널리 사용되는 IEEE754 단일 정밀도 부동 소수점 표준보다 훨씬 정밀도가 나쁘다. 본 발명의 프로그램 가능한 실시예는 이러한 보통 큰 상대적인 오류들에도 불구하고 적절히 기능하는 알고리즘으로 프로그램될 수 있다. 일부 실시예들에서, 처리 구성요소들은 백만분의 1에서 백만까지 만큼이나 적어도 큰 범위에 걸쳐 입력에서 동작 및/또는 출력을 생성할 수 있다는 점에서 높은 동적 범위를 갖는다.
이러한 구성의 본 발명에 따르면 계산(산술 연산과 같은)을 수행하도록 저정밀 고동적범위(LPHDR) 처리 구성요소들을 이용하는 컴퓨터 프로세서 또는 다른 장치들이 제공된다.
도 1은 본 발명의 일 실시예에 따른 SIMD 프로세서의 전반적인 설계의 예이다.
도 2는 본 발명의 일 실시예에 따른 SIMD 프로세서의 처리 구성요소 어레이의 예이다.
도 3은 본 발명의 일 실시예에 따라 처리 구성요소 어레이의 처리 구성요소가 프로세서의 다른 부분들과 어떻게 통신하는지의 예이다.
도 4는 본 발명의 일 실시예에 따른 처리 구성요소 설계의 예이다.
도 5는 본 발명의 일 실시예에 따른 LPHDR 데이터 워드 포맷의 예이다.
도 6은 본 발명의 일 실시예에 따른LPHDR 산술부를 위한 설계의 예이다.
도 7은 원래의 이미지이다.
도 8은 본 발명의 일 실시예에 따른 블러커널(blur kernel)에 의해 흐려진 이미지이다.
도 9는 본 발명의 일 실시예에 따른 부동 소수점 산술을 이용하는 리차드슨 루시(Richardson Lucy) 디콘볼루션에 의해 생성된 이미지이다.
도 10은 본 발명의 일 실시예에 따른 노이즈가 추가된 LPHDR 부동 소수점 산술을 이용하는 리차드슨 루시(Richardson Lucy) 디콘볼루션에 의해 생성된 이미지이다.
도 11은 본 발명의 일 실시예에 따른 LPHDR 로그 산술(lns)을 이용하는 리차드슨 루시(Richardson Lucy) 디콘볼루션에 의해 생성된 이미지이다.
상기 서술한 바와 같이, 오늘날의 CPU 칩들은 그 트랜지스터들을 비효율적으로 이용한다. 예를 들어, 10억개의 트랜지스터들을 포함하는 종래의 CPU칩은 클럭 사이클 당 소프트웨어가 약간의 동작들만 수행하도록 할 수 있었다. 이것이 매우 비효율적임에도 불구하고, 본 기술 분야에서 보통의 기술을 갖고 있는 자들은 정당하게 널리 받아들여진다는 이유로 이렇게 CPU를 설계한다. 예를 들면, 이러한 설계들은 쉬운 설계로 소프트웨어 호환성에 대한 요구사항(종종 필수)을 만족시킨다. 나아가, 일반적으로 32 또는 64비트 길이의 정수를 갖는 엄밀한 산술을 수행하고 32 및 64 비트 부동 소수점 수들을 갖는 꽤 정밀하고 널리 표준화된 산술을 수행하면서, 매우 정확함을 산출한다. 많은 어플리케이션들이 이러한 종류의 정확함을 필요로 한다. 그 결과, 종래의 CPU들은 산술 연산을 이행하는 100만 트랜지스터들의 명령에 따라, 이러한 정밀함을 제공하도록 일반적으로 설계된다.
경제적으로 중요한 어플리케이션들이 많이 있지만, 이들은 정밀함에 특별히 민감하지 않고, 그러한 100만 트랜지스터들에 고유한 연산력의 훨씬 큰 분수(fraction)를 이용할 능력으로부터, 트랜지스터 당 어플리케이션 성능의 형태로 대단히 득이 될 것이다. 일반적인 목적의 연산을 위한 현재의 아키텍처는 이러한 힘을 산출하는데 실패한다.
전형적인 마이크로 프로세서와 같은 종래의 컴퓨터들의 약점 때문에, 다른 종류의 컴퓨터들은 높은 성능을 이루도록 개발되었다. 이러한 기계들은 단일 명령어 스트림/다중 데이터 스트림(SIMD) 설계, 다중 명령어 스트림/다중 데이터 스트림 (MIMD) 설계, 필드 프로그램 가능한 게이트 어레이(FPGAs)과 같은 재구성 가능한 아키텍처, 및 일반적인 목적의 연산에 적용되었을 때 단일 명령어 스트림/다중 스레드 (SIMT) 설계들로서 보여질 수 있는 그래픽 처리 구성요소 설계를 포함한다.
SIMD 기계들은 데이터의 수집에서의 동작들을 수행하는 각 명령들과 함께 순차적인 프로그램을 따른다. 이들은 주요한 두 가지: 벡터 프로세서들과 어레이 프로세서들에 관여한다. 벡터 프로세서들은 처리 구성요소(또는 이러한 구성요소들의 작은 집합)를 통해 계속 움직인다. 데이터 스트림의 각 성분은 유사하게 처리된다. 벡터 기계들은 많은 명령 페치/디코드 동작들을 멈추고 프로세서들을 파이프라이닝하여 속도를 얻음으로써, 동작의 클럭 속도가 높아진다.
어레이 프로세서들은 처리 구성요소들(PE)의 그리드에 걸쳐서 데이터를 분배한다. 각 구성요소들은 그 자신의 메모리를 갖는다. 명령들은 중앙 처리 장치로부터 처리 구성요소로 순차적으로 제공된다. 각 처리 구성요소들은 그 로컬 데이터에 제공된 명령을 (종종 그 사이클에서 놀고 있으라는 옵션과 함께) 수행한다. 어레이 프로세서들은 실리콘을 효율적으로 이용하여-병렬로 많은 작은 단순한 실행 유닛들을 구동하기 위해 단 하나의 명령 페치/디코드 유닛을 이용하여 속도를 얻는다.
어레이 프로세서들은 1, 4, 8 및 그 이상과 같은 다양한 너비의 비트 폭들에서 고정 소수점 연산을 이용하고, 그리고 부동 소수점 연산을 이용하여 만들어져 왔다. 작은 비트 폭들은 처리 구성요소들을 작게 하여 더 많이 컴퓨터에 들어 맞게 하지만, 많은 동작들이 종래의 산술 계산을 수행하기 위해 순차적으로 수행되어야 한다. 넓은 폭들은 종래의 산술 동작들이 단일 사이클에서 완성될 수 있도록 한다. 실제로, 넓은 폭들이 바람직하다. 각각 1비트 너비의 처리 구성요소들을 이용했던, 커넥션 머신-1(Connection Machine-1)과 굿이어 대규모 병렬 프로세서(Goodyear Massively Parallel Processor)와 같은, 작은 비트 폭들로 설계되었던 기계들은 빠른 산술을 더 잘 지원하기 위해, 32 비트의 부동 소수점 하드웨어를 포함한 커넥션 머신-2와 굿이어 머신을 계승하고, 4비트 처리 구성요소를 마스파-1(MasPar-1)에 제공하고 32비트 처리 구성요소를 마스파-2(MasPar-2)에 제공하는 마스파 머신들을 생산하면서 더 넓은 데이터 경로들로 진화하였다.
또한 어레이 프로세서들은 계산을 수행하기 위한 아날로그 회로들과 수의 아날로그 표현을 이용하도록 설계되어왔다. SCAMP는 이러한 기계이다. 이러한 기계들은 각 동작들이 그 결과로 몇 퍼센트의 에러를 가져오는 낮은 정밀도의 산술을 제공한다. 이들은 또한 그들의 계산에 노이즈를 가져와 계산을 되풀이할 수 없다. 그리고, 일반적으로 32 또는 64 비트의 고정 소수점 표시들의 넓은 동적 범위를 제공하기보다 예를 들어 8비트의 고정 소수점 값들에 대응하는 오직 작은 범위의 값들만 나타낸다. 이러한 주어진 한계들에 따르면, SCAMP는 일반적인 목적의 컴퓨터로서 의도된 것이 아니라, 대신 이미지 처리와 모델링 생물학적 초기단계 비전 프로세스들을 위해 설계되고 이용되었다. 이러한 어플리케이션들은 하드웨어에서 산술 연산들의 전 범위를 필요로 하지 않고, 예를 들어, SCAMP는 일반적인 나눗셈 및 곱셈 연산을 그 설계로부터 생략한다.
마이크로 프로세서들의 가격/성능이 향상됨에 따라, SIMD 기계들이 1980년대에 인기가 있는 동안, 설계자들은 통신 마이크로 프로세서들의 많은 컬렉션들로부터 기계를 만들기 시작했다. 이러한 MIMD 기계들은 빠르고 그들의 부품인 마이크로프로세서들과 비교할만한 가격/성능을 가질 수 있지만, 트랜지스터 당 상대적으로 적은 계산을 그 자신의 소프트웨어로 산출한다는 점에서 그러한 부품과 동일한 비효율성을 나타낸다.
필드 프로그램 가능한 게이트 어레이(FPGA)는 구성요소들 간에 재구성 가능한 배선을 갖는 일반적인 목적의 디지털 구성요소들의 큰 그리드를 포함하는 집적회로들이다. 이 구성요소들은 본래 AND 및 OR 게이트들과 같은 단일 디지털 게이트들이었지만, 예를 들어 모든 연산자 기능에 따른 1출력에 6입력들을 매핑하도록 프로그램될 수 있는 더 큰 구성요소들로 진화하였다. 이러한 아키텍쳐는 계산을 가속시키도록 장치를 CPU의 보조프로세서로서 이용되게 하는, 광범위하게 다양한 디지털 계산들을 수행할 수 있게 외부 소스들로부터 FPGA가 구성될 수 있게 한다. 그러나, 정수들에 대한, 그리고 특히 부동 소수점 수들에 대한 곱셈과 나눗셈과 같은 산술 동작들은 많은 게이트들을 요구하고 FPGA의 일반적인 목적의 소스들의 많은 분수들을 흡수할 수 있다. 이러한 이유로, 요즈음의 FPGA들은 종종 곱셈을 필요로 하는 계산들을 위한 일반적인 목적의 리소스들 대신 이용될 수 있는, 수십 또는 수백의 곱셈기 블록들을 제공하는 것에 그 영역들의 주요 부분을 희생한다. 이러한 곱셈기 블록들은 일반적으로 18비트 또는 더 넓은 정수 곱셈들을 수행하고, 유사한 곱셈기 블록들이 일반적인 용도의 CPU의 일부일 때 그렇듯이 많은 트랜지스터들을 이용한다.
현존하는 필드 프로그램 가능한 아날로그 어레이(FPAA)들은 FPGA와 유사하지만, 그 구성가능한 구성요소들이 아날로그 처리를 수행한다. 일반적으로, 이러한 장치들은 헬핑 모델 중추 회로망(helping model neural circuitry)과 같은 신호 처리를 하도록 의도 된다. 이들은 비교적 낮은 정밀도와, 비교적 낮은 동적 범위를 가지며, 계산에 노이즈를 가져온다. 이들은 일반적인 목적의 컴퓨터로 이용되도록 의도 또는 설계되지 않았다. 예를 들어, 이들은 고성능 디지털 컴퓨터들에서 주로 실행되는 부동 소수점 연산으로 다양한 복잡한 알고리즘을 실행할 수 있는 기계로서 본 기술 분야에서 보통의 기술을 갖고 있는 자에 의해 보여지지 않았다.
마지막으로, 그래픽 처리 유닛(GPU)은 개인 컴퓨터들에 고속 그래픽 능력들을 제공하도록 진화된 다양한 병렬 프로세서이다. 이는 특정 업무에 매우 높은 성능을 갖는 표준 부동 소수점 연산 능력을 제공한다. 이러한 연산 모델은 때때로, 느린 외부 DRAM 메모리가 데이트를 제공하기 위한 작업을 각각 디렉션 또는 리디렉션하는 SIMD 같은 내부 연산 엔진들의 집합에 의해 실행되는 연산(SIMT)의 수천개의 거의 동일한 스레드를 갖는 것에 기초할 수 있다. 표준 부동 소수점 연산을 이행하는 다른 기계들처럼, 이들도 그 산술을 위해 많은 트랜지스터들을 이용한다. 이들은 위에 논의한 측면에서, 일반적인 목적의 CPU만큼 그 트랜지스터들이 낭비이다.
일부 GPU들은 16비트 부동소수점 값들(때때로 “하프(half)” 포맷이라 불리는)의 지원을 포함한다. 현재, NVIDIA 또는 AMD/ATI와 같은 GPU 제조사들은, 컬러 성분에 대해 32비트의 부동 소수점을 이용하는 것 이상으로 공간을 절약하면서, 컬러 당 8비트의 고정 소수점 데이터를 이용하는, 일반적인 32비트 RGBA 포맷보다 높은 동적 범위로 이미지들을 렌더링 하는데 유용한 것으로 이 능력을 설명한다. 특수 효과 영화 회사, 인더스트리얼 라이트 앤 매직(Industrial Light and Magic, ILM)은 “컴퓨터 이미징 어플리케이션에서의 이용을 위하여 인더스트리얼 라이트 앤 매직에 의해 개발된 높은 동적 범위(HDR) 이미지 파일 포맷”으로서 설명한, 그들의 OpenExR 표준에서 동일한 표현을 독립적으로 정의했다. 위키피디아(Wikipedia, 2008년 말)는 이에 따라 16비트 부동 소수점 표현들을 서술한다: “이러한 포맷은 OpenEXR, OpenGL 및 D3DX를 포함하는 몇몇 컴퓨터 그래픽 환경들에 이용된다. 8비트 또는 16비트 이진법 정수들의 장점은 증가한 동적 범위가 명암에 있어 보존되도록 더욱 상세하게 감안한다는 것이다. 32비트 단일 정밀 이진법 포맷의 장점은 절반의 저장과 대역폭을 요구한다는 것이다.
그래픽 프로세서가 16비트 부동 소수점의 지원을 포함할 때, 그 지원은 32비트 부동 소수점, 및 나아가 64비트 부동소수점에 못지 않다. 즉, 16비트 부동 소수점 포맷은 이를 원하는 어플리케이션들에 대한 지원이지만, 더 정밀한 포맷이 전통적인 그래픽 어플리케이션들 및 소위 “일반용” GPU 어플리케이션들에 필요하다고 생각되기 때문에 또한 지원된다. 이에 따라, 현존하는 GPU들은 32(및 더욱 더 64)비트 산술에 실질적인 리소스들을 쏟고, 위에 논의한 측면에서 트랜지스터들을 낭비한다.
위에 언급한 다양한 아키텍쳐들은 모두 전통적인 프로세서 설계에서 유용한 것보다 실리콘으로부터 더욱 많은 성능을 얻고자 하는 시도들이다. 그러나, 전통적인 프로세서들의 설계자들은 또한 그 기계들의 성능을 향상시키기 위해 유용한 트랜지스터들을 막대한 증가를 이용하기 위해 분투해왔다. 이러한 기계들은 종종 역사와 경제 때문에 인텔 x86 명령어 세트와 같이 큰 현존하는 명령어 세트들을 지지하도록 요구된다. 이는 트랜지스터 수를 두 배로 하여 산출되는 성능이 두 배가 될 수 없다는 수확 체감의 법칙 때문에 어렵다.
이러한 설계자들 노력의 일면은, 트랜지스터들이 풍부하고 일부 어플리케이션들이 프로세서가 단순히 긴(예를 들어, 64비트) 숫자들을 지원했다면 확산될 수 있기 때문에, 산술 연산의 정밀도를 높이기 위한 것이었다. 본래의 고정 소수점 정밀도 8에서, 16, 32, 64 비트로의 32에서 64 및 때로는 128비트로의 고정 소수점의 증가와 함께, 실리콘 칩의 각 새로운 생성의 통합부분으로 나타나 “자유”이기 때문에 컴퓨터 프로세서들이 이러한 정밀도를 제공한다는 가정에 기초하여 프로그래머들은 고정밀도의 측면에서 생각하여 알고리즘을 개발하게 되었다.
본 발명의 실시예들은 상술한 것보다 근본적으로 다른 접근방식을 이용한 연산력을 효율적으로 제공한다. 특히, 본 발명의 실시예들은 계산(산술 연산과 같은)을 수행하도록 저정밀 고동적범위(LPHDR) 처리 구성요소들을 이용하는 컴퓨터 프로세서 또는 다른 장치들에 관한 것이다.
한가지 LPHDR 산술은 약 0.1%의 정밀도로 100만분의 1부터 100만까지의 값들을 제공한다. 이러한 값들이 제공되고 부동 소수점 산술의 방법을 이용하여 다루어진다면, 이들은 10비트 이상의 부호 비트를 넘지 않는 이진 가수들과 적어도 5비트 이상의 부호 비트의 지수들을 가질 수 있다. 그러나, 이러한 부동 소수점 값들을 곱하고 나누기 위한 회로들은 상대적으로 클 것이다. 다른 실시예의 일례는 값들의 로그 표현을 이용하는 것이다. 이러한 접근으로, 값들은 표현을 위해 동일한 수의 비트들을 요구하지만, 곱셈과 나눗셈은 로그 표현으로 각각 덧셈과 뺄셈으로 이행된다. 덧셈과 뺄셈은 아래에 서술한 바와 같이 효율적으로 이행될 수 있다. 그 결과, 산술 회로의 영역은 비교적 작게 남아 많은 수의 연산 구성요소들이 실리콘의 주어진 영역에 들어갈 수 있다. 이는 기계가 시간 단위 당 또는 단위 파워당 많은 수의 동작을 수행할 수 있음을 의미하고, 이는 LPHDR 프레임워크에서 표현될 수 있는 계산들에 유리한 점을 제공한다.
다른 실시예는 아날로그 표현 및 처리 메커니즘을 이용하는 것이다. 장치 행동의 디지털 부분 집합만을 이용하는 것 대신 트랜지스터의 자연적인 아날로그 물리학 또는 다른 물리적 장치들을 이용하려고 하기 때문에 LPHDR 산술의 아날로그 구현은 디지털 구현보다 뛰어난 잠재력을 갖는다. 장치들의 자연적인 능력을 사용하는 것이 최대가 될 수록 LPHDR 산술을 수행하기 위한 메커니즘을 더 적게 허용할 수 있다. 최근에, 실리콘 회로 분야에서 아날로그 방법들이 디지털 방법들에 의해 대체되었다. 부분적으로, 이는 아날로그 설계에 비해 디지털 설계가 쉽기 때문이다. 또한, 부분적으로, 아날로그 기술에 비해 디지털 기술(“무어의 법칙”)이 지속적으로 빠른 크기 조정이 이루어지기 때문이다. 특히, 깊은 미크론 이하의 크기에서 아날로그 트랜지스터들은 큰 스케일의 기술 이전 세대에서 했던 일을 더 이상 하지 않는다. 이러한 친숙한 반응의 변화는 아날로그 설계를 최근에도 여전히 견고하게 한다. 그러나, 디지털 트랜지스터들은, 디지털 회로들이 트랜지스터들이 실제로는 완전히 온 상태와 완전히 오프 상태 사이에서 전환되도록 설계된 실제로 아날로그 회로라는 의미로, 사실상 디지털 방식으로 사용되는 아날로그 트랜지스터들이다. 크기 조정이 계속됨에 따라, 트랜지스터의 이러한 사용 조차 아날로그 동작의 실체들과 직면하기 시작하고 있다. 디지털 사용을 위한 트랜지스터의 크기 조정은 디지털 설계자들이 아날로그 문제를 더 인정하고 작업하도록 만들고 요구할 것으로 기대된다. 이러한 이유로, 디지털 실시예들은 더 이상 쉽고, 신뢰할 수 있고, 확장 및 축소가 가능하지 않을 것이고, LPHDR 아날로그 실시예들은 상업적인 아키텍쳐들을 더 두드러지게 할 것이다.
LPHDR 처리 구성요소들은 비교적 작기 때문에, 단일 프로세서 또는 다른 장치는 서로 병렬 동작하기 적합한 LPHDR 처리 구성요소들을 매우 많이 포함할 수 있어, 대규모 병렬 LPHDR 프로세서 또는 다른 장치를 구성할 수 있다. 이러한 프로세서 또는 다른 장치는 적어도 두가지 이유 때문에 본 기술 분야에서 보통의 기술을 갖고 있는 자들에 의해 일반적인 목적의 연산을 수행하는 의미로서 서술되거나 실현되지 않았다. 첫째, 본 기술 분야에서 보통의 기술을 갖고 있는 자들은 LPHDR 연산, 특히 대량의 LPHDR 연산이 대규모 병렬 방식으로 수행되는지가, 적당히 일반적인 연산을 위한 기판으로서 실용적이지 않다고 일반적으로 믿기 때문이다. 둘째, 본 기술 분야에서 보통의 기술을 갖고 있는 자들은 콤팩트한 산술 처리 유닛에 의해 가능한 단일 칩 상에서 또는 단일 기계에서 매우 높은 정밀도의 대량 연산량은 연산이 전선 한정되고 산술이 무료로 구할 수 있는 것으로 생각될 수 있기 때문에 기계 내에서 그리고 기계로 및 기계로부터 처리 구성요소들 간에 대역폭의 대응하는 증가 없이 유용하지 않다고 믿기 때문이다.
이러한 - 칩 상 또는 대량의 병렬 기계들에서의 대량 산술이 유용하지 않고 대량의 LPHDR 산술이 매우 나쁘다는 - 관점에도 불구하고, 여기에 설명된 본 발명의 실시예들은 대량의 병렬 LPHDR 설계들이 사실상 유용하고 적어도 몇몇 중대한 어플리케이션들에서 중대한 실용적 이득을 제공한다는 것을 증명한다.
결론적으로, 현대의 디지털 컴퓨팅 시스템은 높은 정밀도의 연산을 제공하지만 그 정밀도는 비싸게 치인다. 현대의 더블 정밀도 부동 소수점 곱셈기는 소량의 트랜지스터들만이 낮은 정밀도의 곱셈을 수행하도록 요구될지라도 100만개의 트랜지스터들 명령에 따라 요구한다. 요즈음의 어플리케이션들은 높은 정밀도의 처리를 요한다는 본 기술 분야에서 보통의 기술을 갖고 있는 자들의 일반적인 믿음에도 불구하고, 실제로 다양한 유용한 알고리즘들은 매우 낮은 정밀도로 적당히 기능한다. 그 결과, 이러한 알고리즘들은 본 발명의 실시예들에 따라 구현되는 프로세서 또는 다른 장치들에 의해 수행될 수 있는 데. 이는 약간의 트랜지스터들을 곱하기에 이용하고 전선의 연결을 더하기에 이용하려는 목표를 달성하는 것에 더 가까워지게 하여, 비교적 적은 양의 물리적 리소스들(단일 실리콘 칩)로 수행되는 대량의 병렬 산술 연산이 가능하게 한다. 어떤 특수한 작업이 낮은 정밀도로 기능할 수 있음에도, 이와 같은 비교적 일반적인 목적의 컴퓨팅이 오늘날 일반용 컴퓨터에서 수행되고 낮은 정밀도로 수행될 수 있다는 것은 실제로 본 기술 분야에서 보통의 기술을 갖고 있는 자들에게 명확하지 않고 명백히 틀린 것으로 보여졌다. 그러나, 사실상, 다양한 유용하고 중요한 알고리즘들은 대량의 병렬 컴퓨팅 프레임워크 에서 32비트보다 매우 낮은 정밀도로 적절히 작용하도록 만들어질 수 있고, 본 발명의 특정 실시예들은 이러한 알고리즘을 지지하므로, 트랜지스터들의 더 더욱 효율적인 이용을 제공하고 종래의 컴퓨터들보다 개선된 속도, 파워 및/또는 비용을 제공할 수 있다.
본 발명의 실시예에 따라 구현되는 다양한 컴퓨팅 장치들을 이제 설명할 것이다. 이러한 실시예들 중 일부는 SIMD 컴퓨터 아키텍쳐의 예일 수 있다. MIMD 아키텍쳐, 프로그램 가능한 어레이 아키텍쳐(FPGA 및 FPAA), 또는 GPU/SIMT 아키텍쳐와 같은 다른 아키텍쳐들도 이용될 수 있다. 예를 들어 여기에 개시된 기술들은 이러한 현존하는 아키텍쳐를 갖는 모든 프로세서 또는 다른 장치를 이용하여 구현할 수 있고, 프로세서 또는 다른 장치에서 현존하는 산술 유닛들 일부 또는 전부를 만일 있다면 여기에 개시된 방법들 중 어느 하나에 LPHDR 산술 유닛들로 대체 또는 증가시켜 구현할 수 있다. 그러나, 본 발명의 실시예들에 따라 구현된 장치들은 현존하는 프로세서 설계로 시작될 필요 없이, 서술한 모든 아키텍쳐들 또는 다른 아키텍쳐 내에서 LPHDR 산술 유닛들을 포함하도록 스크래치(scratch)로부터 설계될 수 있다.
예를 들어, 본 발명의 실시예들은 특정 종류의 SIMD 컴퓨터, 어레이 프로세서의 아키텍쳐를 이용하여 구현될 수 있다. 과학적 및 상업적 문헌에 서술된 어레이 프로세서들의 변형 및 특정 예들이 많이 있다. 예들은 컴퓨터의 일리악4(Illiac4), 커넥션 머신1 및 2(Connection Machine-1, 2), 굿이어 대규모 병렬 프로세서(Goodyear Massively Parallel Processor), 마스파 라인을 포함한다.
그러나 본 발명의 실시예들은 SIMD 컴퓨터로 구현할 필요는 없다. 예를 들어 본 발명의 실시예들은 FPGA, FPAA 또는 처리 구성요소들의 집합의 유연한 접속가능성에 대비한 관련 아키텍쳐들로 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 GPU/SIMT로, 그중에서도 MIMD로 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 전통적인 아키텍쳐에 비해 적은 량의 리소스들(예, 트랜지스터 또는 볼륨)을 이용하는 연산을 제공하도록 LPHDR 산술 처리 구성요소들을 이용하는 모든 종류의 기계들로 구현될 수 있다. 나아가, 본 발명의 실시예들 내에서 “처리 구성요소들”이 가리키는 내용은 LPHDR 동작 또는 다른 동작 수행할지를 위한 모든 종류의 실행부로서 더욱 일반적으로 이해되어야 할 것이다.
SIMD 컴퓨팅 시스템(100)의 예는 도 1에 도시되어 있다. 컴퓨팅 시스템(100)은 많은 처리 구성요소들(PE, 104)의 집합을 포함한다. 때때로, 제어부(CU, 106), 입출력부(IOU, 108), 다양한 주변 장치들(110), 및 호스트 컴퓨터(102)가 제공된다. 처리 구성요소들의 집합은 여기에서 “처리 구성요소 어레이(PEA)”로 부르나, 2차원 또는 어레이 또는 그리드 또는 다른 특정 레이아웃일 필요는 없다. 일부 기계들은 굿이어 대규모 병렬 프로세서(Goodyear MPP)에서 “스테이징 메모리”라 부르는 추가 메모리 시스템과 같은 추가의 부품들을 포함하지만, 이러한 추가의 구성요소들은 컴퓨터에서 필수도 아니지만 본 발명을 이해하는데 필요하지도 않으므로 설명의 명확함을 위해 여기에서는 생략한다. 본 발명의 일실시예는 도 1에 도시한 종류의 SIMD 컴퓨팅 시스템인데, 여기에서 처리 구성요소 어레이(104)의 하나 이상의 (예, 전부의) 처리 구성요소들은 여기에서 쓰인 용어에 따르면, LPHDR 구성요소들이다.
호스트(102)는 컴퓨팅 시스템(100)의 전반적인 제어에 책임을 진다. 이는 전통적인 단일-프로세서의 상징인 연속적인 또는 대체로 연속적인 연산을 수행한다. 호스트(102)는 물론 다양한 종류의 병렬 처리를 포함하는 더욱 복잡한 구조를 가질 수 있다. 사실은, 단일 기계에서 다중 컴퓨팅 아키텍쳐들을 결합하는 잡다한 컴퓨팅 시스템은 본 발명의 실시예들을 위한 좋은 사용이다.
호스트(102)의 목적은 유용한 방식으로 처리 구성요소 어레이(104)가 대량의 연산을 수행하도록 시키는 것이다. 이는 처리 구성요소들이 서로 병렬로, 각각의 처리 구성요소에 로컬 저장된 데이터 상에서 전형적인 연산들을 수행하게 함으로써 이루어질 수 있다. 많은 처리 구성요소들이 있다면, 각 단위 시간 동안 많은 작업이 완료된다.
처리 구성요소 어레이(104)의 처리 구성요소들은 호스트(102)가 그 연산을 수행하는 것만큼 빠르게 대략 그들의 개별적인 연산을 수행할 수 있을 것이다. 이는 호스트 또는 처리 구성요소의 최소 시간 단계만큼 미세한 시간 스케일에서 호스트(102)가 처리 구성요소 어레이(104)를 제어하려고 시도하게 하는 데 효율적일 수 있음을 의미한다 (전통적인 디지털 설계에서 이 최소의 시간은 클럭 주기일 수 있다). 이러한 이유로, 전문적인 제어부(CU, 106)가 아키텍쳐에 포함될 수 있다. 제어부(106)는 개념적으로 제어부(106)의 일부인, 명령 메모리로부터 명령어를 검색하여 디코딩하고, 처리 구성요소(104)의 처리 구성요소들 전부에 부분적으로 디코딩된 명령들을 내리는 주요 업무를 갖는다 (이는 대략 동시에 모든 처리 구성요소들에 일어남에 따라 제어부 소프트웨어에 의해 보여질 수 있으나, 글자그대로 동기화 되어야 하는 것은 아니고 사실 다른 단계의 완료에서 다중의 명령들이 예를 들어 일련의 파면(wave fronts)과 같은 처리 구성요소 어레이를 가로질러 점차 동시에 진행해가는 비동기식 설계를 이용하는데 효과적일 수 있다.
제어부(106)를 포함하는 설계에 있어, 호스트(102)는 일반적으로 처리 구성요소 어레이(104)의 명령들(프로그램을)을 제어부 명령 메모리(도 1에서 미도시)에 불러오고, 제어부(106)가 프로그램을 해석하도록 명령하고, 처리 구성요소 어레이(104)가 명령에 따라 연산을 수행하도록 한다. 예를 들어, 프로그램은 제어부(106) 내에서 제어 흐름 연산들과 함께 유사한 연산들을 수행하도록 처리 구성요소들과 다른 명령들에서 그리고 그 사이에서 데이터 이동, 논리 연산들, 산술 연산들, 등을 시키는 명령을 갖는, 전형적인 기계 언어 프로그램과 일반적으로 유사해 보일 수 있다. 이에 따라, 제어부(106)는 전형적인 종류의 프로그램을 실행시킬 수 있지만, 처리 구성요소 어레이(104)에 대량의 병렬 명령들을 내리는 능력이 있을 수 있다.
데이터를 제어부(106)와 처리 구성요소 어레이(104)에 넣고 빼기 위하여, 입출력부(108)는 제어부(106)와 처리 구성요소 어레이(104)를 호스트(102), 호스트의 메모리(도1에서는 미도시), 및 외부 저장장치(예, 디스크 드라이브)와 같은 시스템의 주변 장치들(110), 연산 결과들의 시각화를 위한 디스플레이 장치, 및 때때로 특별한 높은 대역폭 입력 장치들(예, 비전 센서)와 인터페이스로 연결할 수 있다. 처리 구성요소 어레이의 호스트(102)보다 훨씬 빠른 데이터 처리 능력은 그 데이터 전송의 일부에 대해 호스트(102)를 완전히 우회시킬 수 있게 되는 것이 입출력부(108)에게 유용하게 한다. 또한, 호스트(102)는 주변 장치들(110)과 통신하는 그 자신만의 방법을 가질 수 있다.
도 1에 도시된 특정 실시예는 단지 예시만을 목적으로 하고 본 발명의 한정을 구성하지 않는다. 예를 들어, 이와 달리 제어부(106)에 의해 수행되는 기능들은 대신 생략된 제어부(106)를 갖는 호스트(102)에 의해 수행될 수 있다. 제어부(106)는 처리 구성요소(104) (예, 오프-칩)으로부터 먼 하드웨어로서 구현될 수 있거나, 제어부는 처리 구성요소(104) (예, 온-칩)으로부터 가까울 수 있다. 입출력은 도시한 바와 같이, 별도의 입출력 컨트롤러(108)을 경유하거나 또는 입출력부(108)를 갖는 제어부(106)를 경유하여 전달될 수 있다. 나아가, 호스트(102)는 선택사양이다; 제어부(106)는 예를 들어 중앙처리장치(CPU), 혹은 그렇지 않으면 호스트(102)에 의해 수행되는 기능들을 충분히 대체할 수 있는 부품을 포함할 수 있다. 도 1에 도시한 주변장치들(110)은 선택사양이다. 도 1에 도시한 설계는 로컬 저장 장치의 중간 레벨을 제공하는 굿이어 대규모 병렬 프로세서의 “스테이징 메모리”와 같은 특수한 메모리를 가질 수 있다 이러한 메모리는 예를 들어 처리 구성요소 어레이(104)의 처리 구성요소들로부터 메모리에 비교적 빠른 병렬 접속을 제공하는 3D 조립 기술을 이용하여 LPHDR 칩에 결합될 수 있다.
처리 구성요소 어레이(104) 그 자체는, 제어부(106)와 입출력부(108) 및 가능한 다른 메커니즘과 통신하는 것 외에도, 어레이 내에서 이동할 데이터를 위한 방법들을 갖는다. 예를 들어, 처리 구성요소 어레이(104)는 데이터가 처리 구성요소들로부터 오직 그 가장 가까운 이웃들로만 이동할 수 있도록, 즉, 먼 거리의 전송이 없는 방식으로 구현될 수 있다. 도 2와 3은 이러한 접근을 이용한 본 발명에 따른 실시예들을 도시한다. 여기에서, 가장 가까운 이웃들은 NEWS 디자인이라 부르는 북쪽, 동쪽 서쪽 그리고 남쪽을 향한 4개의 인접한 처리 구성요소들이다. 예를 들어, 도 2는 처리 구성요소(104)에서 처리 구성요소들의 서브세트, 즉, 처리 구성요소(202), 처리 구성요소(204), 처리 구성요소(206), 처리 구성요소 (208) 및 처리 구성요소 (210)을 나타낸다. 제어부(106)가 데이터 이동 명령을 내릴 때, 모든 처리 구성요소들은 그들 각각의 특정 가장 가까운 이웃으로부터의 데이터에 접속 또는 데이터를 전송한다. 예를 들어, 모든 처리 구성요소는 그 서쪽에 있는 이웃에서 특정한 데이터 값에 접속하거나 이를 그 자신의 로컬 저장장치에 복사할 수 있다. 아날로그 실시예와 같은 일부 실시예에서, 이러한 종류의 전송은 복사된 값들이 약간 저하되는 결과를 가져온다.
도 3은 입출력부(108)로의 데이터 연결을 포함하는 처리 구성요소(302)를 도시한다. 처리 구성요소(302)는 북쪽으로는 처리 구성요소(304)에, 동쪽으로는 처리 구성요소(306)에, 남쪽으로는 처리 구성요소 (308)에, 서쪽으로는 처리 구성요소 (310)에 연결된다. 그러나, 입출력부(108)로 출력되는 처리 구성요소 어레이(104) 내부로부터의 구동 신호는 보통 물리적으로 상대적으로 큰 구동 회로 또는 유사한 메커니즘을 요구한다. 모든 처리 구성요소에서 이러한 것들을 가지므로 하드웨어 구현 기술(VLSI 영역과 같은)의 유용한 리소스들을 많이 흡수할 수 있다. 추가로, 모든 처리 구성요소로부터 입출력부(108)로의 독립적인 연결을 갖는 것은 많은 이러한 연결들과 긴 연결들을 의미하고, 이는 또한 많은 유용한 하드웨어 리소스들을 흡수할 수 있다. 이러한 이유로, 처리 구성요소와 입출력부(108) 사이의 연결은 처리 구성요소 어레이(104)의 가장자리에서 그러한 처리 구성요소들에 제한된다. 이러한 경우, 처리 구성요소 어레이(104)로 부터 그리고 아마 처리 구성요소 어레이(104)로 데이터를 획득하기 위해, 어레이의 가장자리에서 데이터가 읽고 쓰여지며, 제어부 명령들은 처리 구성요소(104)의 가장자리와 내부 사이에서 데이터를 전환하도록 수행된다. 설계는 직접 연결을 이용하는 어레이에서의 모든 처리 구성요소 안으로 입출력부(108)로부터의 데이터가 밀리도록 허용하지만, 입출력부(108)에 의해 읽혀질 수 있는 가장자리로 데이터를 전환하도록 처리부(106)를 이용하여 판독이 이루어지게 할 수 있다.
제어부(106)와 처리 구성요소 어레이(104) 간의 연결들은 유사한 변화를 가질 수 있다. 하나의 설계는 대략 동시에 모든 처리 구성요소들로 명령을 구동시키는 능력을 포함할 수 있었지만, 다른 접근은 처리 구성요소들에 도달하기 위해 처리 구성요소 어레이(104)에 걸쳐서 점점 (예를 들어 불연속 시간 단계들에서 전환)명령 흐름을 가지게 하는 것이다. 본 발명의 실시예들에서 구현될 수 있는 일부 SIMD 설계는 “전선-또는” 혹은 “전선-그리고”의 모든 처리 구성요소 어레이(104)의 처리 구성요소의 상태에 의해 대략 하나의 명령 지연 시간에서 제어부(106)에 의해 판독될 수 있는 시설을 갖는다.
문헌에서 본 발명의 실시예에 병합될 수 있는 이러한 사항들에 대해 잘 연구된 변형들이 많이 존재한다. 예를 들어, 8가지 로컬 상호 연결과 간츤 상호 연결이 이용될 수 있다. 로컬 연결들은 거리1뿐만 아니라 거리4 또는 16과 같은, 다양한 거리 건너뛰기들의 혼합을 포함한다. 바깥쪽 가장자리들은 토러스 또는 비틀린 토러스와 같은 모든 토폴로지를 이용하여 연결될 수 있다. 로컬 상호 연결 대신 또는 이에 추가하여, 하이퍼큐브 설계와 같이 복잡한 글로벌 상호 연결이 더 많이 이용될 수 있다. 나아가, 처리 구성요소 어레이(104)의 물리적 구현은 더 큰 처리 구성요소를 만들도록 되풀이 될 수 있다 (예, 회로기판에 타일처럼). 이러한 되풀이는 단지 처리 구성용소가 꼭 그리드일 필요가 없음에 따라 단순한 그리드 또는 다른 배열을 형성할 것이다.
도 4는 처리 구성요소(400)의 설계 예(이는 처리 구성요소 어레이(104)에서 어느 하나 또는 그 이상의 처리 구성요소들을 구현하는 데 이용될 수 있다)를 도시한다. 처리 구성요소(400)는 로컬 데이터를 저장한다. 로컬 데이터를 위한 메모리의 양은 설계에 따라 상당히 변한다. 이는 처리 구성요소(400)를 조립하기에 유용한 구현 기술들에 의존할 수 있다. 때로는 드물게 변하는 값들(상수들)은 자주 바뀌는 값들(레지스터)보다 자리를 덜 차지하므로, 설계는 레지스터보다 더 많은 상수를 제공할 수 있다. 예를 들어, 이는 단일 트랜지스터 셀들을 상수들(예, 부동 게이트 플래시 메모리 셀들)에 이용하고, 다중 트랜지스터 셀들을 레지스터들(예, 6-트랜지스터 SRAM 셀들)에 이용하는 디지털 실시예들의 경우일 수 있다. 때로는, 상황이 반전되어, 캐패시턴스를 위한 실질적인 영역이 상수들의 안정적인 오랜 기간의 저장을 보증할 필요가 있을 수 있고 아날로그 실시예들일 수 있고, 이러한 실시예들은 상수들보다 더 많은 레지스터들을 가질 수 있다. 전형적인 저장 용량들은 각 처리 구성요소의 레지스터들과 상수들에 저장된 수십 또는 수백의 산술 값들 일 수 있지만, 이러한 용량들은 설계자에 의해 조정 가능하다. 예를 들어, 일부 설계들은 각 처리 구성요소에 저장된 수천 또는 훨씬 많은 값들을 가질 수 있다. 이러한 변형례들은 전부 본 발명의 실시예들에 반영될 수 있다.
또한, 각 처리 구성요소는 그 로컬 데이터를 이용할 필요가 있다. 이러한 이유로, 처리 구성요소(400) 내에 데이터 경로(402a-i), 라우팅 메커니즘(예, 멀티플렉서(먹스)와 같은, 404), 및 논리 및 산술 연산의 일부 집합을 수행하기 위한 부품(예, 논리부(406) 및 LPHDR 산술부(408))가 있다. LPHDR 산술부(408)는 여기서 이용되는 용어로서 LPHDR 산술 연산을 수행한다. 처리 구성요소(400)에 의해 수신되고, 출력되고 이용되는 입력, 출력 및 중간 “값들”은 예를 들어 수치들을 나타내는 전기 신호의 형태를 갖는다.
또한, 처리 구성요소(400)는 도 4에서 마스크(Mask, 410)로 도시된, 하나 이상의 플래그 비트들을 가질 수 있다. 마스크(410)의 목적은 일부 처리 구성요소들이, 특정 마스크 비트가 설정된 것들이, 제어부(106)에서 내려진 어떤 명령들을 무시할 수 있게 하는 것이다. 이는 처리 구성요소(104)에서 모든 처리 구성요소들의 보통 정확한 작동에 약간의 변화를 가져온다. 예를 들어, 제어부가 각 처리 구성요소들의 특정 레지스터가 양(positive)인지 음(negative)인지에 따라 그 마스크(410)를 각 처리 구성요소들이 재설정 또는 설정하도록 하는 명령을 내릴 수 있다. 이어지는 명령은, 예를 들어 연산 명령은 명령이 그 마스크(410)가 재설정된 처리 구성요소들에 의해서만 수행될 수 있음을 의미하는 비트를 포함할 수 있다. 이러한 조합은 처리 구성요소의 특정 레지스터가 양인지에 따라서 각 처리 구성요소에서 연산 명령을 조건부로 수행하는 효과를 갖는다. 전통적인 컴퓨터들의 비교 명령과 마찬가지로, 마스크를 설정하고 치우는 메커니즘을 위한 가능한 설계 선택이 많이 있다.
처리 구성요소들의 동작은 제어부(106)로부터 수신한 제어신호들(412a-d)에 의해 제어되는 데, 이들 4개의 제어신호들은 한정이 아닌 단지 예시를 위한 목적으로 도 4에 도시되어 있다. 이러한 메커니즘을 상세히 도시하지는 않았지만, 제어신호들(412a-d)은 처리 구성요소(400)에서 어떤 레지스터 또는 상수 메모리 값들 또는 그 이웃들 중 하나를 데이터 경로에 전송할지, 로직(406) 또는 산술(408) 또는 다른 처리 메커니즘에 의해 어떠한 동작들이 수행되어야 하는지, 레지스터에서 결과들이 어디에 저장되어야 하는지, 어떻게 마스크(410)를 설정, 재설정 및 이용할지, 등을 명시한다. 이러한 사항들은 SIMD 프로세서들에 관한 문헌들에 잘 설명되어 있다.
본 발명의 범위 내에서 이러한 처리 구성요소(400)와 처리 구성요소 어레이 설계의 많은 변형이 가능하다. 디지털 처리 구성요소들은 이동장치(shifter), 룩업 테이블, 및 문헌에 소개된 바와 같은 많은 그 밖의 메커니즘을 가질 수 있다. 아날로그 처리 구성요소들은 시간-기반의 연산자, 필터, 범세계 방송 신호를 갖는 비교기들, 및 문헌에 소개된 바와 같은 많은 그밖의 메커니즘을 가질 수 있다. 처리 구성요소 어레이(104)는 유선-OR, 혹은 디지털 처리 구성요소 어레이를 위한 유선-AND, 혹은 아날로그 처리 구성요소 어레이들을 위한 유선-SUM과 같은 범세계적인 메커니즘을 포함할 수 있다. 마찬가지로, 많은 변형들이 디지털 및 아날로그 컴퓨팅 아키텍쳐에 관한 문헌에 잘 설명되어 있다.
예를 들어, 덧셈과 뺄셈 제외한 및/또는 이에 더하여 LPHDR 동작들이 지원될 수 있다. 예를 들면, 오직 곱셈과 함수(1-X)만 수행할 수 있는 기계가 덧셈 및 다른 산술 연산들에 가깝게 사용될 수 있다. LPHDR 동작들의 다른 집단들은 본 기술 분야에서 보통의 기술을 가지고 있는 자들에게 잘 알려진 기술들을 이용하여, 덧셈, 곱셈, 뺄셈, 나눗셈과 같은 LPHDR 산술 연산에 가깝게 사용될 수 있다.
특유한 본 발명의 실시예의 일측면은 처리 구성요소들에 LPHDR 산술 메커니즘을 포함하는 것이다. 이러한 메커니즘들의 실시예들을 이제 설명할 것이다. LPHDR 산술부(408)의 한 디지털 실시예는 디지털(이진법) 표현의 수들을 이용한다. 하나의 디지털 실시예에서, 이러한 숫자들은 그 로그로 표현된다. 이러한 표현을 로그 수 체계(logarithmic number system, LNS)라 부르고, 이는 본 기술 분야에서 보통의 기술을 가진 자에 의해 잘 이해될 수 있다.
로그 수 체계에서, 숫자들은 부호와 지수로 나타난다. 디지털 하드웨어로 작업할 때, 로그에 대한 음의 밑, 전형적인 2가 있다. 본 실시예에서, 2라는 밑은 예시를 위해 이용되었다. 그 결과, B라는 값은 절대값으로서 b라는, 그 부호와 밑 2의 로그로 표현된다. 고작해야 1%의 표현 오류를 갖는 숫자들에 대해, 이러한 로그의 분수부분은 충분히 정밀하게 분수에서 적어도 가능한 변화가 값(B)에서의 대략 1% 변화에 대응하는 충분한 정밀도로 표현되어야 한다. 분수들이 6비트를 이용하여 표현된다면, 분수를 1만큼 증감시키는 것은 2의 64제곱근 B를 곱하거나 나누는 것에 대응하며, 이는 대략 1.011이다. 이는 본 실시예에서 숫자들은 대략 1%의 곱셈 오류로 표현될 수 있음을 의미한다. 그래서, 본 실시예에서, 표현의 분수 부분은 6비트를 갖는다.
더욱이, 본 실시예에서 처리된 값들의 공간은 높은 동적 범위를 갖는다. 말하자면 그 절대값이 10억분의 1에서 10억까지인 수를 표현하기 위하여, 로그의 정수 부분은 10억의 2를 밑으로 하는 플러스 혹은 마이너스 로그를 표현하기 위해 충분히 길어야 한다. 그 로그는 약 29.9이다. 본 실시예에서, 로그 표현의 정수 부분은 0에서 31까지의 값들을 표현하고 싶은 5비트인데, 이는 충분하다. 또한, 지수에 부호비트가 있다. 음의 로그는 2의 보수 표현(complement representation)을 이용하여 표현된다.
로그 수 체계에서, 0의 값은 로그 음의 무한대에 대응한다. 이러한 특수한 값을 명시적으로 표현하기 위해 하나의 표시를 선택할 수 있다. 그러나, 연산 회로에 의해 이용되는 리소스들(예, 면적)을 최소화하기 위해, 본 실시예는 2의 보수 비트 표현(complement bit representation) '100000 000000'에 대응하며 대략 2.33E-10의 값을 표시하는, 가능한 가장 음인 로그, -32에 의해 0으로 표현한다.
연산 시, 동작이 알맞은 값들을 생성하지 않는 상황이 일어날 수 있다. 한 예는, 두 큰 숫자들을 곱하거나 더하거나, 혹은 0 (또는 거의 0에 가까운 값)으로 나눌 때와 같이, 숫자가 선택된 워드 형태로 표현되기에 너무 클 때이다. 이러한 문제에 대한 하나의 상식적인 접근은 값을 수가 아님(Not A Number, NAN)으로 표시되도록 하여, 문제 발생시 또는 입력들 중 하나가 NAN인 경우, 각 동작이 NAN을 생성하도록 확실하게 하는 것이다. 본 실시예는 다음에 설명할 것처럼 이러한 접근을 이용한다.
도 5는 본 실시예에서 이러한 숫자들에 대한 워드 포맷의 예이다. 이는 하나의 NAN 비트(502a), 값의 부호에 대한 하나의 비트(502b), 로그를 표현하는 12개의 비트들(502c-e)을 갖는다. 로그 비트들은 5비트 정수부(502d)와 6비트 분수부(502e)를 포함한다. 로그를 음이 되게 허용하기 위해, 2의 보수 형태로 표현된 로그의 부호 비트(502c)가 있다. NAN 비트는 값을 계산하는 데 있어 약간의 문제가 발생했을 경우 설정된다. 도 5에 도시된 워드 포맷(500)은 단지 예이고 본 발명의 한계를 구성하지 않는다. 저정밀 고동적 범위를 갖는 다면 다른 변형들도 이용될 수 있다.
도 6은 도 5에 도시된 표현을 위한 LPHDR 산술부(408)의 디지털 구현의 예를 도시한다. 산술부(408)는 두 개의 입력, A602a와 B602b를 받아, 출력(602c)을 만든다. 예를 들어, 입력들(602a-b)과 출력(602c)은 산술부(408)의 부품에 의해 산술부(408) 내에서 전송되는 실제 신호로서, 도 5에 도시된 표현에 대응하는 수치를 나타내는 전기 신호의 형태를 가질 수 있다. 입력들(602a-b)과 출력(602c) 각각은 값과 NAN 비트로 구성된다. 산술부(408)는 제어부(106)로부터 나온 제어 신호(412a-d)에 의해 제어되어, 어떤 유용한 산술 연산이 입력들(602a-b)에 수행될 것인지 판단한다. 본 실시예에서는, 모든 유용한 산술 연산들이 덧셈기/뺄셈기(604), 곱셈기(606) 및 나눗셈기(608)에 의해 입력들(602a-b)에 병렬로 수행된다. 덧셈기/뺄셈기(604)는 LPHDR 덧셈과 뺄셈을 수행하고, 곱셈기(606)는 LPHDR 곱셉을 수행하고, 나눗셈기(608)는 LPHDR 나눗셈을 수행한다.
덧셈기/뺄셈기(604), 곱셈기(606) 및 나눗셈기(608)의 출력들로부터 원하는 결과가 멀티플렉서들(MUXes, 610a, 610b)에 의해 선택된다. 오른손 멀티플렉서(610b)는 원하는 값을 출력(602c)으로 보낸다. 왼손 멀티플렉서(610a)는 원하는 동작으로부터의 대응하는 NAN 비트를 어느 하나의 비트가 NAN이거나 특수한 산술 연산이 NAN을 산출하는 경우 설정된 NAN 비트를 출력하는 OR 게이트(612)로 보낸다. 컴퓨팅 아키텍쳐 문헌은 도 6에 도시된 실시예에 통합될 많은 변형들에 대해 논의한다.
로그 수 체계 연산은 거의 없는 물리적 리소스들(예, 실리콘 구현에 있어 거의 없는 면적)을 연산하여 취하기에 곱셈과 나눗셈이 매우 쉽다는 주요한 장점이 있다. 그 결과의 부호는 배타적 또는 피연산자의 부호이다. 출력의 로그 부분은 피연산자의 로그 부분들의, 곱셈의 경우 합이거나, 나눗셈의 경우 차이다. 로그의 합 또는 차는 NAN 결과를 내면서, 넘쳐날 수 있다. 로그 수 체계에서는 특정 다른 연산들 또한 쉽다. 예를 들어, 제곱근은 로그를 반으로 나누는 것에 대응하는 데, 이는 우리의 표현대로라면 하나의 비트 위치에서 오른쪽으로의 단순 이동을 의미한다.
이에, 도 6의 곱셈기(606)와 나눗셈기(608)는 2의 이진 보수인(차례로 로그로 나타나는), 그 입력들을 단순히 더하고 빼는 회로들로 구현될 수 있다. 넘쳐난다면, NAN에 대해 1을 출력한다.
로그 수 체계에서 덧셈과 뺄셈을 구현하는 것, 즉, 도 6에서 덧셈기/뺄셈기(604)는 LNS와 같은 문헌에서 이용되는 일반적인 접근에 따른다. 덧셈을 생각하자. 우리가 그 로그 b와 c로 표현되는 양의 수 B와 C를 갖고 있다면, B와 C의 합의 표현은 log(B+C)이다. 당업자에게 잘 알려진 이러한 결과를 연산하려는 접근은 log(B+C) = log(B*(1+C/B)) = log(B)+log(1+C/B) = b+F(c-b), 단, F(x)=log(1+2^x) 라는 공고를 기초로 한다. 이에, 본 실시예는 당업자에게 알려진 표준 디지털 기술들을 이용하여 c-f를 계산하고, F를 통해 이를 입력하여, 그 결과를 b에 더한다.
로그 수 체계에 관해 공개된 많은 문헌들이, 뺄셈과 유사한 함수와 함께, 덧셈을 위한 특별한 함수, F(x)를 어떻게 연산할 지에 연관되어 있다. 종종 이러한 두 개의 함수들은 회로를 공유하는데, 이것이 왜 단일의 결합된 덧셈기/뺄셈기(604)가 도 6의 실시예에 쓰였는지의 이유이다. 값들이 낮은 정밀도의 것일 때 어떻게 이를 수행할지에 관한 논의를 포함하며, 이러한 함수들 또는 이들에 대한 근사법을 연산하는 많은 공개된 방법들이 있다. 모든 이러한 방법, 또는 다른 방법이 이용될 수 있다. 일반적으로 말하자면, 대량의 병렬 LPHDR 연산을 위한 적합한 변형들은, 도 6의 실시예에 이용되는 표현이 낮은 정밀도이고 산술 연산들이 결정론적일 필요가 없을 뿐만 아니라 저정밀 표현 내에서 가능한 가장 정확한 답을 구할 필요도 없다는 사실의 장점을 가지며, 회로 영역과 같은 리소스들의 최소 이용을 요구하는 것들이다. 이에, 본 발명의 실시예들은 낮은 정밀도 표현에서 가능한 제한된 선택들 가운데서도, 가능한 최선의 답을 계산하지 않는 회로를 이용할 수 있다.
선택된 처리 구성요소들의 조건적 동작을 가능하게 하기 위하여, 본 발명은 계산의 결과에 기초하여 마스크 플래그(410)를 재설정 및 설정할 수 있다. 이렇게 하기 위한 메커니즘에 따르면, 제어부(106)는 각 처리 구성요소의 마스크(410)가 데이터 경로(402f)에서 마스크(410)에 입력되는 값들에 대한 기본 테스트를 수행하고 이에 따라 플래그를 설정하도록 하는 다른 명령들과 함께 그 플래그를 조건 없이 재설정 및 설정하게 하는 명령들을 포함하는 것이다. 이러한 나중 명령들의 예는 데이터 경로(402f) 상의 워드에서 부호 비트 또는 NAN 비트를 마스크 비트(410)로 복사하는 것을 포함한다. 다른 예는 데이터 경로(402f) 상의 워드의 12비트 값 부분이 이진 수의 0과 같다면 마스크 비트(410)를 설정하는 것이다. 전통적인 프로세서들의 비교 명령들과 직접적으로 유사하고 당업자에게 잘 이해되는 이를 수행하기 위한 많은 추가 또는 대안의 방법들이 있다.
상기 로그 수 체계 동작들을 이용하는 명확한 방법은 LPHDR 연산을 행하는 것인 반면, 프로그래머 또한 12비트 2의 이진 보수가 될 선택된 값들을 고려할 수 있음은 가치 있는 언급이다. 곱셈과 나눗셈은 로그 수 체계 구현에 있어 그 동작이 정밀하였으므로, 이러한 값들을 더하고 빼는 데 이용될 수 있다. 마스크 설정 명령들은 이러한 단순한 이진 값들을 비교할 수 있다. 그래서, LPHDR 연산들을 수행하는 것 외에, 로그 수 체계를 이용하는 이러한 디지털 실시예는 짧은 부호의 정수들에서 단순한 이진 연산을 수행할 수 있다.
본 발명의 일부 실시예들은 아날로그 표시와 처리 방법들을 포함할 수 있다. 이러한 실시예들은 예를 들어 LPHDR 값들을 전하, 전류, 전압, 주파수, 펄스 폭, 펄스 밀도, 다양한 형태의 스파트 또는 전통적인 디지털 구현의 특징적이지 않은 다른 형태로 표현할 수 있다. 그렇게 표현된 값들을 처리하는 메커니즘과 함께, 문헌에서 논의되는 이러한 표현들이 많이 있다. 이러한 방법들, 종종 아날로그 방법들이라 불리는 방법들은 SIMD가 일례인, 우리가 논의한 넓은 범위의 아키텍쳐에서 LPHDR 연산을 수행하도록 이용될 수 있다.
아날로그 SIMD 아키텍쳐의 예는 듀덱(Dudek)의 SCAMP 설계 (및 관련 설계)이다. 그러한 설계에서, 대략 1% 이내의 정밀도로, 값들은 낮은 동적 범위를 갖는다. 값들은 캐패시터들에서 전하로 표현된다. 그러한 캐패시터들은 일반적으로 트랜지스터들의 게이트들이다. 각 처리 구성요소는 도 4에 보여진 레지스터들과 유사한, 몇몇 메모리 셀들을 갖는다. 덧셈은 두 피연산자들로부터 패스 트랜지스터를 켬으로써 수행되는 데, 그들의 전하를 아날로그 버스로 옮기고, 전하와 전선들의 자연 물리학에 의해 합해지고, 그 캐패시터를 충전하기 위해 다른 레지스터를 게이트로 제어하고, 이로써 피연산자들의 합을 나타낸다. 듀덱에 의해 개시된 구체적인 메커니즘은 실제로 음의 합을 생성하지만, 기본 개념은 서술한 바와 같고 아날로그 표현들과 단순한 처리 메커니즘을 이용한 덧셈과 뺄셈을 수행하기 위한 단순한 방법이다.
SCAMP 설계의 변형은 이미지 처리와 관련된 저 정밀 범위, 낮은 동적 범위 계산을 수행하기 위해 제작 및 이용되어 왔다. 이러한 설계는 고동적 범위 연산을 수행하지 않고 또한 레지스터에 저장된 값들의 곱셈 또는 나눗셈을 수행하기 위한 메커니즘을 포함하지도 않는다. 그러나, 듀덱 설계는 아날로그 SIMD 기계들을 구성하는 일반적인 실현 가능성을 제안한다. 다음은 LPHDR 연산을 수행하여 본 발명의 실시예인 아날로그 SIMD 기계를 어떻게 만드는 지를 설명한다.
본 발명의 일 실시예는 아날로그와 디지털 형태의 혼합으로서 값들을 표현한다. 본 실시예는 값들을 저정밀도로, 정상화된, 베이스 2 부동 소수점 수들로 표현하는 데, 여기에서 로그의 가수는 아날로그 값이고 지수는 이진 디지털 값이다. 아날로그 값은 듀덱의 접근 방식을 따르며, 대략 1%로 정확할 수 있는 데, 이는 알맞은 아날로그 처리 기법들의 범위 내에 있다. 지수는 6비트 길이일 수 있고, 또는 바람직한 고 동적 범위를 제공하기 위해 무엇이든 필요하다.
값들을 곱하기 위해, 본 실시예는 전통적인 부동 소수점 방법과 유사하게 진행한다. 디지털 지수들은 표준 디지털 기법인, 이진 연산 덧셈기를 이용하여 합해진다. 아날로그 가수들은 곱해진다. 이들이 대략 1/2과 1 사이의 정상적인 값들을 나타내기 때문에, 그 결과는 대략 1/4만큼 작을 수 있다. 이러한 결과 값은 1/2에서 1의 범위로 돌아가 정상화되어야 한다. 본 실시예에서, 이는 문턱 값 회로를 이용하여 아날로그 가수와 1/2의 아날로그 표현을 비교함으로써 행해진다. 가수가 1/2 미만이면, 이는 두 배가 되고 하나를 지수로부터 빼는 데, 이러한 뺄셈은 단순 디지털 뺄셈이다. 가수를 두 배로 하는 것은 선택된 아날로그 표현에 대응하는 방식으로 구현된다. 예를 들어, 두 아날로그 값들을 더하도록 어떤 수단이든 이용된다는 것은 가수를 그 자신의 카피에 더함으로 써 두 배로 만들도록 이용될 수 있다. 예를 들어, 가수가 전류로 표현되는 경우, 그러한 카피는 전류 거울 또는 그 밖의 적합한 메커니즘에 의해 생성될 수 있고, 덧셈은 전류 합 접점에 의해 이루어질 수 있다.
원래 아날로그 가수를 곱하는 수단은 선택된 표현에 의존한다. 예를 들어, 가수들이 SCAMP를 따르며 전하를 이용하여 표현된다면, 문헌으로부터 모든 알려진 방법이 전하를 전류로 변환하는데 이용될 것이다. 예를 들어, 캐패시터의 전하가 캐패시터의 전압을 결정하기 때문에, 이는 전압의 전류로의 전환으로 구현될 수 있다. 이는 당업자에게 알려진 아날로그 전자 공학에서 기본적인 기법이다. 어떤 경우든, 가수들이 전류들로 표현된다면, 또는 가수들이 전류로 변환되기만 하면, 이들은 예를 들어 길버트(Gilbert)의 기법을 이용하여 곱해질 수 있다. 길버트 곱셈기는 필요하다면 다시 전하로 변환될 수 있는 (또는 어떠한 표현이 사용되더라도) 결과를 표현하는, 전류를 생성한다. 이들은 어떻게 필요한 동작들이 수행되는지의 단순한 예들이다. 문헌은 이러한 사항들을 광범위하게 논의하고, 이러한 종류의 아날로그 회로들은 당업자에게 알려져 있다.
값들을 더하고 빼는 것은 전통적인 디지털 부동 소수점 연산에서 행해진 바와 같이, 동일한 지수에 값들을 사전 정상화 하는 것을 요구한다. 본 실시예는 지수들을 비교하여 더 작은 것을 선택함으로써 이를 행한다. 그런 후, 더 작은 것을 큰 것으로부터 디지털 수단을 이용하여 뺀다. 차는 작은 지수에 대응하는 가수가 얼마나 많이 반으로 나누어져야 하는지를 명시한다. 그 가수가 전류로 표현 또는 변환되면, 위와 같이 계산된 지수들의 차에 의해 명시된 사다리의 단계로, 아날로그 R-2R 스타일의 사다리가 요청된 횟수로 전류를 절반으로 나누는 데 이용될 수 있다. 그 결과인 스케일다운 전류가 출력 가수를 산출하기 위해 더 큰 지수와 연결 지어진 가수에 대응하는 전류에 더한다 (이것이 LPHDR 뺄셈 동작이라면 뺀다). 출력 가수와 연결 지어진 출력 지수는 더 큰 지수 이다. 사후 정상화는 이 때 필요할 수 있다. 출력 가수가 1보다 크다면, 이는 절반으로 나누어져야 하고 출력 지수는 증가되어야 한다. 1/2보다 작다면, 이는 충분한 회수로 두 배가 되어 1/2을 초과하도록 하고 출력 지수는 이에 대응하여 감소되어야 한다. 이는 일련의 문턱 값 회로들, 2배기 회로, 및 관련 감쇠계 회로에 의해 수행될 수 있다. 이진 디지털 지수의 이러한 증가와 감소, 그리고 대응하여 아날로그 가수 전류를 두 배 및 절반으로 하는 것은 당업자에게 잘 알려진 간단한 동작들이다.
본 실시예는 지수를 디지털 이진수로 표현한다. 다른 실시예는 지수를 아날로그 값으로 표현할 수 있다. 그러나 지수가 표현하는 값의 변화를 일으키는 것은 노이즈도 아니고 오류도 아닌 방식으로 지수가 저장 및 연산으로 나타날 수 있음은 중요하다. 지수의 이러한 변화들은 저장된 수의 값들에서의 두 가지(일부 실시예에서는 더 큰) 변화 요인들을 가져올 수 있다. 지수의 정확함을 유지하기 위해, 실시예는 비교적 소수의 레벨로, 예를 들어 부호 비트에 더해 16개의 값들로 지수들을 양자화할 수 있다. 처리 중에, 지수의 아날로그 표현에서의 가벼운 변화는 16개의 표준 양자화 레벨들로 값들을 복구하는 회로에 의해 제거될 수 있다. 이러한 실시예에서, 충분히 동적인 범위를 얻기 위해, 부동 소수점 수들은 일반적인 베이스 2 수들 보다는 베이스 4 수들로서 처리될 수 있다. 예를 들어, 이는 정상화된 가수들이 1/4 내지 1의 범위에 있음을 의미한다. 덧셈, 뺄셈 및 곱셈에 대해 상기 언급한 방법들은 가볍고 간결한 변화를 가지고 서술한 바와 같이 적용된다.
상기 논의한 아날로그와 혼합된 신호 실시예들은 단지 예일 뿐 본 발명을 한정하지 않는다. 신경형태(neuromorphic), 아날로그 및 혼합 신호 기법들에 대한 공개된 문헌은 LPHDR 저장과 처리가 이행되도록 하는 풍부한 방법들을 제공한다. 이러한 저장과 처리는 LPHDR 연산을 수행하는 기계들의 작동 상태에 조립 오류 뿐만 아니라 노이즈를 가져올 수 있다. 아래에 있는 결과는 “fp+노이즈” 연산을 이용하여 소프트웨어상 어플리케이션을 실행하는 것이 이러한 매우 디지털스럽지 못한 특징에도 불구하고 이러한 방식으로 만들어진 기계는 놀랍게도 매우 유용하다는 것을 보여준다.
몇몇 중요한 실제 컴퓨팅 어플리케이션들에서 LPHDR 연산이 유용하다는 증거를 이제 보여줄 것이다. 이 증거는 본 발명의 다양한 실시예들에 대해 주어지므로, 이 유용함은 상세한 구현에 많이 의존하지 않는다는 것을 보여준다.
유용함을 보여주려는 목적으로, LPHDR 기계의 매우 일반적인 실시예를 선택하였다. 이러한 기계의 모델은 적어도 다음의 능력들을 제공하는 것이다: (1) 대규모의 병렬이고, (2) 노이즈를 가질 수도 있는 LPHDR 연산을 제공하고, (3) 각 산술부에 로컬인 적은 양의 메모리를 제공하고, (4) (일부 더욱 파워풀하고, 유연하고 정교한 연결 메커니즘 보다는) 유닛들 간에 로컬 연결만을 갖는 2차원 물리적 레이아웃으로 산술/메모리부를 제공하고, (5) 기계와 호스트 기계 사이에 제한된 대역폭만을 제공한다. 이 모델은 단지 본 발명의 다양한 실시예들의 유용성을 설명하려는 목적으로 이용되는 예 일뿐 본 발명을 한정하지 않음을 알아야 한다. 그 중에서도, 이 모델은 디지털 또는 아날로그 또는 혼합형이고, 0이상의 노이즈를 갖고, 이 모델의 가정들에 부합하는 FPGA 또는 SIMD 또는 MIMD 같은 아키텍쳐를 갖는 구현들을 포함한다. 공유된 메모리 설계, GPU 같은 설계 또는 다른 정교한 설계와 같은 더욱 일반적인 아키텍쳐는 이 모델의 능력을 포괄하고, 따라서 그러한 아키텍쳐에서 LPHDR 연산은 유용하다. SIMD가 단지 아래의 논의를 위한 예 일뿐인, 넓은 범위의 설계에서 LPHDR 연산이 유용하다는 것을 보여주면서, 연산과 메모리를 짝 짓는 각 유닛을 처리 구성요소 (혹은 PE)라 부를 것이다.
몇몇 어플리케이션들이 아래에 논의될 것이다. 각각에 대해, 본 논의는 (1) 가능한 노이즈 LPHDR 연산에서 계산이 이루어질 때 그 결과가 유용한지, (2) 연산이 기계의 리소스들(면적, 시간, 파워)을 효율적으로 이용하려는 계산 방식으로, 오직 유닛들 사이에 데이터의 로컬 흐름, 각 유닛 내에 제안된 오직 메모리, 그리고 오직 호스트 기계로/로부터 제한된 데이터 흐름과 함께 2차원에서 물리적으로 계획되었음을 보여준다. 첫 번째 요건은 “정확함”이고 두 번째 요건은 “효율”이다. 이 모델에서 두 가지 요건들을 만족시키며 실행되는 어플리케이션들은 많은 종류의 LPHDR 기계에서 잘 기능할 것이므로, 이러한 기계들은 널리 유용한 발명이다.
어플리케이션들은 기계의 연산에 대해 두 실시예들을 이용하여 테스트되었다. 하나는 적확한 부동 소수점 연산을 이용하지만, 각 산술 연산의 결과에 .99와 1.01 사이에서 일률적으로 선택된 임의의 수를 곱한다. 다음의 검토에서, 본 실시예는 “fp+노이즈”로 나타낸다. 이는 기계의 아날로그 실시예에 의해 생성된 결과들을 나타낸다.
두 번째 실시예는 도 5에 도시된 값 표현들을 갖는 로그 연산을 이용한다. 이 연산은 반복가능하여, 즉, 노이즈 없지만, 짧은 분수 크기 때문에 각 동작에서 대략 1-2%까지 오류를 만든다. 다음의 검토에서, 본 실시예는 “lns”로 나타낸다. 이는 기계의 특정 디지털 실시예에 의해 생성된 결과들을 나타낸다.
본 발명의 실시예들의 유용성을 입증하기 위해, 본 발명의 실시예들에 의해 가능하고 다양한 실제 적용들을 차례로 가능하게 하는 세가지 연산 작업들을 검토할 것이다. 작업들 중 두가지는 가장 가까운 이웃들을 찾는 것에 관한 것이고, 나머지는 시각 정보를 처리하는 것이다. 그 작업을 설명할 것이고, 그 실제 응용을 언급하고 각 작업이 상술한 일반적인 모델을 이용하여 해결 가능하므로 본 발명의 실시예들을 이용하여 해결가능 하다는 것을 입증할 것이다.
응용 1: 가장 가까운 이웃 찾기
벡터들의 큰 집합을 '예'라고 하고 벡터를 '테스트'라고 가정하면, 가장 가까운 이웃 문제(“NN”)는 거리 기준이 유클리드 거리의 제곱인(각 구성들 사이의 거리 제곱들의 합인) '테스트'에 가장 가까운 '예'를 찾는 것이다.
NN은 널리 유용한 연산이다. 한가지 이용은 데이터 압축을 위한 것인데, 이를 “벡터 양자화”라고 부른다. 이러한 응용에서, “코드 북”에서 비교적 긴 벡터들의 집합(이들은 '예'이다)과 관련된 짧은 코드 워드들(예를 들어, 코드북에서 벡터의 인덱스)을 갖는다. 압축될 벡터들의 연속성을 통하여 움직이고, 각각의 벡터(테스트)에 대해, 코드 북에서 가장 가까운 벡터를 찾고, 이에 대응하는 코드 워드를 출력한다. 이는 벡터들의 연속을 코드 워드들의 짧은 연속으로 줄인다. 코드 워드들은 벡터들의 원래 연속성을 완전히 명시하지 않으므로, 이는 데이터 압축의 손실 형태이다. 다른 응용들 중에서도, 언어(speech)압축 및 MPEG 표준에서 이용될 수 있다.
NN의 다른 응용은 영상의 단편들이 큰 비디오 데이터베이스에서 일어날 지를 판단하는 데 있을 수 있다. 여기서, 컬러 히스토그램, 스케일 불변 특징 추출, 등과 같은 알려진 방법을 이용하여, 상기 단편으로부터 비디오의 프레임들을 특징 벡터들로 추출할 수 있다. '예'들은 비디오 데이터 베이스로부터 추출된 유사한 특징 벡터들일 수 있다. 우리는 단편들로부터의 모든 벡터가 데이터 베이스로부터 모든 벡터에 가까운지를 알길 원하고, NN은 우리의 결정의 도울 수 있다.
가장 가까운 이웃의 많은 응용들에서, 정말 가장 가까운 이웃을 찾기를 원하지만, 때때로 약간 먼 정도의 다른 이웃을 찾거나 정말 가까운 이웃을 거의 항상 찾는 경우도 수용할 수 있다. 이에 특히, 특별히 빨리 또는 낮은 파워로 또는 정확한 해법에 비해 다른 약간의 장점을 가지고 계산될 수 있다면, 가장 가까운 이웃 문제에 대한 대강의 해법도 유용하다.
이제, 정확성과 효율성의 기준을 만족시키는 방식으로 본 발명의 실시예를 이용하여 대강 가장 가까운 이웃을 계산하는 것을 보여줄 것이다.
알고리즘. 알고리즘을 수행하기 위한 명령들을 포함하는 소프트웨어를 실행하는 것과 같이, 본 발명의 실시예에 따라 구현되는 기계에 의해 수행될 수 있는 알고리즘을 다음에 설명한다. 알고리즘으로의 입력들은 '예'의 집합과 '테스트' 벡터이다. 알고리즘은 '테스트'에 대해 가장 가까운(거의 가장 가까운) '예'를 찾으려고 한다.
알고리즘의 가장 단순한 버전에서, '예'의 수는 처리 구성요소들의 수보다 크지 않을 수 있고, 각 벡터는 단일 처리 구성요소의 메모리 내에 들어 맞기에 충분히 짧아야 한다. '예'들은 처리 구성요소와 연결된 메모리들에 위치하므로, 하나의 '예'는 각 처리 구성요소에 위치한다. '테스트'를 가정하면, '테스트'는 모든 처리 구성요소들을 차례로 통과한다. '테스트'가 처리 구성요소들을 통과함에 따라 이를 첨부하는 것은 어떤 처리 구성요소(이에 따라 어떤 '예')가 지금까지 발견된 가장 가까운 '예'를 산출했는지를 가리키는 정보와 함께 '테스트'로부터 지금까지 발견된 가장 가까운 예들로의 거리이다. 각 처리 구성요소는 처리 구성요소의 메모리에 저장된 '예'와 '테스트' 사이의 거리를 계산하고, 이 처리 구성요소를 통과한 거리와 지표(이 처리 구성요소에 의해 계산된 거리가 이 처리 구성요소에 들어간 거리를 초과한다면) 또는 이 처리 구성요소의 '예'가 지금까지 가장 가까운 것이라고 가리키는 정보와 함께 이 처리 구성요소가 계산한 거리(이 처리 구성요소에 의해 계산된 거리가 이 처리 구성요소에 들어간 거리보다 작다면) 중 어느 하나와 함께 '테스트'를 따라 지나간다. 이에 따라, '테스트'가 처리 구성요소들의 집합을 통과함에 따라 알고리즘은 단순한 최소화 동작을 수행하고 있다. '테스트'와 관련 정보가 마지막 처리 구성요소를 떠날 때, 출력은 '예'와 '테스트' 사이의 거리와 함께, 처리 구성요소(와 '예')가 '테스트'에 가장 가까웠을 때의 표현이다.
본 알고리즘의 더욱 효율적인 변형에서, '테스트'는 예를 들어 맨 위의 행을 따라 우선 통과하고, 다른 열들과 평행하게 효율적으로 검색을 수행하면서 모든 열이 '테스트'와 관련 정보를 아래로 통과한다. 정보가 맨 아래에 도달하면, 행을 가로질러 통과하는 한 처리된 모든 행들의 최소 거리 '예'를 계산하면서 맨 아래 행을 가로질러 통과한다. 이는 '테스트'를 처리하기 위해 요구되는 시간이 행 또는 열에서 처리 구성요소들의 수(과반 수)에 비례한다는 것을 의미한다.
이 알고리즘의 증진이 상기와 같이 진행되지만, 지금까지 발견된 가장 가까운 그리고 두번째로 가까운 '예' 모두를 가리키는 정보를 따라 계산하고 나아간다. 이 정보가 처리 구성요소 어레이를 빠져나갈 때, 처리 구성요소 어레이를 호스팅하는 디지털 프로세서가 처리 구성요소 어레이에 의해 지시된 (높은 정밀도로) 두 '예'와 '테스트' 사이의 거리를 계산하고, 둘 중에 더 가까운 것을 '테스트'에 가능성 있는 가장 가까운 이웃으로 출력한다.
정확성. C 프로그래밍 언어에서 코드로서 상기 설명한 향상된 알고리즘에 의해 수행되는 연산을 표현한다. 그 코드는 아래에서 검토할 가중치 점수와 함께, 여기에서 검토할 두 개의 가장 가까운 이웃들을 계산한다.
C 코드는 하드웨어로 구현되는 것과 같은 본 발명의 실제 구현으로서 연산을 수행하는 동일한 방법들을 이용하는 동일한 명령으로 산술 연산들의 동일한 설정을 수행한다. 이에 본 발명의 이행에서 실행될 때 상기 향상된 알고리즘이 산출할 것과 동일한 결과를 산출한다. (다음의 효율에 관한 섹션에서 논의될 구현에서 효율적으로 실행시키기 위해 어떻게 알고리즘이 조직되는지)
특히, '테스트'와 각 '예' 사이의 거리를 계산할 때, 코드는 '테스트'와 '예'의 벡터 성분들 사이의 거리의 제곱의 합을 형성하도록 요구되는 가능한 긴 가법(summation)을 수행하기 위해 아래에서 검토할 카한(Kahan)의 방법을 이용한다.
C 코드는 상술한 바와 같이, 산술을 위한 몇몇 구현들을 포함한다. “#define fp”로 편집될 때, 연산은 IEEE 표준 부동 소수점을 이용하여 이루어진다. 명령 라인 논법이 노이즈가 있는 산술을 가능하게 하기 위해 검열을 받는다면, 임의의 노이즈가 모든 계산 결과에 더해진다. 이는 연산의 “fp+noise”의 형태이다. “#define fp” 없이 편집될 때, 6비트 베이스-2 분수로 저정밀 로그 연산을 이용하여 연산이 이루어진다. 이는 연산의 “lns” 형태이다.
코드가 실행되었을 때, 수행된 계산의 결과들을 보여주는 자취를 생성하였다. 아래에 도시된 이러한 자취들은, 특정 명령 라인 논법과 함께, 향상된 알고리즘이 LPHDR 가장 가까운 이웃 계산에 대한 특정 결과들을 산출했음을 보여준다. 이러한 결과들은 이러한 접근의 유용함을 구체적으로 보여준다. 여기서 이 결과들을 간략히 검토할 것이다.
첫 번째 결과들은 “fp+noise”를 위한 것이다. 10개의 실행이 별도로 수행되었다. 각 실행은 길이 5의 100만개의 임의의 '예' 벡터들을 발생시켰다. 여기서, 각 벡터의 각 성분은 N(0,1)로부터 - 평균 0와 표준 편차 1의 가우스(정상) 분포로 얻어졌다. 각 실행은 길이 5의 100개의 '테스트' 벡터들을 발생시켰다. 여기서, 각 벡터의 각 성분은 또한 N(0,1)로부터 얻어졌다. 각 '테스트'에 대해, 가장 가까운 이웃은 상기 개선된 알고리즘과 고정밀 부동 소수점 연산을 이용한 표준 가장 가까운 이웃 모두에 따라 계산되었다. 셈은 표준 부동 소수점 방법과 동일한 결과를 산출하는 개선된 알고리즘으로 그 횟수가 유지되었다. 그 결과는 다음과 같았다.
% ./a.출력 5 10 1000000 100 1
노이즈를 갖는 부동 소수점 표현
실행 1. 100개의 테스트에 있어, 100(100.0%) 일치와 0.81% 평균 점수 오류.
실행 2. 100개의 테스트에 있어, 100(100.0%) 일치와 0.84% 평균 점수 오류.
실행 3. 100개의 테스트에 있어, 100(100.0%) 일치와 0.98% 평균 점수 오류.
실행 4. 100개의 테스트에 있어, 100(100.0%) 일치와 0.81% 평균 점수 오류.
실행 5. 100개의 테스트에 있어, 100(100.0%) 일치와 0.94% 평균 점수 오류.
실행 6. 100개의 테스트에 있어, 100(100.0%) 일치와 0.82% 평균 점수 오류.
실행 7. 100개의 테스트에 있어, 100(100.0%) 일치와 0.78% 평균 점수 오류.
실행 8. 100개의 테스트에 있어, 100(100.0%) 일치와 0.86% 평균 점수 오류.
실행 9. 100개의 테스트에 있어, 100(100.0%) 일치와 0.85% 평균 점수 오류.
실행 10. 100개의 테스트에 있어, 99(99.0%) 일치와 0.86% 평균 점수 오류.
시간 LPHDR의 평균 비율(마지막 DP 정정과 함께)은 가까운 예가 99.9%이고, LPHDR과 DP 사이의 평균 점수 오류는 0.85%임을 알 수 있다.
“평균 점수 오류” 값은 아래의 가중치 점수의 검토에서 고려된다. “일치” 정보는 여기서 의의가 있다.
열 개의 실행 중에서 오직 하나가, 행해진 100개의 테스트들 중에 보통의 고정밀 방법이 산출하는 것과는 다른 가장 가까운 이웃을 산출하는 어떤 테스트를 가졌다. 이에, “fp+noise” 연산으로 실행되는 향상된 알고리즘과 보통의 방법 사이의 일치의 평균 비율은 99.9%였다.
이후, 유사한 계산이 “lns”연산을 이용하여 수행되었다. 이 경우에, 그 결과는
% ./a.출력 5 10 1000000 100 0
노이즈를 없이 로그 수 체계 표현
실행 1. 100개의 테스트에 있어, 100(100.0%) 일치와 0.15% 평균 점수 오류.
실행 2. 100개의 테스트에 있어, 100(100.0%) 일치와 0.07% 평균 점수 오류.
실행 3. 100개의 테스트에 있어, 100(100.0%) 일치와 0.08% 평균 점수 오류.
실행 4. 100개의 테스트에 있어, 100(100.0%) 일치와 0.09% 평균 점수 오류.
실행 5. 100개의 테스트에 있어, 100(100.0%) 일치와 0.11% 평균 점수 오류.
실행 6. 100개의 테스트에 있어, 100(100.0%) 일치와 0.16% 평균 점수 오류.
실행 7. 100개의 테스트에 있어, 100(100.0%) 일치와 0.07% 평균 점수 오류.
실행 8. 100개의 테스트에 있어, 100(100.0%) 일치와 0.13% 평균 점수 오류.
실행 9. 100개의 테스트에 있어, 99(99.0%) 일치와 0.17% 평균 점수 오류.
실행 10. 100개의 테스트에 있어, 98(98.0%) 일치와 0.16% 평균 점수 오류.
시간 LPHDR의 평균 비율(마지막 DP 정정과 함께)은 가까운 예가 99.70%이고, LPHDR과 DP 사이의 평균 점수 오류는 0.12%임을 알 수 있다.
일치의 평균 비율이 99.7%로, “fp+noise”의 경우보다 약간 나쁘다.
LPHDR 연산의 두 가지 형태를 이용하는 향상된 가장 가까운 이웃 알고리즘에 의해 보여진 정확함은 놀랍다. 연속적으로 1%의 오류를 갖는 많은 계산들을 수행하지만 1% 미만의 마지막 결과를 생성하는 것은 직관에 반대되는 것 같다. 그럼에도 불구하고, LPHDR 연산은 효과적임을 증명하고, 보여진 정확함은 대략 가장 가까운 이웃 계산이 유용한 응용들에서 도움이 될 만큼 높다.
극단적인 경우, 노이즈가 +10% 에서 -5%로 일률적으로 변하는 fp+noise의 변형이 테스트되었다. 이에 따라, 각 산술 연산은 너무 큰 10%와 너무 작은 5% 사이에 있는 결과를 내었다. 상술한 바와 같은 향상된 가장 가까운 이웃 알고리즘은 수행되어 각 실행이 100,000개의 '예' 벡터들을 발생시켰다. 아래의 놀라운 결과들은 부정확하고, 노이즈가 있으며, 0이 아닌 평균 LPHDR 연산의 극단적인 레벨임에도, 유용한 결과들을 달성하였음을 보여준다.
실행 1. 100개의 테스트에 있어서, 97(97.0%) 일치.
실행 2. 100개의 테스트에 있어서, 100(100.0%) 일치.
실행 3. 100개의 테스트에 있어서, 100(100.0%) 일치.
실행 4. 100개의 테스트에 있어서, 98(98.0%) 일치.
실행 5. 100개의 테스트에 있어서, 98(98.0%) 일치.
실행 6. 100개의 테스트에 있어서, 99(99.0%) 일치.
실행 7. 100개의 테스트에 있어서, 99(99.0%) 일치.
실행 8. 100개의 테스트에 있어서, 99(99.0%) 일치.
실행 9. 100개의 테스트에 있어서, 99(99.0%) 일치.
실행 10. 100개의 테스트에 있어서, 99(99.0%) 일치.
시간 LPHDR의 평균 비율(마지막 DP 정정과 함께)은 가까운 예가 98.80%임을 알 수 있다.
효율성. 놀랄만한 정확성 결과와 달리, 향상된 가장 가까운 이웃 알고리즘의 계산은, 처리 구성요소들 사이에서 로컬 통신만을 이용하여 2차원 물리적 배치에 연산/메모리부들이 연결되는 제시된 컴퓨팅 모델에서 효율적으로 수행될 수 있다는 것은 본 기술 분야에서 보통의 기술을 갖는 자들에게 명확하다. 그러나, 이는 낮은 대역폭을 이용하는 유용한 작업을 수행하는 기계를 바쁘게 유지하는 사항들을 호스트 기계에 어드레스하지 않는다.
단일 '테스트'에 가장 가까운 이웃을 계산할 때, 테스트는 어레이에서 모든 처리 구성요소들을 거쳐 이루어진다. 상기 논의한 바와 같이, 어레이가 MxM 그리드라면, 기계를 통과하고 그 결과를 호스트에 돌려주기 위하여 적어도 O(M)개의 단계들을 갖는다. 이 시간 동안, 기계는 O(MxM)개의 가장 가까운 이웃 거리 계산을 수행하지만, 기계가 각 단계에서 O(MxM) 개의 계산들을 수행할 수 있으므로, O(M)의 인자는 허비된다.
O(M)의 인자의 이러한 능률 촉진은, 일련의 기계들에 비해 중요하고 유용하다. 그러나, 효율은 훨씬 더 높아질 수 있다. 충분히 많은 '테스트' 벡터들이, 말하자면 O(M), 또는 그 이상이 처리된다면, 이들은 기계에 들어가 파이프라인 방식으로 나아가도록 만들어질 수 있다. O(M) '테스트'를 처리하기 위한 시간은 단일 '테스트'와 동일한 O(M)이지만, 이제 기계는 O(M)xO(MxM)의 거리 계산을 수행하고 기계의 총 컴퓨팅 용량이 사용되는 상수 인자 내에 있다.
이에 따라, 적어도 처리 구성요소의 수의 제곱근만큼 많은 '테스트' 벡터로 처리한다면 본 기계는 특별히 효율적이다. '예'의 집합에서 모든 '예'에 가장 가까운 이웃을 찾는 문제뿐만 아니라 많은 독립된 '테스트'의 패턴 인식 또는 압축(예, 이미지의 블록들, 파일의 부분들, 독립된 주식의 가격 역사들)과 같은 이러한 형태에 잘 들어맞는 어플리케이션들이 있다. 이는 본 기술 분야에서 보통의 기술을 가진 자들의 일반적인 관점에 반하여, 상기 서술한 바와 같이, 단일 칩 또는 그 유사한 것에 있어 매우 많은 산술 처리 구성요소들을 갖는 기계들이 매우 유용하지 않다.
응용 2: 거리 가중치 점수
가장 가까운 이웃과 관련된 작업은 '거리 가중치 점수 매기기'이다. 이러한 작업에서, 각 '예'는 연관 점수를 갖는다. 이는 몇 가지 방식으로 '예'의 특징을 나타내는 숫자이다. 예를 들어, '예'가 주어진 주식의 가격의 역사에 대한 추상이라면, '점수'는 가격이 오를 것인지 내릴 것인지에 대한 역사적 확률일 수 있다. '테스트' 벡터를 가정하면, 작업은 모든 예들의 '점수'들의 가중치 합을 형성하는 것이고, 여기서 가중치들은 '테스트'로부터 각 '예'까지의 거리의 점점 감소하는 함수이다. 예를 들어, 이 가중치 점수는 그 역사가 '테스트'에 의해 표현되는 주식의 미래 가격에 대한 예측으로 받아들여질 수 있다. 본 발명 실시예의 이러한 이용은 저정밀 계산이 재정적인 응용에서 소용이 없다는 당업자들에 의한 일반적인 관점에도 불구하고, 특정 “분량(quantitative)”의 헤지 펀드에 의해 수행되듯이, 예를 들어, 주식의 고속 트레이딩 지원을 도울 수 있다.
상술한 C 코드는 가장 가까운 이웃들과 함께 가중치 점수들을 계산한다. 이러한 계산에서 '예'에 할당된 점수들은 범위[0,1]로부터 일률적으로 가져온 임의의 수이다. 이러한 계산에서 각 '예'에 대한 가중치는 모든 '예'들의 비정상화된 가중치들의 합계에 의해 나누어진 '예'에 대한 비정상화된 가중치로 정의될 수 있는데, 각 '예'의 비정상화된 가중치는 '예'로부터 '테스트' 벡터까지 제곱된 거리 더하기 하나의 합계의 역으로 정의된다. 상술한 바와 같이, 코드는 많은 실행들을 수행하면서 각각 많은 '예'와 '테스트'를 생성하고, 전통적인 부동 소수점 계산의 결과들을 fp+노이즈와 lns 연산을 이용하여 계산된 값과 비교한다.
상기 시뮬레이션을 실행한 자취 결과들을 다시 보면, fp+노이즈에 대해 평균의 LPHDR 가중치 점수들이 바른 값의 .85% 내에 있었고, 1% 만큼 다르지 않음을 알 수 있다. lns 연산에 대해, 오류는 더욱 작아졌고, 평균 단지 12% 오류를 낸다.
이러한 결과들은 전반적인 가중치 점수를 계산하는 것이 각 '예'에 관련된 개별적인 가중치 점수들을 합계하는 것을 포함한다는 것을 고려하면 놀랄만하다. 각 실행이 1,000,000개의 '예'를 처리하고 있었으므로, 이는 합계가 100만의 작은 양의 값들 이상이었음을 의미한다. 각 덧셈에서 100만의 작은 값들을 대략 1%의 오류로 합계하는 소박한 방법은 노이즈에 가까운 결과를 산출할 것이다. 그러나, 코드는 카한(Kahan, William, “끊어지는 오류를 줄이기 위한 소견(Further remarks on reducing truncation errors,” 1965년 1월, ACM 통신, 8(1):40)에 의해 발명된 오래 알려진 방법을 이용하여 그 합계를 수행한다. 이 방법은 거리 가중치 점수를 위해 행해진 바와 같이, 또는 몬테 카를로(Monte Carlo) 방법들을 이용하여 파생 증권들의 가격을 계산할 때 계산에 관한 재정에 이용될 수 있듯이, 또는 이하에 설명될 바와 같이 이미지 처리 알고리즘에서 디콘볼루션을 수행하기 위한 로그 합을 수행하는 것을 실현 가능하게 한다.
이러한 알고리즘의 효율은 먼저 검토한 바와 같이 NN과 비슷하다. 많은 '테스트' 벡터들이 한번에 처리된다면, 기계는 특히 효율적으로 수행한다.
응용 3: 이미지에서 모션 블러 제거
이미지를 형성하기 위한 충분한 빛을 모으기 위해, 카메라 셔터는 종종 카메라의 움직임이 흐릿함을 가져올 정도로 충분히 오래 열린 채로 있다. 이는 위성이나 항공기에 장착된 매우 비싸지만 빠르게 움직이는 카메라뿐만 아니라 싼 소비자 카메라에서 카메라가 흔들린 결과로 나타날 수 있다. 카메라의 이동 경로가 알려진다면 (혹은 계산된다면), 다양한 디블러링 알고리즘을 이용하여 흐릿함은 실질적으로 제거될 수 있다. 이러한 알고리즘 중 하나는 리차드슨 루시(Richardson-Lucy, RL) 방법이고, 여기에서 본 발명의 실시예들이 이 알고리즘을 실행하여 유용한 결과들을 도출할 것이다. 상술한 검토 양식에 따라, 정확성과 효율성을 기준으로 논할 것이다.
알고리즘. 리차드슨 루시 알고리즘은 잘 알려져있고 널리 이용할 수 있다. 알려진 커널(kernel)을 이용하여 이미지가 흐려졌다고 가정하자. 특히, 커널이 직선이고 이미지는 흐릿함이 완전히 수평방향으로 일어날 수 있게 향해 있음을 가정하자. 흐려진 이미지의 각 행에서 J번째 픽셀이 원래의 흐려지지 않은 이미지의 J부터 J+31까지의 픽셀들의 일률적으로 가중된 평균이라고 생각하자.
정확성. LPHDR 연산을 이용하는 RL 방법의 간단한 버전을 C 프로그램 언어로 이행하였다. 프로그램은 테스트 이미지를 판독하여, 상술한 커널을 이용하여 흐리게 하고, fp+노이즈 또는 lns 연산 중 어느 하나를 이용하여 흐릿함을 제거한다. RL알고리즘은 흐릿함이 제거된 이미지의 현재 어림짐작으로 커널을 감을 때와 같이 합계를 계산한다. 우리의 구현은 앞서 검토한 카한의 방법을 이용하여 이러한 합계를 계산한다. 도 7은 원래 형태의 테스트 이미지이다. 이는 버락 오바마의 취임식 동안 이용된 빌딩의 위성 사진이다. 도 8은 커널에 의해 극단적으로 흐려진 이미지이다. 이 이미지에서는 어떤 특정한 물체를 보기 어렵다. 도 9는 표준 부동 소수점 연산을 이용하여 흐릿함을 제거한 결과를 나타낸다. 도 10은 fp+노이즈 연산을 이용하여 흐릿함을 제거한 결과를 나타낸다. 도 11은 lns 연산을 이용하여 흐릿함을 제거한 결과를 나타낸다. 모든 이러한 경우에, 이미지는 빌딩, 거리, 주차장들 및 차들을 인식할 수 있을 정도로 충분히 복구된다.
여기서 사람의 눈을 이용하여 판단하기 위한 이미지를 표시하는 것에 더하여, 흐릿함 제거 성능의 수치 측정을 계산하였다. 원래의 각 픽셀 값(0부터 255의 계조 값)과 RL방법에 의해 복구된 이미지에서의 대응하는 값 사이에서 이미지의 모든 픽셀에 대해 평균 차이를 계산하였다. 그러한 수치 측정값들이 아래의 표1에 나타나 있다.
이미지 형태 평균 픽셀 오류
흐려짐 32.0
표준 부동 소수점을 이용한 RL 13.0
fp+노이즈를 이용한 RL 13.8
lns를 이용한 RL 14.8
사람의 눈에 의해 만들어진 주관적이나 중요한 판단과 함께, 이러한 결과는 LPHDR 연산이 표준 부동 소수점 연산에 비해 실질적이고 유용한 정도의 흐릿함 제거(deblurring)를 제공한다는 것을 보여준다. 나아가, 본 예에서, LPHDR 연산을 이용한 흐릿함 제거의 개념과 시각적인 효과를 더 잘 전달하기 위해 극단적인 정도의 블러링을 선택하였다. 더욱 완만하고 전형적인 블러 커널들에 있어, 흐릿함이 제거된 결과의 이미지들은 커널 길이를 축소시키고 더욱 일반적인 경우에 LPHDR 연산을 갖는 RL 알고리즘을 실행함으로써 볼 수 있듯이 이 경우에 있어서 보다 원래의 것에 가까워진다.
효율성. 로컬 커널을 이용하는 리차드슨-루시는 오직 로컬 계산에 관한 동작을 수행하는 것은 당업자에게 명확하다. 흐릿함이 제거될 이미지는 처리 구성요소 당 하나 이상의 픽셀들을 저장하는 처리 구성요소 어레이에 불러들여지고, RL의 디콘볼루션 동작은 수십 또는 수백번 반복될 수 있으며, 흐릿함이 제거된 이미지는 호스트 프로세서에 의해 다시 판독될 수 있다. 충분한 반복이 수행되는 한, 이는 기계의 사용을 효율적이게 할 것이다.
이미지 흐릿함 제거의 극단적 형태는 계산에 관한 X선 단층 촬영법에 이용되는 반복적인 복원방법이다. 2차원 투영으로부터 3차원 입체를 복원하는 것은 극히 계산적인 작업이다. 상술한 방법은 반복적인 복원을 자연스럽게 일반화시키고 기계의 사용을 효율적이게 한다.
본 발명의 실시예들의 하나 이상의 장점들은 다음과 같다.
본 발명의 특정 실시예에 따라 구현된 처리 구성요소들은 연산을 할 수 있는 처리 구성요소들에 대해 비교적 적을 수 있다. 이는 리소스(예, 트랜지스터, 면적, 볼륨) 단위 당 많은 처리 구성요소들이 있다는 것을 의미하고, 이는 결국 리소스 단위 당 많은 양의 산술 계산력이 있음을 의미한다. 이는 주어진 양의 리소스로 전통적인 컴퓨터 설계가 하는 것보다 더 많은 문제를 해결할 수 있게 한다. 예를 들어, 현재 최첨단의 기술로 조립된 큰 실리콘 칩으로서 만들어진 본 발명의 디지털 실시예는 종래의 GPU가 수백 또는 종래의 멀티코어 CPU에서 소량인 것과 달리 사이클 당 수만의 산술 연산을 수행할 수 있다. 이러한 비율은 나노테크놀로지 또는 그 밖의 디지털 및 아날로그 컴퓨팅을 위한 구현들에 도달하는 바로 그 순간에도 조립 기술이 향상을 계속함에 따라 지속될 본 발명의 실시예의 아키텍쳐 장점들을 반영한다.
소수의 리소스들로 연산을 하는 것은 일반적으로 그리고 본 실시예서 특별히, 연산은 낮은 전력으로 행해진다는 것을 의미한다. 그 결과, 본 발명의 실시예에 따라 구현된 기계는 적당한 전력(예를 들어 수십 와트)의 극단적으로 높은 성능 또는 적당히 높은 성능의 저전력(예를 들어 적은 와트)을 가질 수 있다. 이는 이러한 실시예들이 전체 범위의 컴퓨팅, 즉, 슈퍼 컴퓨터로부터 데스크탑을 거쳐 모바일 컴퓨팅까지에 적합할 수 있음을 의미한다. 마찬가지로, 일반적으로 비용은 쓸 수 있는 리소스들의 양과 연관되므로, 본 발명의 실시예들은 종래의 컴퓨팅 장치들에 비해 단위 비용당 비교적 높은 양의 컴퓨팅 파워를 제공할 수 있다.
SIMD 아키텍쳐는 꽤 오래되었고 당업자에 의한 컴퓨터 설계로의 접근에 있어 자주 버려진다. 그러나, SIMD 기계의 처리 구성요소들이 일반적인 산술 능력과 같은 중요한 기능성을 보유하면서도 특히 작게 만들어질 수 있다면, 이 아키텍쳐는 유용할 수 있다. 여기에 있는 실시예들은 정확히 그러한 특징들을 갖는다. 유용하지 못할 것이라는 일반적인 믿음과 달리 대량의 LPHDR 연산이 일반적인 컴퓨팅 구조로써 충분히 유용하다는 발견이 단지 SIMD 실시예에서가 아니라 어떠한 (대량 또는 대량이 아닌) 병렬 기계 설계 또는 비병렬 설계에서 장점이 될 수 있다. 이는 FPGA, FPAA, GPU/SIMT 기계들에서, MIMD 기계들에서, 및 적은 량의 리소스들(트랜지스터 또는 볼륨 같은)을 이용하여 많은 양의 계산을 수행하기 위해 콤팩트한 산술 처리 구성요소들을 이용하는 모든 종류의 기계들에서 이용될 수 있다.
본 발명의 실시예들의 다른 장점은, 이러한 실시예들이 오직 (또는 주로) 저정밀 컴퓨팅 구성요소들만 포함할지라도, 일반적으로 효율적으로 계산을 수행하기에 단지 유용한 것이 아니라 고정밀 컴퓨팅 구성요소를 요구하는 것으로 일반적으로 가정되는 다양한 현실 세계의 문제들에 착수하도록 이용될 수 있다는 것이다. 이러한 실제 세계의 문제들 중 몇몇 예를 여기에 나타냈고, 또한 분자 역학 시뮬레이션을 위한 비결합력장의 계산을 구현하는 것 및 다른 작업들에 대해 성공하였지만, 이는 단지 예일 뿐, 본 발명의 실시예들이 해결할 현실 세계의 문제들의 전부는 아니다.
상술한 실시예는 단지 예일 뿐 본 발명을 한정하지 않는다. 더 적절하게 말하자면, 본 발명의 실시예들은 다음과 같은 다양한 다른 방법으로 구현될 수 있다.
예를 들어, 본 발명의 실시예들은 디지털 또는 아날로그 표현들을 이용함으로써, 고정 소수점으로, 로그 또는 부동 소수점 표현, 전압, 전류, 전하, 펄스 폭, 펄스 밀도, 주파수, 확률, 스파이크, 타이밍 또는 이들의 결합과 같은 모든 다양한 방식으로 값들을 표현할 수 있다. 이러한 기본적인 표현들은 개별적으로 또는 결합하여 LPHDR 값들을 표현하는데 이용될 수 있다. LPHDR 연산 회로들은 다양한 디지털 방법들(병렬 또는 직렬, 파이프라인 또는 아닐 수 있는) 또는 아날로그 방법들 또는 이들의 결합을 이용하는 것과 같이 모든 다양한 방법으로 구현될 수 있다. 산술 구성요소들은 가장 가까운 4, 가장 가까운 8, 정도가 변하는 건너뜀, 및 사각형 또는 그리드 같은 아키텍쳐들과 같은 다양한 연결 아키텍쳐를 이용하여 연결될 수 있다. 병렬 또는 직렬, 디지털 또는 아날로그 또는 혼합형 통신과 같은 산술 구성요소들 간의 통신을 위해서라면 어떠한 방법도 이용될 수 있다. 산술 구성요소들은 동기 또는 비동기식으로 동작할 수 있고, 전체적으로 동시에 또는 그렇지 않게 동작할 수 있다. 산술 구성요소들은 예들 들어, 실리콘 칩과 같은 단일 물리적 장치 상에서 구현되거나, 다중 장치들에 걸쳐 분산될 수 있고, 다중 장치들로부터 만들어진 실시예는 예를 들어 그리드(grid), 원환체(torus), 하이퍼큐브(hypercube), 트리(tree) 또는 다른 방법으로서 연결되는 것을 포함하는 다양한 방식으로 연결된 그 산술 구성요소들을 가질 수 있다. 산술 구성요소들은 비용과 대역폭 및 특정 실시예의 다른 요건들에 따라, 만약 있다면 호스트 기계에 다양한 방식으로 연결될 수 있다. 예를 들어 산술 구성요소들의 집단에 연결된 많은 호스트 기계들이 있을 수 있다.
본 발명의 특정 실시예들이 SIMD 아키텍처로 구현되는 것으로서 설명되었지만, 이는 단지 예일뿐 본 발명을 한정하지 않는다. 예를 들어, 본 발명의 실시예들은 현존하는 FPGA의 곱셈 블록들이 여기에 설명한 모든 종류의 LPHDR 산술 구성요소들에 의해 대체되거나 보완되는, 또는 예를 들어 LPHDR 구성요소들이 새로운 또는 현존하는 재구성 가능한 장치 설계에 포함되는 설계와 같이, 이에 한정하지는 않지만 프로그램 가능한 논리 장치들, 필드 프로그램 가능한 아날로그 어레이, 또는 필드 프로그램 가능한 게이트 어레이 아키텍쳐와 같은 재구성 가능한 아키텍쳐로서 구현될 수 있다. 다른 예로써, 본 발명의 실시예들은 여기에 개시된 모든 종류의 LPHDR 산술 구성요소들을 통합하는 GPU 또는 SIMT 스타일 아키텍쳐로서 구현될 수 있다. 예를 들어, LPHDR 구성요소들은 현재 또는 새로운 그래픽 처리부 설계들에서 전통적인 산술 구성요소들을 보와 또는 대체할 수 있다. 또 다른 예로서, 본 발명의 실시예들은 여기에 개시된 모든 종류의 LPHDR 산술 구성요소들을 통합하는 MIMD 스타일 아키텍쳐로서 구현될 수 있다. 예를 들어, LPHDR 산술 구성요소들은 현재 또는 새로운 MIMD 컴퓨팅 시스템 설계에서 전통적인 산술 구성요소들을 보완 또는 대체할 수 있다. 또 다른 예로, 본 발명의 실시예들은 전통적인 아키텍쳐들에 비해 적은 량의 리소스들(예를 들어, 트랜지스터, 면적 또는 볼륨)을 이용하여 많은 량의 산술 컴퓨팅 능력을 제공하기 위해 콤팩트한 산술 처리 구성요소들을 이용하는, 대량의 병렬 기계를 포함하는, 모든 종류의 기계들로 구현될 수 있다.
본 발명의 특정 실시예들이 여기에서 소프트웨어를 실행하는 것으로 설명되었지만, 이는 단지 예일 뿐 본 발명을 한정하지 않는다. 이와 달리, 예를 들어, 본 발명의 실시예들은 여기에 개시된 모든 종류의 LPHDR 산술 구성요소들을 제어하기 위해 마이크로코드(microcode), 하드웨어 시퀀스(hardware sequence), 상태 기계 또는 다른 제어부를 이용하여 구현될 수 있다. 이와 달리, 예들 들어, 본 발명의 실시예들은 여기에 개시된 모든 종류의 LPHDR 산술 구성요소들을 제어하기 위해 배선 연결된, 기록된(burned) 또는 다른 사전에 프로그램된 제어부를 이용하여 구현될 수 있다.
본 발명의 특정 실시예들이 여기에서 주문형 실리콘을 하드웨어로서 이용하면서 구현되는 것으로 설명되었지만, 이는 단지 예일 뿐 본 발명을 한정하지 않는다. 이와 달리, 예를 들어, 본 발명의 실시예들은 기본적인 하드웨어로서 FPGA 또는 다른 재구성 가능한 칩들을 이용하여 구현될 수 있는데, 여기에서 FPGA 또는 다른 재구성 가능한 칩들은 여기에 개시된 LPHDR 동작들을 수행하도록 구성된다. 또 다른 예로, 본 발명의 실시예들은 여기에 개시된 LPHDR 동작들을 수행하도록 소프트웨어로 프로그램된 모든 프로그램 가능한 종래의 디지털 또는 아날로그 컴퓨팅 아키텍쳐(고정밀 컴퓨팅 구성요소들을 이용하는 것들을 포함, LPHDR 연산을 수행하기 위해 비-LPHDR 하드웨어의 모든 종류를 이용하는 것들을 포함, 대량으로 병렬인 것들을 포함)를 이용하여 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 여기에 개시된 기능들의 소프트웨어 에뮬레이터를 이용하여 구현될 수 있다.
또 다른 예로, 본 발명의 실시예들은 실리콘 칩이건 그렇지 않건에 기초하여 3D 조립 기술들을 이용하여 구현될 수 있다. 일부 예시적인 실시예들은 프로세서 또는 다른 장치 칩 상에 메모리 칩이 결합되었거나 몇몇 메모리 및/또는 프로세서 혹은 다른 장치 칩들이 서로 쌓여서 결합되었던 것들일 수 있다. 본 발명의 3D 실시예들은 2D 실시예들보다 더욱 밀집될 수 있으므로 매우 유용하고, 2D 실시예들에 비해 그러한 실시예들에서 더 많은 알고리즘들을 효율적으로 실행하도록 하는, 처리 유닛들 사이에서 정보의 3D 통신을 가능하게 할 수 있다.
본 발명의 특정 실시예들이 여기에서 실리콘 칩 조립 기술을 이용하여 구현되는 것으로 설명되었지만, 이는 단지 예일 뿐 본 발명을 한정하지 않는다. 이와 달리, 예를 들어, 본 발명의 실시예들은 다른 종류의 전통적인 디지털 및 아날로그 컴퓨팅 프로세서 또는 다른 장치들을 가능하게 할 수 있는 기술들을 이용하여 구현될 수 있다. 이러한 기술들의 예는 여기에 개시된 종류의 LPHDR 아키텍쳐들을 구현할 수 있는, 다양한 나노역학적 및 나노전자적 기술들, DNA 컴퓨팅과 같은 화학 기반 기술들, 나노와이어, 나노튜브 기반의 기술들, 광학적 기술들, 역학적 기술들, 생물학적 기술들, 트랜지스터이건 아니건 간에 기초한 그 밖의 기술들을 포함한다.
본 발명의 특정 실시예들이 “대량의 병렬” 실시예들로 설명되었다. 본 발명의 특정 실시예들은 수천, 수백만, 또는 그 이상의 산술부들을 포함할 수 있지만, 본 발명은 어떤 수(하나 정도의 작은 수)의 산술부들을 포함할 수 있다. 예를 들어. 오직 하나의 LPHDR 부를 포함하는 실시예 조차 작고 저렴한 프로세서 또는 다른 장치에서 상당한 량의 LPHDR 처리 능력을 제공하기 위해 일련의 처리부 또는 다른 장치에서 이용될 수 있다.
본 발명의 특정 실시예에 있어, 오직 디지털 기법들을 이용하여 실행될지라도, 산술 연산들은 선택된 낮은 정밀도 표현 내에서 결정론적인, 반복가능한 또는 가장 정확한 가능한 결과들을 산출할 수 없을 것이다. 예를 들어, 어떤 특정 입력 값들에서, 산술 연산은 선택된 표현 내에서 정확한 산술 결과에 가장 가까운 값이 아닌 결과를 생성할 수 있다.
“낮은 정밀도, 높은 동적 범위” 산술 구성요소의 정밀도는 구현에 따라 변할 수 있다. 예를 들어, 특정 실시예로, LPHDR 산술 구성요소는 분수를, 즉, 0보다는 크고 1보다는 작은 값들을 포함하는 결과를 생성한다. 예를 들어, LPHDR 산술 구성요소는 때때로 (또는 항상) 올바른 결과의 0.05%에 근접하지 않은 결과들을 생성한다 (즉, 생성된 결과와 올바른 결과 사이의 차이의 절대값이 올바른 결과의 절대값의 1퍼센트의 20분의 1이상이다). 다른 예로써, LPHDR 산술 구성요소는 때때로 (또는 항상) 올바른 결과의 0.1%에 근접하지 않은 결과들을 생성한다. 또 다른 예로써, LPHDR 산술 구성요소는 때때로 (또는 항상) 올바른 결과의 0.2%에 근접하지 않은 결과들을 생성한다. 또 다른 예로써, LPHDR 산술 구성요소는 때때로 (또는 항상) 올바른 결과의 0.5%에 근접하지 않은 결과들을 생성한다. 또 다른 예로써, LPHDR 산술 구성요소는 때때로 (또는 항상) 올바른 결과의 1% 또는 2% 또는 5% 또는 10% 또는 20%에 근접하지 않은 결과들을 생성한다.
이 외에도, 다양한 가능한 정밀도로, 처리하는 값들의 공간의 동적 범위에서 구현이 변할 수 있다. 예를 들어, 특정 실시예들에서, LPHDR 산술 구성요소는 대략 100만분의 1에서 100만까지의 범위를 갖는 공간에서 값들을 처리한다. 다른 예로서, 특정 실시예들에서, LPHDR 산술 구성요소는 대략 10억분의 1에서 10억까지의 범위를 갖는 공간에서 값들을 처리한다. 또 다른 예로, 특정 실시예들에서, LPHDR 산술 구성요소는 대략 65만분의 1에서 65만까지의 범위를 갖는 공간에서 값들을 처리한다. 또 다른 예로, 특정 실시예들에서, LPHDR 산술 구성요소는 0에서 65만분의 1 사이의 특정 값으로부터 65만 이상의 어느 특정 값까지의 범위를 갖는 공간에서 값들을 처리한다. 또 다른 예로, 다른 실시예들은 앞의 예들을 결합하고 이들 사이에 떨어지는 동적 범위들을 갖는, 예를 들어, 대략 10억분의 1부터 천만의 범위를 갖는 공간에서 값들을 처리한다. 다른 실시예들 뿐만 아니라 모든 이러한 본 발명의 예시적인 실시예들에서, 우리가 검토하고 있는 값들은 부호를 가질 수 있고, 따라서 상기 설명은 논의된 숫자들의 절대값들에 특징을 부여한다.
결과들을 정정하기 위한 근사값들을 산출할 LPHDR 산술 구성요소들의 주파수는 구현에 따라 변할 수 있다. 예를 들어, LPHDR 산술 구성요소들이 하나 이상의 동작들(아마도 예를 들어 삼각함수를 포함하는)을 수행할 수 있는 실시예를 생각하면, 각 동작에 대해, LPHDR 구성요소들 각각은 유효한 값들의 범위로부터 도출된 입력들의 집합을 받아들이고, 입력 값들의 각 특정 집합에 대해, LPHDR 구성요소들은 각각 하나 이상의 출력 값들을 생성하고 (예를 들어, 입력의 사인과 코사인 모두를 동시에 계산), 입력의 특정 집합들에 대해 생성된 출력 값들은 결정론적 또는 비결정론적일 수 있다. 이러한 예시적 실시예에서, LPHDR 구성요소에 의해 계산된 결과가 수학적으로 맞는 결과와 다를 수 있는 상대적인 오류 량(E)과 유효한 입력들의 분수(F)를 고려하자. 본 발명의 특정 실시예들에서, 각 LPHDR 산술 구성요소들에 대해, LPHDR 부가 수행할 수 있는 적어도 하나의 동작에 대해, 그 동작에 대해 가능한 유효 입력들의 적어도 분수(F)에 대해, 그 동작에 의해 생성되는 적어도 하나의 출력 신호에 대해, 입력들 각각에 상기 동작을 실행할 때, LPHDR 부의 출력 신호에 의해 표현되는 수치들의 반복 실행에 따른, 통계적인 평균은 동일한 입력 값들에 동작의 정확한 수학적 계산의 결과로부터 적어도 E만큼 차이가 있다. 여기서 F는 1%이고, E는 0.05%이다. 몇몇 다른 실시예들에서, F는 1%가 아니라 대신에 2%, 5%, 10%, 20%, 50% 중 하나이다. F에 대한 일부 특수 값을 갖는 이러한 예시적 실시예들 각각에 대해, E가 0.05%가 아니라 대신에 0.1%, 또는 0.2%, 또는 0.5%, 또는 1%, 또는 2%, 또는 5%, 또는 10%, 또는 20%인 다른 실시예들이 있다. 이렇게 변하는 실시예들은 단지 예일 뿐 본 발명의 한정을 구성하지 않는다.
본 발명에 따라 실시된 특정 장치들(컴퓨터, 프로세서 또는 다른 장치들)에 대해서, 이 장치들(컴퓨터, 프로세서 또는 다른 장치들)에서 LPHDR 산술 구성요소들의 수는 전통적인 정밀도의 고동적 범위의 연산(즉, 32비트 이상의 단어 길이를 갖는 부동 소수점 연산)을 수행하도록 설계된 장치에서의 산술 구성요소들의 값, 0일 수 있는 값을 초과한다. NL이 이러한 장치의 LPHDR 구성요소들의 총 개수이고, NH가 전통적인 정밀도의 고동적범위의 연산을 수행하도록 설계된 장치에서 구성요소들의 총 개수이라면, NL은 T(NH)를 초과한다. 단, T()는 어떤 함수이다. 모든 다양한 함수들은 함수T()로 이용될 수 있다. 예를 들어, 특정 실시예들에서, T(NH)는 3배의 T(NH)에 20을 더한 것일 수 있고, 장치에서 LPHDR 산술 구성요소들의 수는 만일 있다면 전통적인 정밀도의 높은 동적 범위 연산을 수행하도록 설계된 장치에서 산술 구성요소들의 수를 세배 한 것보다 20을 초과할 것이다. 다른 실시예로, 특정 실시예들에서, 장치에서 LPHDR 산술 구성요소들의 수는 만일 있다면 전통적인 정밀도의 높은 동적 범위 연산을 수행하도록 설계된 장치에서 산술 구성요소들의 수를 다섯배 한 것보다 50을 초과할 것이다. 다른 실시예로, 특정 실시예들에서, 장치에서 LPHDR 산술 구성요소들의 수는 만일 있다면 전통적인 정밀도의 높은 동적 범위 연산을 수행하도록 설계된 장치에서 산술 구성요소들의 수를 다섯배 한 것보다 100을 초과할 것이다. 다른 실시예로, 특정 실시예들에서, 장치에서 LPHDR 산술 구성요소들의 수는 만일 있다면 전통적인 정밀도의 높은 동적 범위 연산을 수행하도록 설계된 장치에서 산술 구성요소들의 수를 다섯배 한 것보다 1000을 초과할 것이다. 다른 실시예로, 특정 실시예들에서, 장치에서 LPHDR 산술 구성요소들의 수는 만일 있다면 전통적인 정밀도의 높은 동적 범위 연산을 수행하도록 설계된 장치에서 산술 구성요소들의 수를 다섯배 한 것보다 5000을 초과할 것이다. 본 발명의 특정 실시예들은 이에 한정하지는 않으나 실리콘 칩 또는 쌓아 올린 칩 또는 칩 패키지 또는 회로기판과 같은 단일의 물리적 장치 내에서 구현될 수 있고, 물리적 장치에서 LPHDR 부의 수(NL)와 물리적 장치에서 전통적인 정밀도의 높은 동적 범위 연산을 수행하도록 설계된 구성요소들의 수(NH)는 그 물리적 장치 내에서 각 구성요소들의 총 수일 수 있다. 본 발명의 특정 실시예들은 이에 한정하지는 않으나 모든 수단(버스, 스위치, 모든 종류의 네트워크 연결, 또는 다른 통신 수단)을 이용하여 서로 결합 및 통신하는 실리콘 칩들 또는 쌓아 올린 칩들 또는 칩 패키지들 또는 회로기판들의 집단과 같은 하나 이상의 물리적 장치를 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 이러한 경우, 컴퓨팅 시스템에서 LPHDR 부의 수(NL)와 컴퓨팅 시스템에서 전통적인 정밀도의 높은 동적 범위 연산을 수행하도록 설계된 구성요소들의 수(NH)는 모든 그러한 물리적 장치들 내에서 공동으로 각 구성요소들의 총 수일 수 있다.
본 발명의 특정 실시예들은 계산을 수행하기 위해 소프트웨어를 실행할 수 있는 장치들인 프로세서들을 구성하거나 그 일부일 수 있다. 이러한 프로세서들은 소프트웨어를 저장하고, 무슨 동작들을 수행할지를 결정하기 위해 소프트웨어를 이용하고, 수치 데이터를 저장하고, 소프트웨어 특정 동작들에 따라 데이터를 수정하고, 프로세서에 연결된 장치들과 통신하기 위한 메커니즘을 포함할 수 있다. 프로세서들은 한정 없이, 필드 프로그램 가능한 어레이들과 같은 재구성 가능한 장치들일 수 있다. 프로세서들은 호스트 기계들 돕기 위한 협력 프로세서이거나, 외부 호스트와 독립적으로 동작할 수 있다. 프로세서들은 구성들 일부 또는 전부가 본 발명의 동일한 혹은 다른 다양한 실시예들을 통합할 수 있는, 본 기술 분야에서 이종 프로세서 설계 또는 이종 컴퓨팅 시스템이라 말하는, CPU, GPU, FPGA 또는 다른 프로세서 또는 다른 장치들과 같은 구성 호스트 프로세서들 및 다양한 타입의 협력 프로세서들의 집단으로 형성될 수 있다.
그런데, 본 발명의 실시예들은 프로세서에 더하여 또는 제외한 장치들에서 구현될 수 있다. 예를 들어, 여기에 개시된 모든 방법들에서 LPHDR 동작을 수행하기 위한 구성을 포함하는 프로세서와 다른 구성들(데이터 경로에 의해 프로세서에 결합된 메모리와 같은)을 포함하는 컴퓨터는 본 발명의 실시예의 예이다. 더욱 일반적으로, “프로세서”의 의미 내에 있든 없든, 여기에 개시된 기능들을 수행하는 모든 장치 또는 장치들의 결합은 본 발명의 실시예에 따른 예를 구성할 수 있다.
더욱 일반적으로, 상술한 모든 기술들은 예를 들어, 하드웨어, 컴퓨터가 읽을 수 있는 매체에 명백히 저장된 소프트웨어, 펌웨어, 또는 이들의 모든 결합으로 구현될 수 있다. 상술한 기술들은 프로세서, 프로세서가 읽을 수 있는 저장매체(예를 들어, 휘발성 및 비휘발성 메모리 및/또는 저장 구성요소들을 포함하는), 적어도 하나의 입력 장치, 적어도 하나의 출력 장치를 포함하는 프로그램 가능한 컴퓨터에서 실행되는 하나 이상의 컴퓨터 프로그램들로 구현될 수 있다. 프로그램 코드는 설명한 기능들을 수행하고 출력을 발생시키는 입력 장치를 이용하여 입력된 입력에 적용될 수 있다. 출력은 하나 이상의 출력 장치들에 제공될 수 있다.
이하의 청구항들의 범위 내에서 각 컴퓨터 프로그램은 어셈블리 언어, 기계어, 고급 절차프로그래밍 언어, 또는 객체지향 프로그래밍 언어와 같은 모든 프로그래밍 언어로 구현될 수 있다. 프로그래밍 언어는 예를 들어 컴파일 또는 해석된 프로그래밍 언어일 수 있다.
이러한 각 컴퓨터 프로그램은 컴퓨터 프로세서에 의한 실행을 위해 기계가 읽을 수 있는 저장 장치에 명백히 실현된 컴퓨터 프로그램 제품으로 구현될 수 있다. 본 발명의 방법 단계들은 입력에서 동작하여 출력을 발생시킴으로써 본 발명의 기능들을 수행하도록 컴퓨터가 읽을 수 있는 매체에 명백하게 구현되는 프로그램을 실행시키는 컴퓨터 프로세서에 의해 수행될 수 있다. 예를 들어, 적합한 프로세서들은 일반적인 그리고 특별한 목적의 마이크로 프로세서들 모두를 포함한다. 일반적으로, 프로세서는 읽기 전용 메모리 및/또는 랜덤 억세스 메모리로부터 명령어 및 데이터를 수신한다. 컴퓨터 프로그램 명령어들을 명확히 실시하기에 적합한 저장 장치들은 예를 들어, EPROM, EEPROM, 및 플래시 메모리 장치를 포함하는 반도체 메모리 장치들과 같은 모든 형태의 비활성 메모리; 내장 하드 디스크 및 착탈식 디스크와 같은 자기 디스크들; 마그네토-옵티컬(magneto-optical) 디스크, 및 CD롬을 포함한다. 전술한 모든 것은 특별히 설계된 ASIC(application-specific integrated circuit) 또는 FPGA(field-programmable gate array)의해 보완되거나 그에 통합될 수 있다. 컴퓨터는 내장 디스크(미도시) 또는 착탈식 디크스와 같은 저장 매체로부터 일반적으로 프로그램들 및 데이터를 수신한다. 또한 이러한 구성요소들은 여기에 개시된 방법들을 구현하는 컴퓨터 프로그램들을 실행시키기에 적합한 다른 컴퓨터뿐만 아니라 종래의 데스크탑 또는 워크스테이션 컴퓨터에서 발견될 것이고, 이는 종이, 필름, 디스플레이 스크린, 또는 다른 출력 매체 상에 색 또는 계조 픽셀들을 생성할 수 있는 모든 디지털 인쇄 엔진 또는 마킹 엔진, 디스플레이 모니터, 또는 다른 래스터(raster) 출력 장치와 결합하여 이용될 수 있다.
102: 호스트 104: 처리 구성요소 어레이(PEA)
106: 제어부 108: 입출력부
110 주변장치

Claims (2)

  1. 제2복수의 수치들을 나타내는 제1복수의 출력 신호들을 생성하기 위해 제1복수의 수치들을 나타내는 제1복수의 입력 신호들에서 제1복수의 동작들을 병렬로 실행하기 적합한 복수의 저정밀 고동적범위(LPHDR) 실행부들을 포함하고,
    상기 복수의 LPHDR 실행부들 각각에 대해, 상기 LPHDR 실행부가 실행하기 적합한 적어도 하나의 동작에 대해, 상기 적어도 하나의 동작에 대한 가능한 유효 입력들의 상기 동적 범위는 1/65,000 내지 65,000만큼 적어도 넓고, 상기 가능한 유효 입력들의 적어도 5%에 대해, 상기 동작에 의해 생성되는 적어도 하나의 출력신호에 대해, 상기 동작에 대해 가능한 유효 입력들의 상기 적어도 5%로부터의 동일한 입력에 대한 반복된 실행을 통해, 상기 입력들에서 상기 동작을 실행하는 LPHDR 부의 적어도 하나의 출력 신호에 의해 표현되는 상기 수치들의 통계적 평균은 상기 동일한 입력의 수치들에 대한 동작의 정확한 수학적 계산의 결과보다 적어도 .05%만큼 다르고;
    적어도 하나의 제4수치를 나타내는 적어도 하나의 제2출력 신호를 생성하기 위하여 적어도 하나의 제3수치를 나타내는 적어도 하나의 제2 입력 신호에 대해 적어도 하나의 제2동작을 실행하기에 적합한 적어도 하나의 고정밀 실행부를 포함하며,
    상기 적어도 하나의 고정밀 실행부는 32비트 이상의 너비인 부동 소수점 수에 대해 적어도 하나의 산술 연산을 실행하기에 적합하고;
    상기 장치에서 상기 LPHDR 살행부의 수는 상기 적어도 하나의 고정밀 실행부의 수를 3배 한 것 보다 적어도 20만큼 초과하는 장치.
  2. 제2수치를 나타내는 제1출력 신호를 생성하기 위하여 제1수치를 나타내는 제1입력신호에 대해 제1동작을 실행하기에 적합한 제1저정밀 고동적 범위(LPHDR) 실행부를 포함하고,
    상기 제1동작에 대한 상기 가능한 유효 입력들의 상기 동적 범위는 1/65,000 내지 65,000만큼 적어도 넓고, 상기 제1동작에 대한 상기 가능한 유효 입력들의 적어도 5%에 대해, 상기 제1동작에 대해 가능한 유효 입력들의 상기 적어도 5%로부터의 각 특정 입력에 대한 상기 제1동작의 반복된 실행을 통해, 상기 입력에 대해 상기 제1동작을 실행하는 LPHDR 부의 상기 제1출력 신호에 의해 표현되는 상기 수치들의 통계적 평균은 상기 동일한 입력의 수치들에 대한 상기 제1동작의 정확한 수학적 계산의 결과보다 적어도 .05%만큼 다르고;
    32비트 이상의 너비인 부동 소수점 수에 대해 적어도 하나의 산술 연산을 실행하기에 적합한 어떠한 고정밀 실행부도 포함하지 않는 장치.
KR1020127001525A 2009-06-19 2010-06-16 콤팩트한 산술 처리 구성요소를 이용한 처리 KR101235997B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US21869109P 2009-06-19 2009-06-19
US61/218,691 2009-06-19
US12/816,201 US8150902B2 (en) 2009-06-19 2010-06-15 Processing with compact arithmetic processing element
US12/816,201 2010-06-15
PCT/US2010/038769 WO2010148054A2 (en) 2009-06-19 2010-06-16 Processing with compact arithmetic processing element

Publications (2)

Publication Number Publication Date
KR20120040197A true KR20120040197A (ko) 2012-04-26
KR101235997B1 KR101235997B1 (ko) 2013-02-22

Family

ID=43355205

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127001525A KR101235997B1 (ko) 2009-06-19 2010-06-16 콤팩트한 산술 처리 구성요소를 이용한 처리

Country Status (8)

Country Link
US (17) US8150902B2 (ko)
EP (2) EP3410291A1 (ko)
JP (7) JP2012530966A (ko)
KR (1) KR101235997B1 (ko)
CN (2) CN105760135B (ko)
BR (1) BRPI1011808A2 (ko)
CA (1) CA2768731C (ko)
WO (1) WO2010148054A2 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8150902B2 (en) 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
US9285793B2 (en) * 2010-10-21 2016-03-15 Bluewireless Technology Limited Data processing unit including a scalar processing unit and a heterogeneous processor unit
US8971599B2 (en) * 2010-12-20 2015-03-03 General Electric Company Tomographic iterative reconstruction
CN102651121B (zh) * 2011-02-23 2014-04-02 中国科学院声学研究所 一种基于fpga的3*3均值滤波算法的实现方法
US9553590B1 (en) * 2012-10-29 2017-01-24 Altera Corporation Configuring programmable integrated circuit device resources as processing elements
US9936579B2 (en) * 2013-02-01 2018-04-03 Apple Inc. Low profile packaging and assembly of a power conversion system in modular form
CN103647708A (zh) * 2013-11-29 2014-03-19 曙光信息产业(北京)有限公司 基于atca的数据报文处理板
JP6381215B2 (ja) * 2014-01-29 2018-08-29 キヤノン株式会社 画像処理装置、画像処理方法、表示装置、表示装置の制御方法、及び、プログラム
US10042813B2 (en) 2014-12-15 2018-08-07 Intel Corporation SIMD K-nearest-neighbors implementation
CN105843586B (zh) * 2016-04-02 2020-06-30 严发宝 一种高速数据采集实时加除计算实现方法
CN106126191B (zh) * 2016-06-06 2018-07-31 大连大学 基于映射模块的16位加减法器的方法
US10007487B1 (en) * 2016-06-30 2018-06-26 Altera Corporation Double-precision floating-point operation
CN106155814B (zh) * 2016-07-04 2019-04-05 合肥工业大学 一种支持多种工作模式的可重构运算单元及其工作方式
CN107066706B (zh) * 2017-03-27 2019-07-30 中国科学院计算技术研究所 Gpu ffma指令在双发射模式下的通量测试方法
WO2018182742A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Computation unit composed of stacked resistive elements
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
WO2018213636A1 (en) 2017-05-17 2018-11-22 Google Llc Performing matrix multiplication in hardware
US20180357287A1 (en) * 2017-06-10 2018-12-13 ScaleFlux, Inc. Hybrid software-hardware implementation of edit distance search
US10289413B2 (en) * 2017-10-02 2019-05-14 Advanced Micro Devices, Inc. Hybrid analog-digital floating point number representation and arithmetic
US11216250B2 (en) * 2017-12-06 2022-01-04 Advanced Micro Devices, Inc. Dynamic, variable bit-width numerical precision on field-programmable gate arrays for machine learning tasks
CN108089958B (zh) * 2017-12-29 2021-06-08 珠海市君天电子科技有限公司 Gpu测试方法、终端设备和计算机可读存储介质
DE102018209901A1 (de) * 2018-06-19 2019-12-19 Robert Bosch Gmbh Recheneinheit, Verfahren und Computerprogramm zum Multiplizieren zumindest zweier Multiplikanden
CN110865882B (zh) * 2018-08-28 2022-07-08 清华大学 数据处理方法、装置、计算机设备和存储介质
CN109840067B (zh) * 2019-01-14 2021-04-20 中国人民解放军国防科技大学 一种基于数学近似的浮点程序精度缺陷修复方法
US11106430B1 (en) * 2019-05-16 2021-08-31 Facebook, Inc. Circuit and method for calculating non-linear functions of floating-point numbers
CN112732220A (zh) * 2019-10-14 2021-04-30 安徽寒武纪信息科技有限公司 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
US11514594B2 (en) 2019-10-30 2022-11-29 Vergence Automation, Inc. Composite imaging systems using a focal plane array with in-pixel analog storage elements
CN111104091B (zh) * 2019-12-12 2021-11-26 北京科技大学 一种动态浮点误差分析中精度特定计算的检测和转换方法
CN111126587B (zh) * 2019-12-30 2021-02-02 上海安路信息科技有限公司 交并比电路
US11709225B2 (en) * 2020-06-19 2023-07-25 Nxp B.V. Compression of data employing variable mantissa size
US11188304B1 (en) * 2020-07-01 2021-11-30 International Business Machines Corporation Validating microprocessor performance

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5346577B2 (ko) 1974-03-25 1978-12-14
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
JPS5630322A (en) * 1979-08-21 1981-03-26 Toshiba Corp D/a converter
US4493048A (en) 1982-02-26 1985-01-08 Carnegie-Mellon University Systolic array apparatuses for matrix computations
JPS5952380A (ja) * 1982-09-17 1984-03-26 Victor Co Of Japan Ltd 補間装置
US4583222A (en) 1983-11-07 1986-04-15 Digital Equipment Corporation Method and apparatus for self-testing of floating point accelerator processors
US5170484A (en) * 1986-09-18 1992-12-08 Digital Equipment Corporation Massively parallel array processing system
US4985832A (en) 1986-09-18 1991-01-15 Digital Equipment Corporation SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors
FR2604270B1 (fr) * 1986-09-22 1991-10-18 Jutand Francis Additionneur binaire comportant un operande fixe, et multiplieur binaire parallele-serie comprenant un tel additionneur
US4933895A (en) 1987-07-10 1990-06-12 Hughes Aircraft Company Cellular array having data dependent processing capabilities
JPH01183732A (ja) 1988-01-18 1989-07-21 Daikin Ind Ltd 浮動小数点数から整数への変換装置および変換方法
US5153848A (en) * 1988-06-17 1992-10-06 Bipolar Integrated Technology, Inc. Floating point processor with internal free-running clock
DE68928376T2 (de) 1988-11-04 1998-04-02 Hitachi Eng Co Ltd Vorrichtung zum multiplizieren, teilen und ziehen der quadratwurzel
JP2765882B2 (ja) * 1988-11-14 1998-06-18 株式会社日立製作所 並列計算機,ベクトルレジスタ間データフロー同期装置およびネットワークプリセット装置
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5226166A (en) * 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
JPH0314128A (ja) 1989-06-13 1991-01-22 Tomio Kurokawa 対数表現数値利用の演算装置
DE4002501A1 (de) * 1990-01-29 1991-08-01 Thomson Brandt Gmbh Verfahren zur umwandlung von digitalen signalen in analoge signale
JP2605916B2 (ja) 1990-03-19 1997-04-30 ヤマハ株式会社 波形信号発生装置
DE69130519T2 (de) * 1990-06-29 1999-06-10 Digital Equipment Corp Hochleistungsfähiger Multiprozessor mit Gleitkommaeinheit und Verfahren zu seinem Betrieb
JP2597736B2 (ja) * 1990-07-17 1997-04-09 株式会社東芝 高速乗算器
US5966528A (en) * 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
WO1993011503A1 (en) * 1991-12-06 1993-06-10 Norman Richard S Massively-parallel direct output processor array
JP2647327B2 (ja) * 1992-04-06 1997-08-27 インターナショナル・ビジネス・マシーンズ・コーポレイション 大規模並列コンピューティング・システム装置
US5790834A (en) 1992-08-31 1998-08-04 Intel Corporation Apparatus and method using an ID instruction to identify a computer microprocessor
EP0632369A1 (en) 1993-06-29 1995-01-04 Stichting voor de Technische Wetenschappen CORDIC algorithms and architectures
US5623616A (en) 1993-07-22 1997-04-22 Hewlett-Packard Company Floating point operaton throughput control
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5375084A (en) 1993-11-08 1994-12-20 International Business Machines Corporation Selectable interface between memory controller and memory simms
US5442577A (en) 1994-03-08 1995-08-15 Exponential Technology, Inc. Sign-extension of immediate constants in an alu
JPH0877282A (ja) 1994-09-09 1996-03-22 Radic:Kk アナログ演算回路
US5631859A (en) * 1994-10-27 1997-05-20 Hewlett-Packard Company Floating point arithmetic unit having logic for quad precision arithmetic
US5581485A (en) 1994-12-08 1996-12-03 Omni Microelectronics, Inc. Analog vector distance measuring and vector quantization architecture
US5689677A (en) 1995-06-05 1997-11-18 Macmillan; David C. Circuit for enhancing performance of a computer for personal use
JP3405864B2 (ja) 1995-09-12 2003-05-12 富士通株式会社 演算装置、相関演算装置、動画像圧縮装置、ずれ検出方法およびずれ検出装置
US5943242A (en) * 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system
US5666071A (en) 1995-12-01 1997-09-09 Advanced Micro Devices, Inc. Device and method for programming high impedance states upon select input/output pads
JP2806346B2 (ja) * 1996-01-22 1998-09-30 日本電気株式会社 演算処理装置
US6018232A (en) 1996-02-27 2000-01-25 Fujitsu Limited Method of operating battery powered computing device with radio transmitter
US5892962A (en) * 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US6065209A (en) 1997-05-23 2000-05-23 S-Cal Research Corp. Method of fabrication, tooling and installation of downhole sealed casing connectors for drilling and completion of multi-lateral wells
US6023753A (en) * 1997-06-30 2000-02-08 Billion Of Operations Per Second, Inc. Manifold array processor
US5867693A (en) 1997-07-03 1999-02-02 Modern Video Technology, Inc. Extended resolution phase measurement
JPH11212763A (ja) * 1998-01-30 1999-08-06 Denso Corp 電子制御装置
DE69935361T2 (de) 1998-02-17 2007-11-29 Anadec Gmbh Verfahren und elektronische Schaltung zur Datenverarbeitung, insbesondere für die Berechnung von Wahrscheinlichkeitsverteilungen
US6173388B1 (en) * 1998-04-09 2001-01-09 Teranex Inc. Directly accessing local memories of array processors for improved real-time corner turning processing
US6065029A (en) 1998-05-26 2000-05-16 N*Able Technologies, Inc. Method and system for providing a random number generator
US6650327B1 (en) 1998-06-16 2003-11-18 Silicon Graphics, Inc. Display system having floating point rasterization and floating point framebuffering
US6226737B1 (en) * 1998-07-15 2001-05-01 Ip-First, L.L.C. Apparatus and method for single precision multiplication
AU763178B2 (en) * 1998-09-10 2003-07-17 Ecchandes Inc. Visual device
JP2969115B1 (ja) * 1998-11-25 1999-11-02 株式会社日立製作所 半導体装置
US6622135B1 (en) 1998-12-29 2003-09-16 International Business Machines Corporation Method for detecting and classifying anomalies using artificial neural networks
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
JP2001043385A (ja) * 1999-05-25 2001-02-16 Ecchandesu:Kk 多帯域動画像中の移動物体のエッジ情報生成装置及び多帯域動画像中の移動物体のエッジ情報生成方法
US7346643B1 (en) 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6675292B2 (en) 1999-08-13 2004-01-06 Sun Microsystems, Inc. Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions
JP2001184335A (ja) 1999-12-24 2001-07-06 Kanazawa Inst Of Technology プログラマブル・ディジタル演算icとそのプログラマブル・ディジタル演算icを用いた装置ならびにそのプログラマブル・ディジタル演算icの製造方法
US6647507B1 (en) 1999-12-31 2003-11-11 Intel Corporation Method for improving a timing margin in an integrated circuit by setting a relative phase of receive/transmit and distributed clock signals
GB2370381B (en) * 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
FI113714B (fi) 2000-12-28 2004-05-31 Ari Paasio Prosessori, piiri ja menetelmä kuvien käsittelemiseksi rinnakkaisprosessoriverkossa
JP3949915B2 (ja) * 2001-07-05 2007-07-25 日本電信電話株式会社 空間変換に基づく楕円体問合せ方法および装置と空間変換に基づく楕円体問合せプログラムおよび該プログラムを記録した記録媒体
US6941334B2 (en) 2002-02-01 2005-09-06 Broadcom Corporation Higher precision divide and square root approximations
US6920574B2 (en) 2002-04-29 2005-07-19 Apple Computer, Inc. Conserving power by reducing voltage supplied to an instruction-processing portion of a processor
US7234169B2 (en) 2002-04-29 2007-06-19 The Boeing Company Method and apparatus for integrating and monitoring key digital cinema system components as a means to verify system integrity
US6600222B1 (en) 2002-07-17 2003-07-29 Intel Corporation Stacked microelectronic packages
CN1265281C (zh) * 2002-07-29 2006-07-19 矽统科技股份有限公司 浮点数的对数运算方法和装置
US7133772B2 (en) 2002-07-30 2006-11-07 Global Locate, Inc. Method and apparatus for navigation using instantaneous Doppler measurements from satellites
US7194615B2 (en) * 2002-09-17 2007-03-20 Nokia Corporation Reconfigurable apparatus being configurable to operate in a logarithmic scale
US7209867B2 (en) 2002-10-15 2007-04-24 Massachusetts Institute Of Technology Analog continuous time statistical processing
US7243333B2 (en) * 2002-10-24 2007-07-10 International Business Machines Corporation Method and apparatus for creating and executing integrated executables in a heterogeneous architecture
JP4184921B2 (ja) * 2002-11-06 2008-11-19 松下電器産業株式会社 確率型演算素子
US20070124565A1 (en) * 2003-06-18 2007-05-31 Ambric, Inc. Reconfigurable processing array having hierarchical communication network
US7669035B2 (en) 2004-01-21 2010-02-23 The Charles Stark Draper Laboratory, Inc. Systems and methods for reconfigurable computing
JP3845636B2 (ja) 2004-01-21 2006-11-15 株式会社東芝 関数近似値の演算器
US7779177B2 (en) * 2004-08-09 2010-08-17 Arches Computing Systems Multi-processor reconfigurable computing system
US7225323B2 (en) * 2004-11-10 2007-05-29 Nvidia Corporation Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines
US7446773B1 (en) * 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
JP4547668B2 (ja) * 2004-12-24 2010-09-22 カシオ計算機株式会社 動き補償予測符号化装置及び動き補償予測符号化方法
US20070247189A1 (en) * 2005-01-25 2007-10-25 Mathstar Field programmable semiconductor object array integrated circuit
US7921425B2 (en) 2005-03-14 2011-04-05 Cisco Technology, Inc. Techniques for allocating computing resources to applications in an embedded system
EP1724823A3 (fr) 2005-05-11 2009-09-09 Stmicroelectronics Sa Procédé de connexion d'une microplaquette de semi-conducteur sur un support d'interconnexion
JP2006350907A (ja) * 2005-06-20 2006-12-28 Ricoh Co Ltd Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置
US7863778B2 (en) 2005-07-25 2011-01-04 Arm Limited Power controlling integrated circuit cell
US7856618B2 (en) 2005-08-04 2010-12-21 International Business Machines Corporation Adaptively generating code for a computer program
US7512282B2 (en) 2005-08-31 2009-03-31 International Business Machines Corporation Methods and apparatus for incremental approximate nearest neighbor searching
US7301436B1 (en) 2005-11-14 2007-11-27 National Semiconductor Corporation Apparatus and method for precision trimming of integrated circuits using anti-fuse bond pads
US8595279B2 (en) 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
JP4413198B2 (ja) * 2006-03-23 2010-02-10 富士通株式会社 浮動小数点データの総和演算処理方法及びコンピュータシステム
US7912887B2 (en) 2006-05-10 2011-03-22 Qualcomm Incorporated Mode-based multiply-add recoding for denormal operands
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
JP4461135B2 (ja) 2006-12-25 2010-05-12 富士通株式会社 演算回路及び演算方法並びに情報処理装置
US8421794B2 (en) * 2007-03-23 2013-04-16 Qualcomm Incorporated Processor with adaptive multi-shader
US8463835B1 (en) 2007-09-13 2013-06-11 Xilinx, Inc. Circuit for and method of providing a floating-point adder
US8258410B2 (en) 2008-01-26 2012-09-04 International Business Machines Corporation Construction of reliable stacked via in electronic substrates—vertical stiffness control method
CN101334766B (zh) * 2008-06-30 2011-05-11 东软飞利浦医疗设备系统有限责任公司 一种并行微处理器及其实现方法
US20100114871A1 (en) * 2008-10-31 2010-05-06 University Of Southern California Distance Quantization in Computing Distance in High Dimensional Space
US7746104B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Dynamically controlled output multiplexer circuits in a programmable integrated circuit
US7746108B1 (en) * 2009-04-02 2010-06-29 Xilinx, Inc. Compute-centric architecture for integrated circuits
US8150902B2 (en) 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element

Also Published As

Publication number Publication date
US11327714B2 (en) 2022-05-10
JP2018206402A (ja) 2018-12-27
JP2014199665A (ja) 2014-10-23
US20200026492A1 (en) 2020-01-23
JP6796177B2 (ja) 2020-12-02
JP2023040014A (ja) 2023-03-22
US20100325186A1 (en) 2010-12-23
JP7273018B2 (ja) 2023-05-12
US20190065147A1 (en) 2019-02-28
US11354096B2 (en) 2022-06-07
US11768660B2 (en) 2023-09-26
US20200097252A1 (en) 2020-03-26
US20230168861A1 (en) 2023-06-01
JP6371451B2 (ja) 2018-08-08
EP2443551A2 (en) 2012-04-25
WO2010148054A2 (en) 2010-12-23
BRPI1011808A2 (pt) 2016-07-19
CN102576304B (zh) 2016-03-02
JP6184897B2 (ja) 2017-08-23
US20230105050A1 (en) 2023-04-06
JP6599522B2 (ja) 2019-10-30
CA2768731C (en) 2013-09-24
US8407273B2 (en) 2013-03-26
CN105760135A (zh) 2016-07-13
US9218156B2 (en) 2015-12-22
JP2012530966A (ja) 2012-12-06
KR101235997B1 (ko) 2013-02-22
US8150902B2 (en) 2012-04-03
US10754616B1 (en) 2020-08-25
US20210342118A1 (en) 2021-11-04
US20130031153A1 (en) 2013-01-31
US20240103806A1 (en) 2024-03-28
US20210342117A1 (en) 2021-11-04
US20140095571A1 (en) 2014-04-03
US20210342116A1 (en) 2021-11-04
US10416961B2 (en) 2019-09-17
CN102576304A (zh) 2012-07-11
US20210048981A1 (en) 2021-02-18
CA2768731A1 (en) 2010-12-23
US20160179467A1 (en) 2016-06-23
CN105760135B (zh) 2019-05-10
WO2010148054A3 (en) 2011-03-31
US11169775B2 (en) 2021-11-09
US10656912B2 (en) 2020-05-19
US11842166B2 (en) 2023-12-12
JP2021028839A (ja) 2021-02-25
EP2443551A4 (en) 2012-12-12
US10120648B2 (en) 2018-11-06
US11768659B2 (en) 2023-09-26
US20200334011A1 (en) 2020-10-22
EP3410291A1 (en) 2018-12-05
US11327715B2 (en) 2022-05-10
US9792088B2 (en) 2017-10-17
US10664236B2 (en) 2020-05-26
US20180039483A1 (en) 2018-02-08
JP2018010646A (ja) 2018-01-18
JP2020074074A (ja) 2020-05-14

Similar Documents

Publication Publication Date Title
KR101235997B1 (ko) 콤팩트한 산술 처리 구성요소를 이용한 처리

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20160127

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170213

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180212

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190207

Year of fee payment: 7