KR20220139304A - 구성 가능한 병렬 계산을 위한 프로세서 - Google Patents
구성 가능한 병렬 계산을 위한 프로세서 Download PDFInfo
- Publication number
- KR20220139304A KR20220139304A KR1020227025841A KR20227025841A KR20220139304A KR 20220139304 A KR20220139304 A KR 20220139304A KR 1020227025841 A KR1020227025841 A KR 1020227025841A KR 20227025841 A KR20227025841 A KR 20227025841A KR 20220139304 A KR20220139304 A KR 20220139304A
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- stream
- data stream
- circuits
- configurable
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 26
- 230000015654 memory Effects 0.000 claims description 22
- 230000000903 blocking effect Effects 0.000 claims description 5
- 230000003111 delayed effect Effects 0.000 claims 2
- 239000004744 fabric Substances 0.000 abstract description 9
- 238000005192 partition Methods 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 2
- 229920001003 Polilactofate Polymers 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/82—Architectures of general purpose stored program computers data or demand driven
- G06F15/825—Dataflow computers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
유연한 프로세서는 (i) 모듈식(modular) 상호접속 패브릭(fabric) 회로들에 의해 상호접속된 수많은 구성 가능한 프로세서들을 포함하고, 모듈식 상호접속 패브릭 회로들은, 병렬 실행을 위해 구성 가능한 프로세서들을 하나 이상의 그룹들로 분할하고 파이프라인(pipelined) 동작들을 위해 구성 가능한 프로세서들을 임의의 순서로 상호접속하도록 구성 가능하다. 각각의 구성 가능한 프로세서는 (i) 제어 회로; (ii) 수많은 구성 가능한 산술 논리 회로들; 및 (iii) 구성 가능한 산술 논리 회로들을 상호접속하기 위한 구성 가능한 상호접속 패브릭 회로들을 포함할 수 있다.
Description
본 발명은 프로세서 아키텍처(architecture)에 관한 것이다. 특히, 본 발명은, 병렬 계산 및 데이터 포워딩 동작들이 처리(processing) 유닛들에서 수행될 수 있도록 구성 가능하고 재구성 가능한 수많은 처리 유닛들 및 데이터 경로들(paths)을 갖는 프로세서의 아키텍처에 관한 것이다.
많은 애플리케이션들(예를 들어, 신호 처리, 내비게이션(navigation), 행렬 반전(inversion), 기계 학습, 대규모 데이터 세트 검색)은, 병렬로 동작하는 수많은 프로세서들에 의해 가장 잘 수행되는 엄청난 양의 반복적인 계산 단계들을 필요로 한다. 데스크탑이나 모바일 컴퓨터들에 전원을 공급하는 기존의 "중앙 처리 장치들"(CPUs)이든, 또는 보다 수치-지향적인(numerically-oriented) 기존의 "그래픽 처리 장치들"(GPUs)이든 간에, 현재의 마이크로프로세서들은 이러한 작업들에 적합하다. CPU 또는 GPU는 수많은 코어들이 제공되더라도 하드웨어 구성들에서 유연하지 않다. 예를 들어, 신호 처리 애플리케이션들은 종종 많은 수의 반복적인 부동-소수점(floating-point) 산술 연산들(예를 들어, 덧셈 및 곱셈)의 세트들을 필요로 한다. 기존 CPU 또는 GPU에서 구현될 때, 단일 뉴런(neuron)의 연산들은 일련의 덧셈, 곱셈 및 비교 명령어들로서 구현될 수 있으며, 레지스터들(registers) 또는 메모리로부터 피연산자들(operands)을 페칭(fetch)하고 산술-논리 유닛(ALU)에서 연산을 수행하며 그리고 연산들의 결과 혹은 결과들을 레지스터들이나 메모리에 다시 쓰기 위해 각 명령어가 요구된다. 이러한 연산들의 특성은 잘 알려져 있지만, 명령어들의 세트 또는 명령어들의 실행 순서는 데이터 또는 애플리케이션에 따라 다를 수 있다. 따라서 메모리, 레지스터 파일들 및 ALU들은 기존 CPU 또는 GPU에서 구조화되는(organized) 방식으로 인해, 메모리, 레지스터 파일들 및 ALU들 사이의 피연산자들을 셔틀(shuttle)하는 데이터 경로들을 재구성하는 유연성 없이, 높은 수준의 병렬 처리 및 데이터 흐름 간소화(streamlining)를 달성하는 것은 어렵다. 많은 애플리케이션들에서, 이러한 동작들이 수억 번 반복될 수 있으므로, 적절한 아키텍처가 있는 프로세서에서 엄청난 효율성이 달성될 수 있다.
본 발명의 일 실시예에 따르면, 프로세서는 (i) 모듈식(modular) 상호접속 패브릭(fabric) 회로들에 의해 상호접속된 복수의 구성 가능한 프로세서들을 포함하고, 모듈식 상호접속 패브릭 회로들은, 병렬 실행을 위해 구성 가능한 프로세서들을 하나 이상의 그룹들로 분할하고 파이프라인(pipelined) 동작들을 위해 구성 가능한 프로세서들을 임의의 순서로 상호접속 하도록 구성 가능하다.
일 실시예에 따르면, 각각의 구성 가능한 프로세서는 (i) 제어 회로; (ii) 복수의 구성 가능한 산술 논리 회로들; 및 (iii) 구성 가능한 산술 논리 회로들을 상호접속하기 위한 구성 가능한 상호접속 패브릭 회로들을 포함할 수 있다.
본 발명의 일 실시예에 따르면, 각각의 구성 가능한 산술 논리 회로들은 (i) 복수의 산술 또는 논리 연산자(operator) 회로들; 및 (ii) 구성 가능한 상호접속 패브릭 회로를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 각각의 구성 가능한 상호접속 패브릭 회로는 (i) 베네스(Benes) 네트워크 및 (ii) 복수의 구성 가능한 선입선출 (first-in-first-out;FIFO) 레지스터들을 포함할 수 있다.
본 발명은, 첨부된 도면들과 함께 아래의 상세한 설명을 고려하면 더 잘 이해된다.
도 1은, 본 발명의 일 실시예에 따른, 스트림(stream) 처리 유닛들(SPU)(101-1, 101-2, 101-3, ..., 및 101-16)의 4×4 어레이(array)를 포함하는 프로세서(100)를 도시한다.
도 2는, 본 발명의 일 실시예에 따른, 도 1의 프로세서(100)에서의 SPU의 일 구현에서 SPU(200)를 도시한다.
도 3a는, 본 발명의 일 실시예에 따른, 도 2의 APC(201-1, 201-2, 201-3 및 201-4) 중 하나의 APC의 일 구현에서 APC(300)를 도시한다.
도 3b는, 각각의 연산자의 출력 데이터 스트림이 다음 연산자에 의해 처리될 준비가 되었음을 시그널링하기 위해 각 연산자에 의해 생성된 인에이블(enable) 신호를 도시한다.
도 4는, 본 발명의 일 실시예에 따른, PLF 유닛(102-1, 102-2, 102-3 및 102-4) 및 PLF 서브유닛(202) 중 어느 하나의 일반화된 대표적인 구현(400)을 도시한다.
도면들 간의 상호-참조를 용이하게 하기 위해, 도면들의 유사한 요소들에 유사한 참조 번호들이 제공된다.
도 2는, 본 발명의 일 실시예에 따른, 도 1의 프로세서(100)에서의 SPU의 일 구현에서 SPU(200)를 도시한다.
도 3a는, 본 발명의 일 실시예에 따른, 도 2의 APC(201-1, 201-2, 201-3 및 201-4) 중 하나의 APC의 일 구현에서 APC(300)를 도시한다.
도 3b는, 각각의 연산자의 출력 데이터 스트림이 다음 연산자에 의해 처리될 준비가 되었음을 시그널링하기 위해 각 연산자에 의해 생성된 인에이블(enable) 신호를 도시한다.
도 4는, 본 발명의 일 실시예에 따른, PLF 유닛(102-1, 102-2, 102-3 및 102-4) 및 PLF 서브유닛(202) 중 어느 하나의 일반화된 대표적인 구현(400)을 도시한다.
도면들 간의 상호-참조를 용이하게 하기 위해, 도면들의 유사한 요소들에 유사한 참조 번호들이 제공된다.
도 1은, 본 발명의 일 실시예에 따른, 예를 들어, 스트림 처리 유닛들(SPU)(101-1, 101-2, 101-3, ..., 및 101-16)의 4×4 어레이를 포함하는 프로세서(100)를 도시한다. 물론, 이 상세한 설명에서는 예시적인 목적으로 4×4 어레이가 선택된다. 실제 구현에서, 임의의 수의 SPU들이 존재할 수 있다. SPU들은, 주어진 SPU로부터의 계산 결과들이 다른 SPU에 제공되거나 "스트리밍(streamed)” 되게 하는 구성 가능한 파이프라인 패브릭(PLF)(102)에 의해 그들 사이에서 상호접속된다. 이러한 배열로, 프로세서(100)의 SPU들의 4×4 어레이는 런타임(run time)에서 SPU들의 하나 이상의 그룹들로 구성될 수 있고, SPU들의 각 그룹은 파이프라인 계산 작업을 위한 파이프라인 스테이지들로서 구성된다.
도 1에 도시된 실시예에서, PLF(102)는 PLF 유닛(102-1, 102-2, 102-3 및 102-4)을 포함하는 것으로 도시되며, 각각의 PLF 유닛은 4×4 어레이의 4개의 사분면들 중 하나에서 4개의 SPU들 사이에 데이터 경로들을 제공하도록 구성될 수 있다. PLF 유닛들(102-1, 102-2, 102-3 및 102-4)은 또한 PLF 유닛(102-5)을 적절하게 구성함으로써 상호접속될 수 있고, 이에 의해 SPU들(101-1, 101-2, 101-3, ..., 및 101-16) 중 어느 하나로부터의 계산 결과들이 SPU들(101-1, 101-2, 101-3, ..., 및 101-16) 중 어느 다른 하나에 포워딩(forwarded)되게 한다. 일 실시예에서, 프로세서(100)의 PLF 유닛들은 계층적 방식으로 구조화될 수 있다. (도 1에 도시된 구조화(organization)는, PLF(102-1, 102-2, 102-3 및 102-4)가 일 레벨을 형성하고 PLF(102-5)가 제2 레벨인 2-레벨 계층적 구조로 간주될 수 있다.) 이 실시예에서, 호스트 CPU(미도시)는 동작 중 실시간으로 글로벌 버스(global bus)(104)를 통해 프로세서(100)를 구성 및 재구성한다. 각 SPU로 하여금 호스트 CPU에 인터럽트를 발생시켜(raise), 작업 완료 또는 수많은 예외적 조건들 중 어느 하나를 표시하기 위해 인터럽트(interrupt) 버스(105)가 제공된다. 입력 데이터 버스들(106-1 및 106-2)은 입력 데이터를 프로세서(100)로 스트리밍한다.
일 위성 위치확인(satellite positioning) 애플리케이션에서, 프로세서(100)는, RF 프론트-엔드(radio frequency front-end) 회로로부터 디지털화된 샘플들을 실시간으로 처리하는 디지털 베이스밴드(baseband) 회로의 역할을 할 수 있다. 해당 애플리케이션에서, 입력 데이터 버스들(106-1 및 106-2)에서의 프로세서(100)로 수신된 입력 데이터 샘플들은, RF 프론트-엔드 회로에서 신호 처리 후, 안테나에서 수신된 신호의 동위상(in-phase) 및 직교 위상(quadrature) 성분들이다. 수신된 신호는 수많은 위치확인 위성들로부터 전송된 내비게이션 신호들을 포함한다.
도 2는, 본 발명의 일 실시예에 따른, 프로세서(100)에서의 SPU의 일 구현에서 SPU(200)를 도시한다. 도 2에서 도시된 바와 같이, SPU(200)는 산술 및 논리 유닛들의 2×4 어레이를 포함하며, 여기에서 이들 각각은, (i) 각 산술 파이프라인 컴플렉스(complex)(APC)가 수많은 산술 및 논리 연산들 중 어느 하나에 대하여 구성 레지스터들의 세트를 통해 재구성 가능하고; 그리고 (ii) APC들이, 임의의 APC의 결과들을 SPU(200)에서의 다른 APC로 스트리밍하기 위한 다양한 방식들 중 어느 하나로 구성될 수 있음을 강조하기 위해 "APC”로서 지칭된다. 도 2에 도시된 바와 같이, SPU(200)에서의 APC들의 2×4 어레이에서 APC들(201-1, 201-2, ..., 및 201-8)에는 PLF 서브유닛(202) 상에서 그들 사이에 데이터 경로들이 제공되며, 이는 그의 대응하는 PLF 유닛(101-1, 101-2, 101-3 또는 101-4)으로부터의 연장이다.
도 2에 도시된 바와 같이, SPU(200)는, 명령어 메모리(204) - 상기 명령어 메모리(204)는 글로벌 버스(104)를 통해 호스트 CPU에 의해 로딩됨(loaded) - 로부터 작은(small) 세트의 명령어들을 실행하는 제어 유닛(203)을 포함한다. 내부 프로세서 버스(209)는 구성 단계 동안 글로벌 버스(104)를 통한 호스트 CPU에 의해 액세스 가능하고, 계산 단계 동안 제어 유닛(203)에 의해 액세스 가능하다. 구성 단계와 계산 단계 사이의 스위칭(switching)은 호스트 CPU로부터 어서팅된(asserted) 인에이블 신호에 의해 달성된다. 인에이블 신호가 디-어서팅되면(de-asserted), APC에 대한 임의의 클록 신호(그리고, 따라서, APC가 있는 임의의 연산자에 대한 임의의 데이터 유효(valid) 신호)가 게이팅 오프(gated off)되어 전력을 절약한다. 임의의 SPU는, SPU에 대한 전력 공급 신호들을 게이팅 오프하여 호스트 CPU에 의해 디스에이블될 수 있다. 일부 실시예들에서, APC에 대한 전력 공급 신호들이 또한 게이팅될 수 있다. 마찬가지로, 적절한 경우 전력을 절약하기 위해 임의의 PLF가 또한 게이팅 오프될 수도 있다.
APC에 대한 인에이블 신호는 내부 프로세서 버스(209)를 통해 인에이블 신호가 액세싱(accessed)되도록 메모리-매핑(memory-mapped)될 수 있다. 이러한 배열을 통해, 다수의 APC들이 파이프라인으로 구성될 때, 호스트 CPU 또는 SPU(200)는, 적절한 순서로 APC들을 인에이블링(enabling)하는 것 - 예를 들어, 파이프라인에서 데이터 흐름의 역순으로 APC들을 인에이블링하는 것을 적절하게 제어할 수 있어서, 데이터 흐름에서 제1 APC가 인에이블링될 때, 모든 APC들이 데이터를 처리할 준비가 되도록 한다.
멀티플렉서(205)는 호스트 CPU와 제어 유닛(203) 사이에서 내부 프로세서 버스(209)의 제어를 스위칭한다. SPU(200)는 메모리 블록들(207-1, 207-2, 207-3 및 207-4)을 포함하고, 이들은 호스트 CPU 또는 SPU(200)에 의해 내부 프로세서 버스(209)를 통해 액세스 가능하고, 계산 단계 동안 내부 데이터 버스를 통한 APC(201-1, 201-2, ..., 및 201-8)에 의해 액세스 가능하다. 스위치들(208-1, 208-2, 208-3 및 208-4)은 각각, 내부 프로세서 버스(209)와 내부 데이터 버스(210-1, 210-2, 210-3 및 210-4) 중 대응하는 내부 데이터 버스 사이의 메모리 블록들(207-1, 207-2, 207-3 및 207-4)에 대한 액세스를 스위칭한다. 구성 단계 동안, 호스트 CPU는 글로벌 버스(104)를 통해 구성 레지스터들에 기록함으로써 SPU(200)의 임의의 요소를 구성할 수 있고, 글로벌 버스(104)는 이때 멀티플렉서(205)에 의해 내부 프로세서 버스(209)로 연장된다. 계산 단계 동안, 제어 유닛(203)은, APC들(201-1, 201-2, ..., 및 201-8)이 서로 동기적으로(synchronously) 동작하게 하는 하나 이상의 클록 신호들을 포함하여, 내부 프로세서 버스(209)를 통해 SPU(200)의 동작을 제어할 수 있다. 적절한 시간에서, APC들(201-1, 201-2, ..., 및 201-8) 중 하나 이상은 인터럽트 버스(211) 상에서 인터럽트를 발생시킬 수 있고, 이는 서비스를 위해 SPU(200)로 수신된다. SPU는, 인터럽트 신호들 및 SPU 자신의 인터럽트 신호들을 인터럽트 버스(105)를 통해 호스트 CPU에 포워딩할 수 있다. 스크래치(scratch) 메모리(206)는, 이를테면, 중간(intermediate) 결과들, 플래그들 및 인터럽트들을 저장하기 위해, 제어 유닛(203)에서 명령어 실행을 지원하도록 제공된다. 구성 단계와 계산 단계 사이의 스위칭은 호스트 CPU에 의해 제어된다.
일 실시예에서, 메모리 블록들(207-1, 207-2, 207-3 및 207-4)은, 프로세서(100)의 글로벌 어드레스(address) 공간의 할당된 부분으로 매핑될 수 있는 로컬 어드레스 공간을 사용하여 제어 유닛(203)에 의해 액세싱된다. APC들(201-1, 201-2, ..., 및 201-8)의 구성 레지스터들이 또한 마찬가지로 로컬 어드레스 공간과 글로벌 어드레스 공간 둘 다로부터 액세스 가능하다. APC(201-1, 201-2, …, 및 201-8) 및 메모리 블록들(207-1, 207-2, 207-3 및 207-4)은 또한 글로벌 버스(104)를 통해 호스트 CPU에 의해 직접 액세스될 수도 있다. 메모리-매핑된 레지스터를 통해 멀티플렉서(205)를 설정하면, 호스트 CPU는 글로벌 버스(104)의 일부가 되기 위해 내부 프로세서 버스(209)를 연결하고 할당할 수 있다.
제어 유닛(203)은, 호스트 CPU의 관리(supervision) 하에 동작하는, 당업자에 의해 최소 명령어 세트 컴퓨터(MISC) 프로세서로서 지칭되는 유형의 마이크로프로세서일 수 있다. 일 실시예에서, 제어 유닛(203)은, 특정 인터럽트들을 서비스(servicing)하고 리소스들에서의 로컬 구성 레지스터들을 구성하여 하위 레벨 리소스들(예를 들어, APC(201-1, 201-2, 201-3 및 201-4))을 관리하고, 이로써 호스트 CPU에 대한 이러한 리소스들의 관리 요건들을 감소시킨다. 일 실시예에서, 리소스들은 제어 유닛(203)에 의한 참여 없이 동작할 수 있는데 즉, 호스트 CPU는 인터럽트들 및 구성 레지스터들을 직접 서비스할 수 있다. 또한, 구성된 데이터 처리 파이프라인이 다수의 SPU들에 의한 참여를 필요로 한 경우, 호스트 CPU는 전체 데이터 처리 파이프라인을 직접 제어할 수 있다.
도 3a는, 본 발명의 일 실시예에 따른, 도 2의 APC(201-1, 201-2, 201-3 및 201-4) 중 하나의 APC의 일 구현에서 APC(300)를 도시한다. 도 3a에 도시된 바와 같이, 단지 예시의 목적으로, APC(300)는 대표적인 연산자 유닛들(301-1, 301-2, 301-3 및 301-4)을 포함한다. 각각의 연산자 유닛은 하나 이상의 산술 또는 논리 회로들(예를 들어, 가산기들, 곱셈기들, 시프터들(shifters), 적절한 조합 논리 회로, 적절한 순차 논리 회로들 또는 이들의 조합)을 포함할 수 있다. APC PLF(302)는, 내부 프로세서 버스(209)를 통하여 호스트 CPU에 의해 임의의 적절한 방식으로 연산자들 사이에서의 데이터 경로들(303)의 생성을 허용한다. APC PLF(302) 및 연산자들(301-1, 301-2, 301-3 및 301-4) 각각은 호스트 CPU 및 제어 유닛(203) 둘 다에 의해 내부 프로세서 버스(209)를 통해 구성 가능하여, 연산자들은 파이프라인 방식으로 데이터 스트림 상에서 동작하도록 구조화될 수 있다.
구성된 파이프라인 내에서, 각 연산자의 출력 데이터 스트림은 다음 연산자의 입력 데이터 스트림으로서 제공된다. 도 3b에 도시된 바와 같이, 유효 신호(401)가 어서팅될 때, 각각의 연산자의 출력 데이터 스트림(402)이 다음 연산자에 의한 처리에 유효하다는 것을 시그널링하기 위해 유효 신호(401)는 각 연산자에 의해 생성된다. 파이프라인에서 연산자는, 유효 신호(401)의 하강 에지(falling edge)를 검출할 때, 연산자의 입력 데이터 스트림의 처리가 완료되었음을 나타내기 위한, 인터럽트 신호를 생성하도록 구성될 수 있다. 인터럽트 신호는 제어 유닛(203) 또는 호스트 CPU에 의해 서비스될 수 있다. APC(300)의 안팎의 데이터는 도 2의 PLF 서브유닛(202)에서의 데이터 경로들을 통해 제공된다.
일부 연산자들은 연관된 메모리 블록(즉, 메모리 블록들(207-1, 207-2, 207-3 또는 207-4))에 액세싱하도록 구성될 수 있다. 예를 들어, 한 연산자는 연관된 메모리 블록으로부터 데이터를 판독하고 파이프라인 내로 자신의 출력 데이터 스트림 상에 데이터를 기록할 수 있다. 한 연산자는 파이프라인의 입력 데이터 스트림으로부터 데이터를 판독하고 연관된 메모리 블록에 데이터를 기록할 수 있다. 어느 경우에도, 메모리 위치의 어드레스는 연산자의 입력 데이터 스트림에서 연산자에 제공된다.
하나 이상의 버퍼(buffer) 연산자들이 APC에 제공될 수 있다. 버퍼 연산자는 로컬 버퍼(예를 들어, FIFO 버퍼)로부터 판독하거나 기록하도록 구성될 수 있다. 버퍼 연산자에서 혼잡(congestion)함이 발생할 경우, 버퍼 연산자는 현재 파이프라인을 일시중지(pause)하기 위해 일시중지 신호를 어서팅할 수 있다. 일시중지 신호는 혼잡함이 진정될 때까지 모든 관련 APC들의 기능을 디스에이블(disable)한다. 그 후, 버퍼 연산자는 일시중지 신호를 재설정하여 파이프라인 동작을 재개한다.
도 4는, 본 발명의 일 실시예에 따른, PLF 유닛(102-1, 102-2, 102-3 및 102-4) 및 PLF 서브유닛(202) 중 어느 하나의 일반화된 대표적인 구현(400)을 도시한다. 도 4에 도시된 바와 같이, PLF 구현(400)은 베네스네트워크(401)를 포함하고, 베네스 네트워크(401)는 n개의 M-비트 입력 데이터 스트림들(403-1, 403-2, ..., 및 403-n)을 수신하고 n개의 M-비트 출력 데이터 스트림들(404-1, 404-2, ..., 및 404-n)을 제공한다. 베네스 네트워크(401)는, 구성 레지스터에 프로그래밍된 임의의 원하는 순열로 입력 데이터 스트림들이 출력 데이터 스트림 스트림으로 매핑 및 라우팅되도록(routed) 구성될 수 있는 비-차단(non-blocking) n×n 베네스 네트워크이다. 출력 데이터 스트림들(404-1, 404-2, ..., 및 404-n)은 그 후 각각 선입선출(FIFO) 레지스터들(402)에서의 대응하는 구성 가능한 FIFO 레지스터에 제공되어, FIFO 출력 데이터 스트림들(405-1, 405-2, ..., 및 405-n)이 그들 각각의 구성 레지스터들에 따라 그들 각각의 수신 유닛들에 대해 시간 상으로 적절하게 정렬되도록 한다. 제어 버스들(410 및 411)은, 각각 베네스 네트워크(401)의 구성 레지스터들 및 FIFO 레지스터들(402)로의 구성 신호들을 나타낸다.
상기 상세한 설명은, 본 발명의 특정 실시예들을 설명하기 위해 제공되며, 본 발명을 제한하도록 의도되지 않는다. 본 발명의 범위 내에서 수많은 변형들 및 수정들이 가능하다. 본 발명은 첨부된 청구범위들에 기재된다.
Claims (27)
- 호스트 프로세서를 포함하는 시스템 내에서, 시스템 입력 데이터 스트림(stream)을 수신하는 프로세서로서,
각각 입력 데이터 스트림을 수신하고 출력 데이터 스트림을 제공하는 복수의 스트림 프로세서들 - 상기 스트림 프로세서들 중 선택된 하나의 스트림 프로세서의 입력 데이터 스트림은 상기 시스템 입력 데이터 스트림을 포함함 -;
상기 스트림 프로세서들 중 하나의 스트림 프로세서의 상기 출력 데이터 스트림을, 상기 스트림 프로세서들 중 다른 하나의 스트림 프로세서의 상기 입력 데이터 스트림으로서 라우팅(route)하도록 각각 구성 가능한 복수의 구성 가능한 상호접속 회로들; 및
상기 스트림 프로세서들 및 상기 구성 가능한 상호접속 회로들에 대한 액세스(access)를 제공하고 그리고 상기 스트림 프로세서들 및 상기 구성 가능한 상호접속 회로들에 의해 액세스 가능한 글로벌 버스(global bus)를 포함하고, 상기 호스트 프로세서는 상기 스트림 프로세서들 사이에서 하나 이상의 파이프라인(pipeline) 스테이지들을 형성하기 위해 상기 글로벌 버스를 통한 런타임(run time)에서 상기 구성 가능한 상호접속 회로들을 구성하는, 프로세서. - 제1항에 있어서,
상기 구성 가능한 상호접속 회로들은 계층적으로 구조화된(hierarchically organized), 프로세서. - 제1항에 있어서,
상기 호스트 프로세서는 또한 상기 스트림 프로세서들을 구성하는, 프로세서. - 제3항에 있어서,
상기 호스트 프로세서는, 각각의 스트림 프로세서에서 계산 단계를 개시하는 인에이블(enable) 신호를 상기 스트림 프로세서에 제공하는, 프로세서. - 제4항에 있어서
상기 스트림 프로세서의 상기 인에이블 신호가 디어서팅될(de-asserted) 때, 상기 스트림 프로세서 내의 선택된 회로들은 전력을 절약하기 위해 전력-게이팅되는(power-gated), 프로세서. - 제3항에 있어서,
각각의 스트림 프로세서가 상기 호스트 컴퓨터에 대한 인터럽트(interrupt)를 발생시키게(raise) 하는 인터럽트 버스를 더 포함하는, 프로세서. - 제6항에 있어서,
각각의 스트림 프로세서는:
각각 입력 데이터 스트림을 수신하고 출력 데이터 스트림을 제공하는 복수의 산술(arithmetic) 논리 회로들 - 상기 산술 논리 회로들 중 하나의 산술 논리 회로의 상기 입력 데이터 스트림은 상기 스트림 프로세서의 상기 입력 데이터 스트림을 포함하고, 상기 산술 논리 회로들 중 다른 하나의 산술 논리 회로의 상기 출력 데이터 스트림은 상기 스트림 프로세서의 상기 출력 데이터 스트림을 포함함 -;
복수의 구성 가능한 상호접속 회로들 - 각각의 구성 가능한 상호접속 회로는 상기 산술 논리 회로들 중 하나의 산술 논리 회로의 상기 출력 데이터 스트림을 상기 산술 논리 회로들 중 다른 하나의 산술 논리 회로의 상기 입력 데이터 스트림으로서 라우팅하도록 구성 가능함 -;
상기 산술 논리 회로들에 대한 액세스를 제공하거나 상기 산술 논리 회로들로부터 액세스 가능한 프로세서 버스; 및
상기 프로세서 버스를 통해 제어 및 구성 신호들을 상기 산술 논리 회로들에 제공하고 상기 산술 논리 회로들로부터 수신하는 제어 프로세서
를 포함하는, 프로세서. - 제7항에 있어서,
상기 제어 프로세서는 선택된 인터럽트들을 상기 인터럽트 버스 상에서 처리(process)하는, 프로세서. - 제7항에 있어서,
각각의 스트림 프로세서는, 상기 스트림 프로세서의 상기 산술 논리 회로들 중 하나 이상으로부터 그리고 상기 프로세서 버스를 통해 각각 직접 액세스 가능한 복수의 메모리 회로들을 더 포함하는, 프로세서. - 제7항에 있어서,
각각의 산술 논리 회로 또는 구성 가능한 상호접속 회로는 복수의 구성 레지스터들(registers)을 포함하고, 상기 복수의 구성 레지스터들은, 상기 산술 논리 회로 또는 구성 가능한 상호접속 회로의 제어 파라미터들의 값들을 저장하기 위해 상기 글로벌 버스를 통한 상기 호스트 프로세서 또는 상기 프로세서 버스 상의 상기 제어 프로세서에 의해 액세스 가능한, 프로세서. - 제10항에 있어서,
상기 스트림 프로세서는 상기 제어 프로세서에 의해 액세스 가능한 명령어(instruction) 메모리를 더 포함하고, 상기 명령어 메모리는 상기 제어 프로세서에 의해 실행 가능한 명령어들을 저장하는, 프로세서. - 제11항에 있어서,
상기 명령어 메모리는 상기 호스트 프로세서에 의해 액세스 가능하여 상기 글로벌 버스를 통해 상기 제어 프로세서에 의한 실행을 위해 명령어들을 저장하는, 프로세서. - 제10항에 있어서,
상기 글로벌 버스의 일부를 상기 프로세서 버스에 연결(connect)하기 위해 상기 호스트 프로세서에 의해 구성 가능한 프로세서 버스 멀티플렉서(multiplexer)를 더 포함하는, 프로세서. - 제7항에 있어서,
각각의 산술 논리 회로는 상기 호스트 프로세서 또는 상기 제어 프로세서로부터 인에이블 신호를 수신하고, 상기 인에이블 신호가 디어서팅될(de-asserted) 때, 상기 산술 논리 회로와 연관된 클록 신호들이 게이팅 오프되고(gated off), 이에 의해 상기 산술 논리 회로 내의 연산들을 일시 중단하는(suspending), 프로세서. - 제7항에 있어서,
각각의 산술 논리 회로는:
각각 입력 데이터 스트림을 수신하고 출력 데이터 스트림을 제공하는 복수의 연산자(operator) 회로들; 및
(i) 상기 산술 논리 회로의 상기 입력 데이터 스트림을 상기 연산자 회로들 중 하나의 연산자 회로의 상기 입력 데이터 스트림으로서, (ii) 상기 연산자 회로들 중 어느 하나의 연산자 회로의 상기 출력 데이터 스트림을 상기 연산자 회로들 중 다른 어느 하나의 연산자 회로의 상기 입력 데이터 스트림으로서, 그리고 (iii) 상기 연산자 회로들 중 하나의 연산자 회로의 상기 출력 데이터 스트림을 상기 산술 논리 회로 중 하나의 산술 논리 회로의 상기 출력 데이터 스트림으로서 라우팅하도록 구성된 구성 가능한 상호접속 회로
를 포함하는, 프로세서. - 제15항에 있어서,
각각의 연산자 회로는 하나 이상의 산술 회로들 또는 논리 회로들을 포함하는, 프로세서. - 제16항에 있어서,
각각의 산술 회로는: 가산기(adder), 곱셈기(multiplier) 또는 제산기(divider) 중 하나 이상을 포함하는, 프로세서. - 제16항에 있어서,
상기 논리 회로들 각각은 시프터들(shifters), 조합 논리 회로들, 순차(sequential) 논리 회로들 및 이들의 임의의 조합 중 하나 이상을 포함하는, 프로세서. - 제15항에 있어서,
각각의 연산자 회로는 상기 연산자 회로의 출력 데이터 스트림의 유효성(validity)을 나타내기 위한 유효 신호를 제공하는, 프로세서. - 제15항에 있어서,
적어도 하나의 연산자 회로는 메모리 연산자를 포함하는, 프로세서. - 제15항에 있어서,
적어도 하나의 연산자 회로는 버퍼(buffer) 연산자를 포함하는, 프로세서. - 제1항에 있어서,
각각의 구성 가능한 상호접속 회로는, 하나 이상의 입력 데이터 스트림들을 수신하고 하나 이상의 출력 데이터 스트림들을 제공하는 비-차단(non-blocking) 네트워크를 포함하는, 프로세서. - 제22항에 있어서,
상기 비-차단 네트워크는 N×N 베네스(Benes) 네트워크를 포함하는, 프로세서. - 제22항에 있어서,
상기 구성 가능한 상호접속 회로는 복수의 선입선출(first-in-first-out) 메모리를 더 포함하고, 상기 복수의 선입선출 메모리 각각은 상기 비-차단 네트워크의 상기 출력 데이터 스트림들 중 선택된 출력 데이터 스트림을 수신하여, 구성 가능한 지연 값만큼 지연된, 상기 비-차단 네트워크의 상기 선택된 출력 데이터 스트림에 대응하는 지연된 출력 데이터 스트림을 제공하는, 프로세서. - 제1항에 있어서,
상기 프로세서는, RF 프론트-엔드(radio frequency front-end) 회로로부터 디지털화된 샘플들을 실시간으로 처리하는 디지털 베이스밴드(baseband) 회로의 역할을 하는, 프로세서. - 제25항에 있어서,
상기 프로세서의 상기 입력 데이터 스트림은, 상기 RF 프론트-엔드 회로에서 신호를 처리한 후, 안테나에서 수신된 신호의 동위상(in-phase) 및 직교 위상(quadrature) 성분들을 포함하는, 프로세서. - 제26항에 있어서,
상기 수신된 신호는 수많은 위치확인(positioning) 위성들로부터 전송된 내비게이션(navigation) 신호들을 포함하는, 프로세서.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962954952P | 2019-12-30 | 2019-12-30 | |
US62/954,952 | 2019-12-30 | ||
PCT/US2020/066823 WO2021138189A1 (en) | 2019-12-30 | 2020-12-23 | Processor for configurable parallel computations |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220139304A true KR20220139304A (ko) | 2022-10-14 |
Family
ID=76547640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227025841A KR20220139304A (ko) | 2019-12-30 | 2020-12-23 | 구성 가능한 병렬 계산을 위한 프로세서 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11789896B2 (ko) |
EP (1) | EP4085354A4 (ko) |
JP (1) | JP2023508503A (ko) |
KR (1) | KR20220139304A (ko) |
CN (1) | CN115280297A (ko) |
WO (1) | WO2021138189A1 (ko) |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5056000A (en) * | 1988-06-21 | 1991-10-08 | International Parallel Machines, Inc. | Synchronized parallel processing with shared memory |
US5594866A (en) * | 1989-01-18 | 1997-01-14 | Intel Corporation | Message routing in a multi-processor computer system with alternate edge strobe regeneration |
US5680400A (en) * | 1995-05-31 | 1997-10-21 | Unisys Corporation | System for high-speed transfer of a continuous data stream between hosts using multiple parallel communication links |
IT1288076B1 (it) * | 1996-05-30 | 1998-09-10 | Antonio Esposito | Multicalcolatore elettronico numerico parallelo multiprocessore a ridondanza di processori accoppiati |
US6944186B2 (en) * | 1999-12-14 | 2005-09-13 | General Instrument Corporation | MPEG re-multiplexer having multiple inputs and multiple outputs |
EP1540848B1 (en) * | 2000-08-03 | 2009-02-11 | Infineon Technologies AG | Flexible tdma system architecture |
US6772241B1 (en) * | 2000-09-29 | 2004-08-03 | Intel Corporation | Selective interrupt delivery to multiple processors having independent operating systems |
US7840777B2 (en) * | 2001-05-04 | 2010-11-23 | Ascenium Corporation | Method and apparatus for directing a computational array to execute a plurality of successive computational array instructions at runtime |
US20030039262A1 (en) | 2001-07-24 | 2003-02-27 | Leopard Logic Inc. | Hierarchical mux based integrated circuit interconnect architecture for scalability and automatic generation |
US7159099B2 (en) * | 2002-06-28 | 2007-01-02 | Motorola, Inc. | Streaming vector processor with reconfigurable interconnection switch |
GB2395306B (en) | 2002-11-15 | 2006-02-15 | Imagination Tech Ltd | A configurable processor architecture |
US7600143B1 (en) | 2004-08-19 | 2009-10-06 | Unisys Corporation | Method and apparatus for variable delay data transfer |
US20060168637A1 (en) * | 2005-01-25 | 2006-07-27 | Collaboration Properties, Inc. | Multiple-channel codec and transcoder environment for gateway, MCU, broadcast and video storage applications |
US20070113229A1 (en) * | 2005-11-16 | 2007-05-17 | Alcatel | Thread aware distributed software system for a multi-processor |
TWI361379B (en) * | 2006-02-06 | 2012-04-01 | Via Tech Inc | Dual mode floating point multiply accumulate unit |
US7986268B2 (en) | 2006-05-08 | 2011-07-26 | Nxp B.V. | GPS RF front end and related method of providing a position fix, storage medium and apparatus for the same |
US7471204B2 (en) * | 2006-07-07 | 2008-12-30 | Broadcom Corporation | Receiver architecture for canceling blocking signals |
US8145650B2 (en) * | 2006-08-18 | 2012-03-27 | Stanley Hyduke | Network of single-word processors for searching predefined data in transmission packets and databases |
EP2056212B1 (en) * | 2006-08-23 | 2013-04-10 | NEC Corporation | Mixed mode parallel processor system and method |
KR100883655B1 (ko) | 2006-12-04 | 2009-02-18 | 삼성전자주식회사 | 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법 |
JP2009134391A (ja) * | 2007-11-29 | 2009-06-18 | Renesas Technology Corp | ストリーム処理装置、ストリーム処理方法及びデータ処理システム |
US7958341B1 (en) * | 2008-07-07 | 2011-06-07 | Ovics | Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory |
EP2372530A4 (en) * | 2008-11-28 | 2012-12-19 | Shanghai Xinhao Micro Electronics Co Ltd | METHOD AND DEVICE FOR DATA PROCESSING |
CN101782893B (zh) * | 2009-01-21 | 2014-12-24 | 上海芯豪微电子有限公司 | 可重构数据处理平台 |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
CN101739242B (zh) * | 2009-11-27 | 2013-07-31 | 深圳中微电科技有限公司 | 一种流数据处理方法及流处理器 |
US7982497B1 (en) | 2010-06-21 | 2011-07-19 | Xilinx, Inc. | Multiplexer-based interconnection network |
CN102298580A (zh) | 2010-06-22 | 2011-12-28 | Sap股份公司 | 使用异步缓冲器的多核查询处理 |
US9558247B2 (en) * | 2010-08-31 | 2017-01-31 | Samsung Electronics Co., Ltd. | Storage device and stream filtering method thereof |
EP3005078A2 (en) * | 2013-05-24 | 2016-04-13 | Coherent Logix Incorporated | Memory-network processor with programmable optimizations |
US9985996B2 (en) * | 2013-09-09 | 2018-05-29 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Decoupling audio-video (AV) traffic processing from non-AV traffic processing |
US10404624B2 (en) * | 2013-09-17 | 2019-09-03 | Avago Technologies International Sales Pte. Limited | Lossless switching of traffic in a network device |
US9712442B2 (en) * | 2013-09-24 | 2017-07-18 | Broadcom Corporation | Efficient memory bandwidth utilization in a network device |
US20170220499A1 (en) | 2016-01-04 | 2017-08-03 | Gray Research LLC | Massively parallel computer, accelerated computing clusters, and two-dimensional router and interconnection network for field programmable gate arrays, and applications |
CN109032668B (zh) * | 2017-06-09 | 2023-09-19 | 超威半导体公司 | 具有高带宽和低功率向量寄存器堆的流处理器 |
US10936598B2 (en) * | 2017-11-21 | 2021-03-02 | Gto Llc | Systems and methods for targeted exchange emulation |
US10824467B2 (en) * | 2018-08-07 | 2020-11-03 | Arm Limited | Data processing system with protected mode of operation for processing protected content |
-
2020
- 2020-12-23 JP JP2022539692A patent/JP2023508503A/ja active Pending
- 2020-12-23 KR KR1020227025841A patent/KR20220139304A/ko unknown
- 2020-12-23 CN CN202080090121.3A patent/CN115280297A/zh active Pending
- 2020-12-23 US US17/132,437 patent/US11789896B2/en active Active
- 2020-12-23 WO PCT/US2020/066823 patent/WO2021138189A1/en unknown
- 2020-12-23 EP EP20908751.9A patent/EP4085354A4/en active Pending
-
2023
- 2023-09-12 US US18/367,344 patent/US20230418780A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11789896B2 (en) | 2023-10-17 |
US20210200710A1 (en) | 2021-07-01 |
CN115280297A (zh) | 2022-11-01 |
WO2021138189A1 (en) | 2021-07-08 |
EP4085354A4 (en) | 2024-03-13 |
US20230418780A1 (en) | 2023-12-28 |
JP2023508503A (ja) | 2023-03-02 |
EP4085354A1 (en) | 2022-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11915057B2 (en) | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US9760373B2 (en) | Functional unit having tree structure to support vector sorting algorithm and other algorithms | |
US7533244B2 (en) | Network-on-chip dataflow architecture | |
US3537074A (en) | Parallel operating array computer | |
US5450557A (en) | Single-chip self-configurable parallel processor | |
US20030097187A1 (en) | Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem | |
US10838728B2 (en) | Parallel slice processor shadowing states of hardware threads across execution slices | |
US7263602B2 (en) | Programmable pipeline fabric utilizing partially global configuration buses | |
US7734896B2 (en) | Enhanced processor element structure in a reconfigurable integrated circuit device | |
US20240303218A1 (en) | Reconfigurable processor and configuration method | |
US20200042321A1 (en) | Low power back-to-back wake up and issue for paired issue queue in a microprocessor | |
KR20220139304A (ko) | 구성 가능한 병렬 계산을 위한 프로세서 | |
Ferreira et al. | A low cost and adaptable routing network for reconfigurable systems | |
Feng et al. | Design and evaluation of a novel reconfigurable ALU based on FPGA | |
Einstein | Mercury Computer Systems' modular heterogeneous RACE (R) multicomputer | |
JP2000242613A (ja) | 動的再構成計算のためのメタアドレスアーキテクチャ及びアドレス指定方法 | |
Ferreira et al. | A Dynamic Reconfigurable Super-VLIW Architecture for a Fault Tolerant Nanoscale Design | |
JPH05324694A (ja) | 再構成可能並列プロセッサ | |
Ferreira et al. | Reducing interconnection cost in coarse-grained dynamic computing through multistage network | |
US20090113083A1 (en) | Means of control for reconfigurable computers | |
Srini et al. | Parallel DSP with memory and I/O processors | |
Kasim et al. | HDL Based Design for High Bandwidth Application | |
US20130046955A1 (en) | Local Computation Logic Embedded in a Register File to Accelerate Programs | |
JPWO2021138189A5 (ko) |