KR100366689B1 - 비디오 프레임 렌더링 엔진 - Google Patents

비디오 프레임 렌더링 엔진 Download PDF

Info

Publication number
KR100366689B1
KR100366689B1 KR10-1999-7005593A KR19997005593A KR100366689B1 KR 100366689 B1 KR100366689 B1 KR 100366689B1 KR 19997005593 A KR19997005593 A KR 19997005593A KR 100366689 B1 KR100366689 B1 KR 100366689B1
Authority
KR
South Korea
Prior art keywords
circuit
interface
memory
interface circuit
bus
Prior art date
Application number
KR10-1999-7005593A
Other languages
English (en)
Other versions
KR20000062253A (ko
Inventor
제닝스얼더블유
Original Assignee
하이닉스 세미컨덕터 아메리카 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 하이닉스 세미컨덕터 아메리카 인코포레이티드 filed Critical 하이닉스 세미컨덕터 아메리카 인코포레이티드
Publication of KR20000062253A publication Critical patent/KR20000062253A/ko
Application granted granted Critical
Publication of KR100366689B1 publication Critical patent/KR100366689B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명은 비디오처리와 동화제작 또한 디지털신호와 화상처리에 사용하기 위한 프레임의 전체 또는 일부를 생성하는데 필요한 메모리, 로직, 산술적 및 제어 구성회로(circuitry)를 포함하는 회로를 제공한다. 상기 하나 이상의 회로를 집적회로 상에 제공한다.비디오 혹은 화상 프레임 생성 시스템은 동화(애니메이션)용 프레임 제작, 특히 의료화상이나 비디오게임 및 시뮬레이션 환경에서의 가상현실 및 실시간 장면 생성 등의 3차원 또는 기타 고성능 어플리케이션에서 탁월한 성능을 제공하기 위한 것으로서, 상기한 하나 이상의 집적회로로 구성되며 필요하면 별도의 메모리 구성회로를 더 포함할 수 있다
이 회로는 MPEG4가 제안한 것 같은 고속객체지향 그래픽 관련 흐름을 처리하는데 사용되고 또한 최적화된 산수능력의 단일칩 JAVA 엔진 역할을 한다

Description

비디오 프레임 렌더링 엔진 {VIDEO FRAME RENDERING ENGINE}
그래픽 산업의 주관심사는 프레임을 생성하는 것이다. 각 프레임은 화소의 직사각형의 어레이(array)이며, 때로는 수백만 화소 이상을 포함한다. 동화제작, 특히 3차원 동화제작에서는 일반적으로 하나의 화소를 생성하는데 수백만에서 수십억의 계산을 필요로 한다. 유사하게, 그래픽적용(예를들어, 의료용 화상)에는 때로는 동화제작 순서와 같이, 하나나 그 이상의 프레임의 생성이 요구된다.
1995년에 픽서(Pixer)사 작품인 모션픽처 영화 "토이 스토리(Toy story)"를 예를 들어 설명한다. 모션픽처 영화에는 110,000프레임이 있다. 픽서사는 87개의 듀얼프로세서 100MHz Sparc 20's 및 30 쿼드프로세서 100MHz, Sparc 20'를 사용했다. 이는 전체 294CPU이다. CPU당 평균 96메가바이트 RAM 및 각 프로세싱 노드는 3-5기가바이트의 로컬 디스크드라이브를 갖고 있다. 디스크 팜 및 그의 서버는 본 발명과 관련은 없지만 대단히 큰 것이었다. 전체 모션픽처는 Sparc CPU 처리시간이 1 내지 3시간 걸리는 평균프레임(으로) 계산하는데 46일이 소요된다 (참조문 1 참조).
"토이 스토리"는 실사영화는 아니었으나 비약적인 진보를 보여주었다. 이는 전체를 완전히 컴퓨터 3차원 동화제작기술로 제작한 첫번째 영화이다. 실사영화 경우는 적어도 10개 이상의 변수가 필요하므로 계산이 복잡하게 된다. 실사 프레임은 계산에 30시간 걸리는 것으로 가정한다.
프레임 생성에는 많은 다른 프로그램이 사용된다. 이 프로그램들은 모두 복잡하고 고성능이 요구된다(참조문 19∼23 참조). 이는 C, C++, 및 포트란(FORTRAN)과 같은 고수준의 절차 및 객체지향 컴퓨터 프로그램 언어로 생성된다. 이들 프로그램의 성능에서 가장 결정적인 부분만 기초 렌더링(rendering) 엔진 하드웨어를 목표로 하는 어셈블리/기계언어로 직접 기록되는데, 그 이유는 어셈블리/기계 언어로 프로그램 짜기가 어렵고 또한 과중한 경비가 들기 때문이다. 부동소수점 계산법이 이들 넓은 동적범위와 프로그램의 용이성 때문에 이들 프로그램에서 유명하다.
성능 개선의 필요성이 크다. 최적의 비디오 편집에 매초당 1프레임을 필요로 한다. 실시간 가상현실은 초당 30개의 생성프레임이 필요하다. 이들 두 상업적인 적용요건을 만족하기에 요구되는 성능개선은 비디오편집(=30시간/프레임×3600초/시간)의 경우 108,000×, 가상현실(=30 * 비디오편집)의 경우 3,240,000×의 고속화이다.
유사한 상황이 고성능 디지털 신호 처리에도 존재한다. 대표적인 요건은 때로는 인체나 기계도구를 포함한 대상체의 내부화상을 구성하기 위해 2차원 및 3차원 센서어레이로부터 시간에 따라 수집된 화상의 처리작업을 포함한다.
상기 다차원적인 신호처리 어플리케이션(Application)은 초음 또는 자기화상센서의 뱅크로부터 화상을 구성한다. 이것은 프레임 생성에 유사한 성능요구를 갖고 있다. 이들 어플리케이션은 3차원 또는 4차원환경의 재구성/시뮬레이션에 있어서의 특징들을 해석하는 것을 목적으로 한다(주: 4차원은 시간에 따라 관찰/시뮬처리된 3차원영역). 특징분석은 입력센서 분석, 주어진 기간내에 계산처리로 제공될 수 있는 FFT 깊이의 분석, 또한 데이터프레임 처리를 통한 반올림오차 및 이 오차의 누산의 제어에 관한 기능이다.
최소시간내의 정밀한 특징분석은 생성된 화소 또는 출력데이터점에 대한 수백만 때로는 수십억의 산술연산을 수행하게 한다. 동적범위 제어와 융통성있는 반올림오차 제어를 위하여 일반적으로 부동소수점 계산법이 많이 사용된다. 지속적인 소프트웨어의 진보와 많은 그외 다양한 어플리케이션에서의 실용성 때문에 알고리즘적 유연성이 우선적이다. 각종 어플리케이션에서 종종 아주 다양한 소프트웨어를 필요로 한다.
응용소프트웨어의 개발은 계속적으로 요구되고 있다. 특히, 대부분의 어플리케이션은 수많은 프로그램이 필요하고, 대부분 C, C++, 포트란(참조문 11∼18 참조)과 같은 절차적 컴퓨터 프로그램 언어로 기록되며, 기계수준의 프로그램 작업은 프로그램 중 가장 중요한 기능적 부분에서만 제한적으로 사용된다.
목표알고리즘은 다음의 일반적인 특징을 갖는다: 처리요소당 많은 양, 때로는 100MB 범위의 메모리를 필요로 하고; 출력치(화소, 데이터점 등)당 대단히 많은 횟수의 산술적 계산을 필요로 하고; 모든 입력치(화소, 데이터점 등)는 아니어도 대부분의 입력치당 대단히 많은 횟수의 계산을 필요로 하며; 계산용량에 비해 비교적 적은 통신 오버헤드를 필요로 한다.
고해상도 그래픽은 과거 30년이 넘게 개발되어 왔다. 1960년대와 1970년대초의 예비노력으로 최소의 전용하드웨어를 탑재한 그래픽 컴퓨터시스템이 창출되었다. 그 당시 VLSI 집적회로(ICs)에 대해서는 고려하지 않거나 미미했다.
반도체장치에 의한 그래픽산업의 지원은 다음의 문제에 초점을 맞추었다.
A. I/O장치의 지원, 스크린표시장치의 지원에 많은 노력을 소모했다. 이것이 스크린을 제어하기 위한 전용집적회로의 개발을 선도했다(참조문 2 참조).
B. 고속마이크로 프로세서와 디지털신호 프로세서의 개발.
C. 특히, DRAM, VRAM등과 같은 고속 고밀도메모리장치의 개발.
D. 실시간 화상처리와 프레임 생성 어플리케이션을 겨냥한 특수부품.
이들 노력은 다음에 기술하는 바와 같은 근본적인 한계성이 있다.
A. 표시장치 제어기는 각 프레임이 일정기간 내에 고정실행 구조기계에 의해 생성되는 것으로 한정된다. 그러므로, 프레임 알고리즘의 변경이 필수적으로 제한된다.
B. 고속 마이크로 프로세서와 DSP는 진성 알고리즘 측면에서 큰 융통성이 있으며 따라서, 토이 스토리를 만들어낸 선(SUN) 네트워크 같은 고성능 전용프레임 렌더링(rendering)구성에 사용된다(참조문 1 참조). 인텔 펜티엄 프로세서의 출현은 모든 RISC(Reduced Instruction Set Computing)공동체의 성능수단의 결합을 가져왔다.
그러나, 시판되는 마이크로프로세서나 DSP시스템은 그들의 육중한 오버헤드 회로소자 때문에 크게 제약을 받는다. 최신의 슈퍼 스칼라 컴퓨터에서는 이 오버헤드회로 소자는 실제의 산술적 단위보다 크다(참조문 30 및 31 참조).
C. 고성능 메모리가 필요하지만 단순히 저장하기 위한 데이터를 생성하지 않기 때문에 신속한 프레임 생성을 보장하기에는 충분하지 않다.
D. 고성능메모리 장착, 때로는 DRAM, 집적회로상에 견고히 결합된 데이터 처리요소를 포함하는 몇가지의 특수목적 부품들이 제안된다. 그러나 이 제안은 까다로운 제한을 갖는다. 상기 회로는 참조문32에 기술된 바와 같이 정밀도가 극히 제한된 고정점 산술엔진을 사용한다. 상기 회로는 부동소수점 수행기능 및 단일 프로세서의 로컬메모리보다 큰 프로그램의 처리시 성능제한이 있다.
제안된 특수목적 부품은 몇가지 범주의 알고리즘을 수행하기 위해 가장 효과적으로 활용된다. 이들 부품은 다음을 포함한다:
D1. 화상압축/압축해제 프로세서. 이 회로는 중요하나 매우 특수적이어서 각종 알고리즘에 대한 일반적인 해결책을 제공하지는 않는다. 예를들어, 이 엔진은 C, C++, 포트란과 같은 고수준의 절차적 언어로 효율적으로 프로그램 하기가 대단히 어려운 경향이 있다. 프로그램 작업을 어셈블리 언어로 해야하는 필요성은 그러한 장치가, 소프트웨어 개발시 과대한 비용없이 다차원화상과 그래픽프레임을 생성하기 위한, 일반적인 요구사항과 관계없다는 사실을 암시한다.(참조문 24, 25참조)
D2. 프랙털스, Z-버퍼, 고우러드 음영(shading) 같은 그래픽알고리즘을 위한 최적화된 프로세서. 이들 회로에 의하면, 그래픽프레임 생성 및 화상처리 요구 양측을 넓은 단면의 접근에 있어서 최적화를 기할 수 없다.(참조문 26∼29 참조)
D3. 잔물결, 기타 여파기, 제1패스 기수-4,8,16FFT, 1차원, 2차원, 불연속 코사인 변환엔진 등과 같은 신호처리 예비프로세서 가속기. 이들 회로는 광범위한 대형프레임 생성 태스크의 효율적인 실행을 위해 프로그램 하기가 어렵다.
D4. 다중프로세서 화상프로세서. 이들 프로세서는 MIMD 및 SIMD 복합시스템을 포함하고, 일반목적의 프로그램 작업에 적합치 않다(참조문 24, 41∼43참조).
이들 프로세서는 크로마틱스 MPACT IC와 같은 VLWI(Very Long Instruction Word) IC를 또한 포함한다. 그러한 IC는 다시또 효율적인 컴파일러 지원이 요구되는 상업용 어플리케이션에 사용되는 대용량의 3차원 동화제작 소프트웨어를 프로그램하기 위해 필요한 계산적인 유연성을 제공할 수가 없다.(참조문 34, 39참조)
D5. 다중매체 신호프로세서. 이들 프로세서는 또한 부동소수점 지원 부족, 다량의 외부메모리에 대한 광범위한 외부데이터 메모리 인터페이스 액세스 대역폭의 부족, 명령처리 유연성과 데이터처리 범용성의 부족, 또한 누산결과에 관련한 고균일성 데이터 액세스 메카니즘 없이 연산하도록 프로그램하기에 비효율적이며 곤란한 벡터프로세서에 대한 의존성 등 다수의 단점이 있다(참조문35∼38참조).
따라서, 비디오 프레임 렌더링(즉, 동영상 데이터를 시각화 하는 작업)과 DSP 태스크 실행을 위한 계산과 관련해서 상기한 바와 같은 한계점을 극복할 수 있는 계산엔진이 필요하다.
본 발명은 회로에 관한 것이며, 더욱 상세히는 본 발명은 비디오프레임 생산태스크와 디지털신호 가공처리(DSP)태스크에 적합한 고성능 집적회로소자에 관한 것이다.
도 1은 본 발명의 실시예에 따른 기초회로의 블록도.
도 2는 본 발명의 실시예에 따른 도 1의 어레이 프로세서의 블록도.
도 3은 본 발명의 다른 실시예에 따른 도 1의 어레이 프로세서의 블록도.
도 4는 도 1의 내장 마이크로 프로세서의 블록도.
도 5는 독립 외부메모리 인터페이스와 함께 도1의 기초회로의 두개의 사례를 갖는 집적회로의 블록도.
도 6은 하나의 외부메모리 인터페이스를 공유(sharing)하는 도1의 기초회로의 두개의 사례를 갖는 집적회로의 블록도.
도 7은 독립된 외부메모리 인터페이스와 함께 도1의 기초회로의 네개의 사례를 갖는 집적회로의 블록도.
도 8은 하나의 외부메모리 인터페이스를 공유(sharing)하는 도1의 기초회로의 네개의 사례를 갖는 집적회로의 블록도.
도 9는 두 개의 외부메모리 인터페이스를 공유(sharing)하는 도1의 기초회로의 네개의 사례를 갖는 집적회로의 블록도.
도 10은 두 개의 외부메모리 인터페이스를 공유(sharing)하는 완전히 내부 접속된 메시지포트(PORT)를 갖는 도1의 기초회로의 네개의 사례를 갖는 집적회로의 블록도.
도 11은 네 개의 메모리 인터페이스를 공유(sharing)하는 도1의 기초회로의 열여섯개의 사례를 갖는 집적회로의 블록도.
도 12는 두 개의 메모리 인터페이스를 공유(sharing)하는 도1의 기초회로의 열여섯개의 사례를 갖는 집적회로의 블록도.
도 13은 그들의 대응하는 메모리모듈과 함께 도1의 기초회로의 사례를 갖는 프린트회로기판의 블록도.
도 14는 그들의 대응하는 메모리모듈과 함께 도1의 기초회로의 사례를 갖는 다른 프린트회로기판의 블록도.
<도면의 주요부분에 대한 부호의 설명>
1 : 기초회로 2 : 제어기
4 : 내부 로컬메모리 6 : 대용량메모리 광역인터페이스회로
7 : GEBI 8 : 마이크로 프로세서 서브시스템
9 : DSP(어레이 프로세서) 10 : 인접회로통신포트
11 : 특수목적회로
본 발명은 상기에 기술한 바와 같은 종래 요구사항을 감안하여 제안된 것으로서, 비디오처리와 동화제작 또한 디지털신호와 화상처리에 사용하기 위한 프레임의 전체 또는 일부를 생성하는데 필요한 메모리, 로직, 산술적 및 제어 구성회로(circuitry)를 포함하는 회로를 제공한다. 상기 하나 이상의 회로를 집적회로 상에 제공한다. 비디오 혹은 화상 프레임 생성 시스템은 동화(애니메이션)용 프레임 제작, 특히 의료화상이나 비디오게임 및 시뮬레이션 환경에서의 가상현실 및 실시간 장면 생성 등의 3차원 또는 기타 고성능 어플리케이션에서 탁월한 성능을 제공하기 위한 것으로서, 상기한 하나 이상의 집적회로로 구성되며 필요하면 별도의 메모리 구성회로를 더 포함할 수 있다
이 회로는 MPEG4가 제안한 것 같은 고속객체지향 그래픽 관련 흐름을 처리하는데 사용되고 또한 최적화된 산수능력의 단일칩 JAVA 엔진 역할을 한다.
<정의>와이어(Wire)와이어는 회로의 다수의 노드(node) 사이에서 상태(state)를 공유하는 메커니즘이다. 상기 상태는 임의의 물리적 조건에 근거한 유한 알파벳으로, 다음을 제한없이 포함한다: 전압, 전류, 위상, 스펙트럼 분해, 광자(photon)진폭. 기호는 알파벳 각각의 소자이다. 적절한 물리적 조건의 측정값 범위는 일반적으로 기호를 부호화한다. 가장 일반적으로 사용된 알파벳은 이진 기호쌍{0,1}이다. 상기 구조를 모두 사용하는 이진법체계가 존재한다. 그외 일반적으로 사용된 알파벳은 3부호 알파벳, 예를들어 {0,1,2}와, 복수형 이진알파벳, 예를들어 {00,01,10,11} 등을 포함한다. 그외 알파벳들도 사용중이다. 와이어는, 예를들어 금속의 스트립(strip)(예를들어, 집적회로 또는 회로판에서), 광섬유, 또는 마이크로파 채널(때때로 마이크로채널로 참조됨)로 구현된다.와이어번들(Wire Bundle)와이어번들은 하나이상의 와이어 집합체이다.버스(Bus)버스는 버스프로토콜(Protocol)을 갖는 와이어번들이다. 상기 버스프로토콜은 와이어번들에 의해 연결된 회로들간의 통신으로 정의된다. 버스는 전형적으로 성분 와이어번들로 구성되는 것으로 하나 이상의 성분 와이어번들은 연결된 성분들이 수신용인지 및 하나이상의 다른 성분 와이어번들에 전송되는지를 결정한다.부동소수점(Floating Point)부동소수점 표기는 숫자로 나타나는 상태의 집합체를 포함한다. 상기 집합체는 기호, 가수, 숫자로 표현된 멱지수를 결정하는 상태의 서브-집합체를 포함한다. 상기 표기는 비독점적으로 제한되지는 않는 것으로 IEEE표준 부동소수점을 포함하는 이진시스템 표기와 본 명세서에 기술된 바를 포함하는 특정목적의 부동소수점 표기를 포함한다. 부동소수점 표기는 비독점적으로 확장부분을 포함함으로써 상술된 바와 같은 기호, 가수, 숫자의 멱지수를 함유하는 두 서브-집합체가 된다. 상기 숫자상의 표현은 존재하는 숫자들의 간격이다. 추가적으로 부동소수점 표기는 비-이진시스템을 포함하므로, 상기 가수 및 멱지수는 2 외의 숫자의 파워를 참조한다.프로그램형 유한 상태장치(Programmable Finite State Machine,PFSM)프로그램형 유한 상태장치는 상태 레지스터, 상태 조건이나 양 등이 존재하는 가능한 하나 이상의 추가 레지스터(register), 또한 상기 상태 레지스터, 추가 레지스터, 외부입력이 상기 상태 레지스터 및 추가 레지스터에 대한 다음값을 생성하는 메카니즘을 포함하는 장치이다.SIMD단일 명령 다중 데이터패스(path) 아키텍처는 동일 명령 실행 주기동안 하나 이상의 데이터패스 상에서 동일 명령을 실행한다.상기 기초 컨셉에 대한 전형적인 확장은 각 데이터패스에 "상태 플래그(flag) 비트(bits)" 를 병합한 것이다. 상기 플래그는 광역 공유 명령(globally shared instructions)의 전부 혹은 일부를 실행함에 있어서 특정 데이터패스를 가능 및 불가능하게 한다.SIMD 아키텍처는 다중 데이터 스트림의 동일 처리를 요구하는 상태에서 가장 바람직하다. 상기 데이터 스트림 고유의 동기성은 종종 통신 제어 문제점을 간소화시키는 잇점이 있다. SIMD 아키텍처는 데이터처리가 데이터패스들 간에 상이할 때마다 비능률적으로 된다. SIMD 아키텍처는 데이터패스 사이에서 공유하는 명령 처리 메카니즘이 1개 밖에 없으므로 명령 처리 간접비용을 크게 낮추어야 한다.상기 명령 프로세스 장치는 명령 펫칭(가져오기:fetching) 장치를 갖는다. 상기 데이터패스 집합체는 전형적으로 하나의 명령 메모리만을 필요로한다.MIMD다중 명령 다중 데이터패스 구조는 다른 데이터패스 유닛(unit)상에서 별개의 명령을 실행한다. 상기 어프로치(approach)의 근본적인 잇점은 유연성이다. 모든 데이터 프로세스 유닛은 그외 데이터 프로세스 유닛과는 독립적으로 자신의 명령을 실행할 수 있다. 그러나, 상기 유연성은 추가비용이 든다. 보다 상세하게는, 각 데이터 프로세스 유닛은 자신의 펫칭, 디코팅, 수열 명령을 갖추어야한다. 상기 명령 펫칭 장치는 데이터 프로세서에 적어도 최소 용량의 로컬메모리를 갖는다. 상기 로컬 메모리는 종종 캐쉬(cache)이다.긴 명령어 프로세서(Very Long Instruction Word Processors)(각각 VLIW 및 LIW)매우 긴 명령 프로세서가 클래스(class)구조임에 따라 단일 명령 프로세스 장치는 조건 코드상의 브랜치(branch) 및 독립적으로 데이터패스 유닛을 제어하는 멀티플 명령영역과 같은, 일반 기능을 가능하게하는 프로그램 카운터를 함유하는 장치이다. 상기 구조에서, 상기 데이터패스 유닛은 구조 또는 기능상 종종 상이하다.어레이 프로세서(Array Processor)어레이 프로세서는 하나 이상의 집합체로 배열된 멀티플 데이터패스 유닛을 갖는 LIW 또는 VLIW 명령-프로세싱 구조로 정의된다. 본 발명의 바람직한 실시예에 있어서, 상술한 바와 같이, 상기 데이터패스 집합체는 전송유닛을 갖는 일반 피연산함수 버스를 매개로 수신된 일반 피연산함수상에서 실행 및 수신한다; 각 데이터패스는 메모리에서 하나이상의 추가 피연산함수를 수신한다; 각 데이터패스 집합체는 명령영역을 갖는 구조 메모리를 함유하는 것으로 상기 영역은 요소들로 제어된 프로그램의 기능을 제어한다; 각 데이터패스 유닛은 하나이상의 MAC(이하, "MAC"라 한다)를 함유한다; 각 MAC는 다수의 누적 레지스터를 갖는다.승산기-누적기(Multiplier-Accumulator)승산기-누적기는 두 피연산함수의 곱셈 및 적어도 그외 피연산함수의 덧셈을 동시에 계산하는 산술적 회로이다.빠른 퓨리에 변환(Fast Fourier Transform:FFT)빠른 퓨리에 변환은 신호의 스펙트럼을 발생시키기 위한 최적의 알고리즘이다. 다양한 관련 주제의 충분한 토의를 위해 참조문 [11],[12] 및 [15]를 적절히 참조한다.벡터 프로세서(Vector Processor)벡터 프로세서는 전적으로 벡터상에서만 배타적으로 동작하도록 디자인된 구조이다. 전형적으로, 벡터 프로세서는 심층 배치된다(pipelined). 벡터 프로세싱에 관한 문헌은 많다. 참조문[46]-[53]을 참조한다. 첨부B인, 참조문 [30]에서의 "벡터 프로세서"는 상기의 개요를 제공한다.본 발명은 메모리, 로직, 산술 및 특정 회로망이 내장되고 특히 비디오 프레임 렌더링에 사용되는 광범위한 종류의 알고리즘을 지원하도록 제어할 비용효율적 기초회로를 제공하는 것이다. 기초회로를 복제하므로서 계산용량을 증가시키고, 고성능에 대한 요구를 만족할 수 있는 능력을 창출한다.
고성능 다차원성 신호처리 및 고성능 프레임 렌더링 그래픽은 구별기준이 확실하지 않다. 본 명세서에 있어서는, 어플리케이션의 차이를 나타내기 위해 필요한 설명내용을 추가한 그래픽 투시도를 통한 프레임 렌더링에 초점을 맞추고 있다.
도 1은 본 발명의 실시예에 따른 기초회로(1)의 블록도이다. 기초회로(1)에서, 외부로컬 메모리 인터페이스(local external memory interface ; ELMI)(2)를 위한 하나 이상의 제어기(controller)는 기초회로(1)에 결합된 외부로컬 메모리로의 액세스를 제공한다. 외부로컬 메모리는 용량이 약 100MB 이상(참조문 1의 Toy Story 참조), 예를 들어 1GB정도가 바람직하다. 주메모리 인터페이스와 제어기(Master Memory Interface and Controller, MMIC)(6)는, "대용량 메모리 광역 인터페이스회로"(6)로도 참조되는 것으로, 외부로컬메모리 인터페이스(2)와 다양한 그외 구성요소간의 명령을 포함하는 데이터의 흐름(flow)를 제어한다. 상기 MMIC(6)는 또한 DRAM 뱅크(내부로컬메모리)(4)로의 액세스를 제어한다. 상기 기초회로(1)는 또한 광역 외부버스 인터페이스(Global External Bus Interface; 이하, GEBI)(7), 내장 마이크로프로세서(Microprocessor)(8), 어레이 프로세서(9), 인접회로통신포트(10), 특수목적회로(11)(예를 들어, 전용 프레임생성회로도, 컨텐트-어스레스가능 메모리-CAM, 비트코드 파스(bit code parser) 등)및 도 1에 도시된 회로를 상호접속하는 와이어번들(3),(5),(12),(13),(14), (15),(16) 및 (17)을 포함한다.
광역 외부버스 인터페이스(7)은 외부환경에 대한 인터페이스를 제공한다. 상기 외부버스는 공지된 PCI(Peripheral Component Interconnect), AGP(Accelerated Graphics Port), USB(Universal Serial Bus), IEEE 1394(종래에, FireWire), 또는 화이버채널(Fiber Channel)과 같은 표준 컴퓨터 버스가 되거나; 또는 외부제어기-호스트와 본 발명의 다수의 사례와의 통신을 지원하도록 디자인된 전용버스와 같은 표준 컴퓨터버스가 된다.
내장 마이크로 프로세서(8)은 기초회로(1)의 기능을 제어하며, 어레이 프로세서(9) 또는 특수목적회로(11)를 목표로 하지 않고 수행한다. 마이크로프로세서(8)은 이하에서 보다 상세히 설명한다.
상기 어레이 프로세서(9)는 부동소수점 계산을 수행한다. 본 발명의 일실시예에서, 어레이 프로세서(9)는 1997.6.20자 미국특허출원 제 60/050,396호에 기술된 바와 같다. 어레이 프로세서(9)에 대해서는 이하에서 보다 상세히 설명한다.
상기 인접회로 통신포트(10)는 시스템내에서 기초회로(1)와 기초회로(1)의 다른 사례들과의 통신을 제공한다. 하나의 기초회로(1)만 사용되는 시스템 어플리케이션에서는, 이들 포트(10)가 필요하지 않다. 특정 실시예에서는 예외적으로, 상기 몇몇의 포트(10)는, 상기 기초회로(1)의 사례는 아니지만 그럼에도 상기 기초회로(1)의 사례를 통해 동시발생 상호작용이 큰 잇점을 갖는, 그외 성분들(도시되지 않음)과의 통신을 제공한다.
기초회로(1)의 복수개 사례를 갖는 어플리케이션은 때때로 기초회로(1)의 실사례들간의 고속 동시(concurrent)통신이 필요하다. 상기 통신포트(10)를 제공함으로써, 기초회로(1)는 광역 외부버스 인터페이스(7)의 잠재적 병목현상을 감소시킨다. 특정실시예에서, 통신포트(10)는 정확히 두 개의 사례간의 전용통신을 제공한다; 이에 따라 각 포트상에 사용된 프로토콜은 예를들어 외부버스 인터페이스(7)에서 사용된 버스프로토콜보다 상당히 간단할 수 있다.
일반적으로 사례간 상호통신에는 표준방법이 사용된다. 예를들면, 종래기술에 공지되어있는 메세징 프로토콜(messaging protocol)에 기초한 다양한 통신구조가 사용된다. 유사하게는, 몇가지의 "신호기(semaphore)" 시스템 또는 핸드쉐이킹(handshaking)시스템은 근접하지 않은 사례 상에서 동작하는 연속동시처리(Concurrent Sequential Processes:CSP)를 동기화 및 제어하는 기능을 제공하는데에 사용된다.
다양한 실시예에서의 특수목적회로(11)는 어플리케이션에 필수적인 아주 복잡하거나 또는 시간소비적인 기능과는 다르게 성능을 강화시킨다. 상기 특수목적회로의 예로는 특별히 제한되지는 않으나: Z-버퍼 동작, 3각형필, "Bitblts" 및 표면텍스춰링(texturing)을 가속하기 위한 프레임 생성기와; 프락탈 압축을 위한 패턴정합을 가속화하기 위한, 또는 압축토큰을 해시표(hash table)로 향하는 표준핸들로 변형시키기 위한 컨텐트 어드레서블 메모리(Content Addressable Memory,CAM)와; MPEG(Moving Pictures Experts Group) 및 선마이크로시스템의 상표인 Java 언어 같은 고압축 통신구조를 위한 커맨드 및 데이타 헤더를 복호화 하기 위한 비트 코드 파서가 있다.
DRMA 뱅크(4)는 하나이상의 RAM(Random Access Memory) 어레이 뱅크를 포함한다. 상기 메모리들은 본 발명의 실시예에서 경제적인 DRAM(Dynamic RAM)이지만, 다른 종류의 메모리를 또한 사용할 수 있다. 본 실시예에 있어서, 광역구성으로 편성된 전체메모리가 1에서 32MBs(megabytes)까지 제공되는 것이 바람직하다. 1024비트(1K 비트)까지의 폭을 고려한다. 64비트 이상의 폭을 "광역"이라한다. 상기 메모리의 바람직한 구성은 특별히 제한되지는 않으나 다음을 포함한다.
32K by 64,by 128,by 256, by 512 및 by 1K비트
64K by 64,by 128,by 256, by 512 및 by 1K비트
128K by 64,by128,by 256, by 512 및 by 1K비트
256K by 64,by128,by 256, by 512 및 by 1K비트 등.
상기 구성은 2의 거듭제곱치, 예컨대 72의 데이터 길이에 액세스를 제공하는 잇점이 있다. 그러한 구성은 MMIC(6)에 통합된 표준 로직으로 실행된 표준 로직으로 오차검출 및 정정을 지원한다.
상기 MMIC(6)는 몇가지의 기능을 지원하는 디지털 로직회로이다. 상기 DRAM 뱅크(4)가 DRAM 또는 DRAM과 같이 재생을 요구하는 경우, MMIC(6)는 자동적으로 DRAM 뱅크(4)를 재생한다. 상기 MMIC(6)은 광역 외부버스 인터페이스(7)와 내장 마이크로 프로세서(8)와, 어레이 프로세서(9)를 통하여 또한 가능하다면, 인접회로통신포트(10)의 사례 및 특수목적회로(11)를 통해 기입/판독을 수행하기 위해 DRAM 뱅크(4)로의 액세스를 허용 및 제어한다. 상기 MMIC(6)은 또한 광역 외부버스 인터페이스(7)와, 내장 마이크로 프로세서(8)와, 어레이 프로세서(9)를 통해, 또한 가능하다면, 인접회로통신포트(10)의 사례 및 특수목적회로(11)를 통해 외부로컬메모리 인터페이스(2)로의 액세스를 허용 및 제어한다.
본 발명의 실시예에 있어서, MMIC(6)는 유한상태장치(Finite State Machine,FSM)를 포함하는 것으로, 이는 외부로컬메모리에서 데이터 및/또는 명령에 대한 모듈(7),(8),(10),(11)의 요구를 수용함으로써 데이터 및 명령어 플로우(flow)를 제어하기 위함이다. 상기 MMIC(6)은 FSM에서 인코드된 결정알고리즘에 기초하여 상기를 만족시킨다. FSM의 데이터/명령어 플로우 제어는 공지된 바와 같다.
본 발명의 바람직한 실시예에 있어서, 개별 명령어 및 데이터 스트림(stream)은 각 내장 마이크로 프로세서(8), 어레이 프로세서(9) 및 특수목적회로(11)에 관련하여 유지된다. 상기 명령어 및 데이터 플로우는, 프로그램 초기화 및 조작시 광역 외부버스 인터페이스(7)로부터 로드(load)된 후, 외부로컬메모리상에 존재하게 된다. 상기 명령어 및 데이터 스트림은 일반적으로 공지된 컴파일러(compiler)기술에 따른 하나 이상의 컴파일러에 의해 생성되고, 공지된 방법에 따라 동격화를 위한 일정량의 핸드쉐이킹을 포함하기도 한다.
상기 MMIC(6)에 추가적으로, 내장 마이크로프로세서(8) 및 광역 외부버스 인터페이스(7)가 이 분야에서 공지된 방법으로 데이터/명령 플로우를 제어하는 방법을 제공한다. 예를들면, 내장 마이크로프로세서(8)가 광역 외부버스 인터페이스(7)상에서 FSM의 제어, 즉 오차제어, 초기화 및 버스에러 트랜잭션의 검출을 우선적으로 파악할 수 있다.
상기 외부로컬메모리 인터페이스(2)의 제어기는 하나 이상의 외부IC 메모리를 액세스하기 위한 외부타이밍 및 인터페이스 컨벤션(convention)을 지원한다. 예를들면, 제어기는 RAM에 기입/판독 액세스를, 비휘발성 메모리에 판독 액세스를 제공한다. 일부 또는 모든 외부메모리가 DRAM와 관련된 경우 (참조문54에서 6,7문 참조), 외부로컬메모리 인터페이스(2)는 자동메모리의 재생을 지원한다. 상기 외부로컬메모리 인터페이스(2)는 재생중에 액세스 요구 대기(queuing)단계를 제공하는 것이 가장 바람직하다. 상기 외부로컬메모리 인터페이스(2)는 또한 기록, 소거 및 기타 느린 조작이 예상되는 동안 액세스 요구 대기단계를 임의적으로 제공한다.
실시예에서 외부메모리 중 적어도 일부가 프로그램가능하고 비휘발성이면, 외부로컬메모리 인터페이스(2)는 특정용어의 기입 및 용어블록의 소거기능을 제공한다.(참조문 54의 10, 11, 12문 참조). 가장 바람직하게는, 상기 외부로컬메모리 인터페이스(2)가 공지된 바와 같이 비휘발성 메모리동작에 대한 소거-보류 등의 추가기능을 제공하며 이는 임의의 어플리케이션에서 유리한 장점이 된다.
또한, 도 1에서 구체화 되지는 않았으나, 또다른 실시예에서의 기초회로(1)는 아날로그/디지털(A/D)변환기, 디지털/아날로그(D/A)변환기, 전압제어 오실레이터(VCOs), 대응 와이어번들 등과 같은 아날로그 인터페이스장치를 하나 이상 포함한다.
이와는 별도의 실시예에서 또다른 2차지원 회로는 특별히 제한되지는 않으나, 공지의 내부클록승산기, 위상잠금루프(PLLs), 클록분배망, 셀프테스트 내장회로(BIST), 바운더리 스캔(boundary scan)경로 등을 포함한다.
상기 기초회로(1)는 프레임 렌더링 및 유사 태스크를 위한 고성능 계산엔진을 제공하기에 가장 적절한 디자인으로 설계되어 있다. 특히, 내장 마이크로 프로세서(8), 어레이 프로세서(9) 및 특수목적회로(11)에는 각각의 데이터와 명령을 동시처리 하기 위한 회로자원 데이터를 공급 및 명령의 부족에 대한 최소 실속(minimum stalling)기능을 부여한다. 상술한 바와 같이 또한 다음에 기술하는 바와 같이, 이 효율성은 전체설계 및 각 모듈의 설계에 의해 얻어질 수 있다. 예를들어, 와이어번들(13)은 상호작용을 위한 경로를 제공함으로써, 즉 광역 외부버스 인터페이스(7)와 주버스인터페이스 상의 주플로우 트랜잭션과 무관한 내장 마이크로프로세서(8) 간의 제어에 의해 MMIC(6) 및 와이어번들(12),(14),(15),(16),(17)상의 대역폭 오버헤드(overhead)가 감소된다. 상기 방식으로 주버스인터페이스의 대역폭이 유지된다.
바람직한 실시예에서, 기초회로(1)가 집적회로(IC)로 실행된다. 특히, 기초회로(1)는 설계에 따라 비교적 작은 IC 표면적으로 실행될 수 있다. 또한, 이 아키텍춰는 컴파일러가 계산장치 특히 마이크로프로세서와 어레이 프로세서를 효과적으로 목표화 할 수 있을 정도로 단순하고 융통성이 있다.
도 2는 본 발명의 실시예에 따른 도 1의 어레이 프로세서(9)의 블록도이다.
하기에 기술한 바와 같이, 상기 어레이 프로세서(9)는 종래의 벡터 프로세스 기술로는 효과적으로 병렬처리할 수 없었던 계산을 할 수 있다. 상기 계산은, 예를들어 몇개의 비교적 짧은 벡터가 필요한 계산을 포함한다. 즉, X=(az+b)/(cz+d),(여기서 a,b,c,d,z는 모두 복소수 부동소수점)과 같은 복소수 함수를 계산한다. 공지된 바와 같이, 상기 계산 및 유사 계산은 프레임 렌더링에서 공통이다. 함수계산을 위한 a0,b0,c0,d0,z0,및 X0는 실수부로 정의되며 반면에, a1,b1,c1,d1,z1 및 X1은 허수부로 정의한다. 부동소수점 나눗셈 회로에 입력하기전의 계산은 2회의 곱셈누산이다. 1차 계산은 다음과 같다:
A0=a0*z0-a1*z1+b0
A1=a0*z1+a1*z0+b1
B0=c0*z0-c1*zl+d0
B1=c0*z1+c1*z0+d1
2차 계산에서, B0와 B1의 결과를 피연산함수로써 사용하여 곱셈누산기(차후 상세 기술함)에 입력한다:
CO=A0*B0-A1*B1
C1=A1*BO+A0*B1
D=BO*BO+B1*B1
최종적으로, 나눗셈연산은 다음과 같이 실행된다.
X0=CO/D
X1=C1/D
도2의 실시예에 따르면 어레이 프로세서 인터페이스회로(APIC)(965)는 MMIC(6)로부터의 명령과 데이터의 요구기능 및 수신기능을 제어하며 MMIC(6)으로의 데이터 송신기능을 제어한다. 상기 실시예의 어레이 프로세서(9)는 다중데이터패스(path) 프로세스 유닛인 승산기/누산기(900)의 단일 집합체(970)를 구비한다. 상기 데이터패스 프로세스 유닛은 또한 데이터패스로서 참조된다. 상기 집합체(970)는 산술 프로세스 유닛(Arithmetic-Prpcessing Unit ; APU)를 형성한다.
상기 APU(970)내에서는, 내부 부동소수점 표시법이 사용된다. 상기 내부표시법은 외부에서 사용되는 부동소수점 표시법과 같거나 또는 상이하다. 일반적으로, APU(970)는 적어도 표준 외부표시법, 즉 표준 IEEE부동소수점 표시법이 적절하다. 바람직한 실시예에서, 사용된 부동소수점 표시법은 예외적인 경우를 포함하지 않는것으로, 즉 표준 IEEE부동소수점 표시법을 말한다. 단순화된 표시법을 사용함에 따라 내부효율이 보다 강화될 수 있는데, 즉 이는 회로 크기에 대해서이며, 복잡한 예외적인 경우는 해당되지 않는다. 상기 단순화된 표기법을 사용하는 것이 실용적인 이유는 예적인 경우가 프레임 렌더링 및 DSP 어플리케이션에서 일반적으로 크게 적절하지 않기 때문이다.
상기 APU(970)는 승산기 입력회로로 동작하는 분배 연산수함수회로(Shared Operand Circuit ; "이하, SOC"라 한다)를 포함한다. 임의로 SOC(910)는 RAM회로를 포함하는 것으로, RAM회로는 RAM이 피연산함수 캐시(cache) 또는 선입선출(FIFO) 큐로 사용될지의 여부를 결정하는 어드레스 제어부를 갖는다. 상기 SOC(910)내의 제1서브회로(도면에는 도시하지 않음)는 다수의 입력레지스터를 포함하는 것으로 이는 입력을 수용 및 와이어번들(902)의 상태를 캡처하기 위함이다. 상기 SOC(910)는 제1서브회로내의 레지스터에 결합된 제2서브회로를 포함한다(도면에는 도시하지 않음). 제2서브회로는 정수 산술로직유닛(Arithmetic Logic Unit ; ALU)를 포함한다(도시생략). 제2서브회로는 레지스터로부터의 와이어번들(902)의 상태의 선택된 영역상에서 고정점을 가산/감산한다. 제2서브회로는 또한 고정점 가산/감산의 결과 또는 입력레지스터의 선택된 영역의 고정점을 공지된 변환 알고리즘에 따라 내부 부동소수점 표기법으로 변환한다. 이에 따라, 제2서브회로는 부동소수점 변환유닛을 포함한다고 할 수 있다 (도시생략).
상기 APU(970)는 데이터패스(path) 프로세스 유닛으로써 둘 이상의 (900)를 포함한다. 상기 MAC는 이 기술분야에서 공지된 것이다. 각 MAC(900)는 SOC(910)로부터 공유 피연산함수를 수용하기 위해 와이어번들(906)과 결합된다. 각 MAC(900)은 또한 대응하는 로컬(local)데이터저장부(920)에 결합된다. 일반적으로, MAC(900)으로써 많은 로컬데이터 메모리회로(920)가 있다.
동작중에 각 MAC(900)는 숫자 형식으로 3개의 수 X,Y 및 Z를 수신하는데, 여기서 X는 와이어번들(906)을 매개로 수신한 공유 피연산함수이며, X와 Z는 와이어번들(909)을 거쳐서 로컬데이터 저장부(920)로부터 수신한 것이다.
각 MAC(900)은 두 개 이상의 레지스터를, 바람직하게는 적어도 4개를 소유한다. 각 MAC(900)는 각 클록주기 내에서 승산 및 가산/감산을 수행할 수 있으므로, (존재가능한)전류 또는 선행 클록주기에서 수신한 값 X,Y,Z로부터 XY+Z 또는 XY-Z를 생성하게 된다. 각 MAC(900)은 그 하나의 레지스터에 생성된 결과를 조건적으로 저장한다.
또한 상기 APU(970)는 분배출력 및 피드백 인터페이스(Shared Output Feedback Interface, SOFI)(940)를 포함한다. 상기 SOFI(940)는 부동소수점 변환유닛을 포함하는 것으로(도시생략), 이는 와이어번들(907)의 내부 숫자구성을 필수 부동소수점(즉 IEEE 부동소수점) 또는 외부적으로 요구된 고정점표시법으로 변환하기 위해 표준기술을 통해 사용된다. 물론, 실시예에서 내부 부동소수점 표시는 외부표시와 동일하고, 특정 변환은 불필요하다. 상기 SOFI(940)는 광역버스(901)상에서의 상기 변환 결과를 APIC(965)로 전송하는 것을 제어한다. 특정 실시예에서, 또한 SOFI(940)는 전송전에 필요에 따라 상기 결과를 임시로 저장한다.
상기 데이터메모리(920)는 액세스를 위한 어드레스를 제공하기 위해 대응하는 어드레스발생기(즉 하기에 기술되는 모듈 950에서)를 구비한다. Y와 Z 피연산함수에 대해 사용된 어드레스는 동일하거나 또는 상이하다. 다른 어드레스의 생성을 지원하므로써 FFT와 같은 다수의 어플리케이션 요구에 대한 잇점을 제공한다.
상기 APU(970)는 전체제어, 동기회로 및 명령 저장유닛(overall Control Synchronization circuitry and Instruction Store unit, CSIS)(950)를 포함한다. 상기 CSIS(950)는 APU(970)의 각종 모듈을 제어하고 동기화하며, 명령을 저장한다. 도 2와 상기에 나타난 바와 같이 APU(970)의 주어진 구조를 참조하면, 상기 CSIS(950)는 이들 태스크(task)를 수행하기 위한 적절한 구조를 갖는다. 특히, CSIS(951)는 상태레지스터, 프로그램카운터, 둘 이상의 루프카운터, 각 MAC(900)에 결합된 각 Y 및 Z 피연산함수 로컬메모리(920)에 대한 적어도 하나의 인덱스레지스터, 명령레지스터, 명령저장부를 포함하며(도 2에 도시되지 않음), 상기 모든 장치는 공지되어 있다. 명령은 각 입력, 출력분배, MAC(900)에 대해 다른 영역을 소유한다.
상기 상태레지스터는 임의로 적어도 다수의 와이어상태를 보호한다. 상기 와이어상태는 적어도 루프카운터의 상태조건 비트, 각 SOC 정수(ALU)로부터의 제로검출신호, 각 APU(970)의 SOFI(940)의 부동소수점 변환유닛의 조건비트를 포함한다.
상기 CSIS는 명령을 요구하고(MMIC(6) 및 APIC(965)를 통해), 상기 명령을 명령 저장부에 버퍼(buffer)시키도록 설정된다.
상기 와이어번들(903)은 로컬데이터저장부(920)에 입력을 제공한다. 와이어번들(903)은 적어도 다음을 포함하는 것으로: 각 로컬데이터메모리(920)의 요소메모리에 대한 어드레스와, 기록/판독 제어 및 각 로컬데이터메모리(920)의 페이지삽입제어신호이다.
각 APU(970)는 두 개의 벡터상에서 동작하는 것으로, "벡터 가산벡터" 연산, 또는 하나의 벡터 및 스칼라상에서와 같이, "벡터 성분의 스칼라 곱셈" 연산에서와 같다. 상기 APU(970)는 대단히 융통성이 있다. 그 이유는 입력 피연산함수가 다수의 MAC간에 공유되기 때문이며 또한 로컬메모리회로(920) 또는 그외 MAC레지스터의 상태가 다른 두 개의 피연산함수를 제공하기 때문이다.
본 발명에 따른 어레이 프로세서(9)는 벡터프로세서를 사용하여 효율적으로 수행할수 없었던 계산형식을 가능하게 한다. 예를들어, 몇가지의 불연속파 변환 필터(Discrete Wavelet Transform Filter, DWTF)의 계산에서, 몇개의 벡터의 서브성분 간에 여러개의 다른 스칼라를 공유할 필요가 있다. 일반적으로 벡터프로세서는 공유해야 할 스칼라수에 해당하는, 상기 태스크의 수행을 위한, 다수회의 주기를 필요로 한다. 상기 DWTF에서, 모든 짝수-입력은 모든 필터 출력에 영향을 주는 반면에 홀수-입력은 필터출력의 절반에만 영향을 미친다. 4개의 입력을 상기 방법으로 처리하면 홀수-입력을 벡터 프로세서 접근방식을 통해 동시처리할 수 없는 한계성을 피할 수 없다. 그러나, 어레이 프로세서(9)에서는 상기 문제점이 최소화 되는데, 그이유는 예컨대 두개 (이상)의 홀수-입력 스칼라 요소를 한 벡터의 여러 다른 성분에 보낼 수 있기 때문이다. 기수 2FFT는 한 벡터의 여러 다른 성분들의 합 및 그 차이 모두를 나타낸다. 본 발명은 이들 값을 벡터의 각 성분에 대해 병렬식으로 나타내기 때문에, 벡터프로세서에 필요한 한쌍의 요소당 2개 주기가 소요되는 것이 아니라 하나의 주기에서 결과를 얻을 수 있다.
도 3은 본 발명의 다른 실시예에 따른 도 1의 어레이 프로세서(9)의 블록도이다. 도 3에 도시된 바와 같이 어레이 프로세서(9)는 두개의 APU(970)를 갖는다. 상기 구성은 부동소수점 계산이 특히 다른 모듈 즉, 내장 마이크로프로세서에 의해 수행되는 다른 계산과 관련하여 그 양이 방대할 것으로 예상되는 어플리케이션에서 동시성(added concurency)을 추가로 제공한다. 또다른 실시예에서, 기초회로(1)의 APU(970) 수를 두 개 이상으로 증가시킬 수 있다.
바람직한 실시예에 따른 도3의 어레이 프로세서(9)는 (도 1참조) 이 프로세서 외에 광역 외부버스 인터페이스(7), 외부로컬메모리 인터페이스(2), 내장 마이크로프로세서(8) 및 필요시 인접회로 통신포트(10)를 포함하는 반면에 추가의 특수 목적 회로(전용회로)(11)나 DRAM뱅크(4)는 포함하지 않고, 따라서 MMIC(6)의 메모리 제어기가 생략된 마스터 인터페이스 및 제어부를 포함하도록 유선화된다.
도 4는 도 1의 내장 마이크로프로세서(8)의 블록도이다. 내장 마이크로 프로세서는 공지된 바와 같다. 도 4에서, 내장 마이크로 프로세서(8)은 마이크로 프로세서(800)를 포함한다. 상기 마이크로 프로세서(800)는 Java 또는 MPEG-4엔진, PFSM, RISC엔진, 바람직하게는 32비트 데이터패스와 같이 설정된 16비트 명령, ARM7TDMI(참조문 56 참조) 또는 MIPS(16)(참조문 55 참조)와 같은 바이코드장치로 실행할 수 있다.
또한 상기 내장 마이크로 프로세서(8)은 최소 64페이지를 삽입한 2-4웨이 방식의 임의 캐쉬(810) 및 적어도 1K 워드 메모리의 총메모리를 포함한다. 전형적으로, 상기 임의캐쉬(810)는 32비트 워드로 구성된다. 상기 임의캐쉬(810)는 명령 및 데이터를 위한 두개의 캐쉬성분을 포함한다.
상기 내장마이크로 프로세서(8)은 또한 RAM(820) 또는 ROM(830)과 같은 추가의 임의로컬 저장부를 포함하는데 이는 공지되어 있다. 상기 ROM(830)은 마이크로 프로세서 서브시스템(8) 및/또는 기초회로(1)를 위한 초기화정보를 포함한다.
바람직한 실시예에서, 마이크로프로세서(800)는 두가지 형태의 명령군을 제공하는데: 하나는 길이가 16비트이고 컴파일러 기술로 생성된 코드에 의해 사용된 가장 일반적인 명령을 포함하며; 다른 하나는 길이가 32비트이다. 상기 마이크로 프로세서는 공지된 기술이다. 상기 마이크로 프로세서의 잇점은 생성된 프로그램코드의 대부분이 16비트 구조인 것이다. 각 마이크로 프로세서(800)에서, 32비트 또는 그 이상의 각 명령 펫치(fetch)는 추가 명령메모리 액세스에 대한 자원없이 다음의 1 내지 3의 명령을 제공할 수 있다.
상술된 기초회로(1) 및 어레이 프로세서(9)는 다수의 우수한 장점을 갖는 회로의 종류 또는 구조를 나타낸다.
상기 장점은 기초회로(1)가 계산집중된 특정 알고리즘에서 매우 높은 효율을 갖는 것으로 이는 마이크로 프로세서 또는 종래의 DSP를 사용하여 비교가능한 크기의 인쇄회로판 상에서의 상기 알고리즘 실행에 필적하는 환경에서 이루어진다.
일반적으로, 기초회로(1)는 같은 결과를 달성할 수 있는 다른 장치에 필적하는 회로크기보다 작은 것이 필요하다. 그러므로 기초회로(1)는 같은 결과를 달성하는데 있어서, 다른 메카니즘에 비해 저렴하다. 어레이 프로세서(9)의 작은 크기의 회로에 대한 요건 중 한가지 변수는 분할기능을 직접 실행하지 않는 것이며, 이는 관심의 대상인 다수의 프레임렌더링이나 DSP 알고리즘에서 실질적으로 범용성이 적다. 상기 어레이 프로세서(9)의 실시예에 있어서, MAC는 단일정밀 산술만을 지원하도록 구성되는데, 일반적으로 대용량 클래스의 프레임렌더링 및 DSP어플리케이션에 충분하므로, 어레이 프로세서(9)의 회로크기의 소요가 실질적으로 더욱 감소된다.
상기 어레이 프로세서(9)의 구조는 부동소수점 변환(즉, SOC(910)에서)에 의한 부동소수점 가산/감산, 승산 및 누적(MAC(900)에서)을 행하는 "전면단말"을 제공한다. 상기 "전면단말"은 대칭 혹은 비대칭 FIR에 수반된 예비동작을 수행할 수 있으며, 저기수FFT 계산을 수행할 수 있다. 상기 동작은 DSP어플리케이션에 대단히 유용한 것으로 데이터가 샘플링회로에서 고정점 형태로 수신되는데 상기 샘플링회로는 일반적으로 정확도가 8 내지 16비트인 고정점을 생성한다.
상기 어레이 프로세서(9)의 또다른 장점은 반올림오차의 누적에 대한 일반적인 현상에 관한 것이다. DSP알고리즘이 산수결과의 정밀도를 유지하는 것은 대단히 중요하다. 효율을 위해, 종래의 많은 DSP프로세서가 고정점 산술을 수행하는 알고리즘을 사용한다. 상기 고정점 계산은 정확도를 유지하기 위해 반올림 오차를 관리하는데 있어서 많은 주의가 필요하다. 반대로, 어레이 프로세서(9)는 부동소수점계산을 효율적으로 수행할 수 있다. 부동소수점 계산은 보다 나은 동적범위를 제공하는 장점이 있으며, 결과가 동일한 정확도를 갖도록 하는 프로그램밍이 매우 용이하다.
어레이 프로세서(9)의 특정한 구현예의 기능성을 시험하는 것을 대상으로 한다. 시험예에서 어레이 프로세서(9)는 MMIC(6)으로부터 적어도 128비트를 APIC(965)에서 수신한다(도 3에 따라). 각 APU(970)의 SOC(910)는 동시에 적어도 64비트를 수신한다(바람직하게는 128비트). 상기 SOC(910)는 수신한 데이터를 고정 8비트 또는 16비트의 정수영역으로 분해할 수 있다. 상기 SOC(910)는 동시에 4까지의 집합체에서 상기 영역을 가산하거나 감산할 수 있다. 이 시험예의 구성은 다른 계산 수행동안 기수-4FFT의 계산을 매우 높은 성능으로 달성하는 것이 가능하다.
시험예에서 어레이 프로세서(9)의 서브시스템(9)은 내부클럭(clock)율이 200MHz의 이다. 다음의 동작은 모든 클럭 주기에서 수행이 가능한 것으로 다음은: 4개의 단일정밀 부동소수점의 승산과 4개의 단일정밀부동소수점가산과; 정수/고정점 승산/감산, 정수/고정점을 부동소수점 비율변환과; 고정점 스케일된 변환의 부동소수점이다. 실시예에서, 로컬데이터 저장부(920)는 2가지방식으로 인터리브되는데 이는 대응하는 MAC(900)의 Y와 Z를 취하는 동안 MMIC(6)를 통해 액세스에서 수신된 데이터로부터 로딩(loading)을 동시에 지원하기 위함이다.
실시예에서, 통신구조는 광역 외부버스 인터페이스(7), MMIC(6), 내장 마이크로 프로세서(8), 제어기, 어레이 프로세서(9)의 AIPC(965)을 실행되고, 표준기술을 사용하여, 어레이 프로세서(9)가 예상되는 프레임 렌더링 및 DSP어플리케이션 시간의 약 75%에서 전체적으로 활성상태를 유지하도록 허용한다. 상기 예상수행은 기초회로(1) 및 그 어레이 프로세서(9)에 대한 데이터의 로컬성를 합리적으로 기초한 것이다.
시험예의 결과로서, 주어진 상기한 가정은 많은 어레이 프로세서와 특정 프레임렌더링 알고리즘을 위한 1에서 3 기가플롭(초당 10억 부동소수점동작)가 될 것이다.
기초회로(1)가 176핀 TQFP(Thin Quad Flat Pack)과 같은 표준 IC 패키지에서 실행된 경우, 각 IC는 대략 1평방 인치의 인쇄회로기판의 공간을 취할 것이다. 이에 따라, 본 발명의 실시예는 32개까지의 이들 IC를 확보할 수 있는 PCI버스카드로써 실행가능하므로, 저비용으로 실리콘 그래픽스 워크스테이션(참조문 1의 Toy Story 참조)의 성능을 16배 높게 제공할 수 있게된다.
본 발명은 특히 Java(참조문 64, 65참조) 및 MPEG(참조문 57∼63참조)와 같은 상호작용 오디오-비디오 언어를 포함하는 어플리케이션의 용도로 적절하다. MPGA-4표준작용은 폭넓고 다양한 알고리즘이 수요자를 목표로 하는 하드웨어상에서 수행할 수 있도록 하는 환경을 개발시킨다. Java는 그 정의적인 면에서 독립적인 장치이며 대단히 복잡하고 계산적으로 고가의 알고리즘을 생성 및 행사할 수 있도록 기호적 가능성을 소유한다. 본 발명은 망 어플리케이션의 고성능지원을 제공한다.
실시예에 대한 보충 설명본 발명의 몇몇 구체예는 다음을 포함하는 집적회로와 같은 형식을 대략적으로 양식화하여 보충기술한다:
하나의 대용량 메모리 광역인터페이스회로는 대용량 메모리가 집적회로내에 위치하거나 또는 위치하지 않는 것으로, 대용량 메모리 광역인터페이스회로가 와이어번들(D0)을 포함하는 버스(B0)에 의해 대용량 메모리와 접속되며:
상기 대용량 메모리 광역인터페이스회로 내의 양방향 송수신기는 상기 접속버스(B0)의 와이어번들(D0)에 접속되어 대용량 메모리 광역인터페이스회로 및 대용량 메모리간의 데이터를 전송하며;하나 이상의 데이터프로세서회로는;프로그램가능한 유한형 장치(PFSM) 또는 마이크로 프로세서; 및데이터프로세서회로가 버스(B1)에 의해 대용량 메모리 광역인터페이스회로에 접속되는 대용량 메모리 광역인터페이스의 데이터프로세서 인터페이스회로를 포함하고; 여기서 상기 양측 회로는;접속버스(B1)의 와이어번들 성분(D1)과 접속하는 양방향 송수신기; 및로컬메모리 회로 내에 접속버스(B1)의 접속요소인 와이어번들의 가정된 및/또는 감지된 상태를 저장할 수 있는 능력을 제공하기 위한 것으로서, 접속버스(B1)의 접속요소인 와이어번들 성분(D1)상에서 상기 상태를 더이상 가정 및 이에 따른 감지할 수 없는 경우 그 후의 상태정보를 보유하기 위한 로컬메모리 회로를 포함하고, 여기서;상기 버스(B1)의 와이어번들 성분(D1)의 신호상태는 시간내에 전후로 변환된 일부 또는 모든 신호상태(D0) 즉, 이에 의해 데이터가 상기 버스(B0)의 와이어번들(D0)에 대해 혹은 이로부터 (다른 곳으로) 전송되는 메카니즘을 포함하고;대용량 메모리 광역인터페이스회로에 대한 어레이 프로세서 인터페이스회로, 공유 피연산함수 입력회로, 다수의 MAC, 공유 승산기 출력회로 및 명령 디코더회로를 각각 포함하는 하나 이상의 어레이 프로세서를 구비하고, 여기서;대용량 메모리 광역인터페이스회로에 대한 어레이 프로세서 인터페이스 회로의 접속은 버스(B2)로 구성되고, 상기 인터페이스회로 및 대용량 메모리 광역인터페이스회로는;접속버스(B2)의 와이어번들 성분(D2)과 접속하는 양방향 송수신기; 및로컬메모리 회로 내에 접속버스(B2)의 접속요소인 와이어번들 성분(D2)의 가정된 및/또는 감지된 상태를 저장할 수 있는 능력을 제공하기 위한 것으로서, 접속버스(B2)의 접속요소인 와이어번들 성분(D2)상에서 상기 상태를 더이상 가정 및 이에 따른 감지할 수 없는 경우 그 후의 상태정보를 보유하기 위한 로컬메모리 회로를 포함하고, 여기서;상기 버스(B2)의 와이어번들 성분(D2)의 신호상태는 시간내에 전후로 변환된 일부 또는 모든 신호상태(D0) 즉, 이에 따라 데이터가 상기 버스(B0)의 와이어번들(D0)에 대해 혹은 이로부터 (다른 곳으로) 전송되는 메카니즘을 포함하고;상기 공유 피연산함수 입력회로는 버스(B3)에 의해 어레이 프로세서 인터페이스회로에 접속되며 또한 버스(B4)에 의해 공유 승산기 출력회로 및 각 MAC와 결합된 로컬 데이터 메모리회로에 접속되고;상시 공유 피연산함수 입력회로는 와이어번들 상태정보의 일부 또는 전체를 수신하며;각 승산기-누적기는 승산 및 가산 메카니즘과 두개의 독립적인 어드레스 가능한 랜덤(random)액세스 메모리를 포함하고, 여기서;상기 승산 및 가산 메카니즘은 하나의 승산기 입력을 공유하고, 또한 읽기전용 메모리이거나 아닌 두개의 독립적인 어드레스 가능한 랜덤액세스 메모리로부터 또다른 두개의 입력이 제공되고;각 랜덤액세스 메모리 어드레스 및 제어 와이어번들은 제어 와이어번들(Control Wire Bundle, CWB)의 요소이며;상기 승산 및 가산 메카니즘은 승산기-누적기 및 승산기 출력회로가 함께 공유하는 와이어번들(M0)에 대한 하나의 출력 드라이버를 구비하고;각 출력 드라이버는 제어 와이어번들(CWB)의 와이어번들 성분에 의해 제어되고;상기 승산기 출력회로는 상기 M0 와이어번들 인터페이스, 승산기 출력 메모리회로 및 승산기 출력 인터페이스를 포함하고, 여기서;상기 M0 와이어번들 인터페이스는 M0 와이어번들에 접속된 입력회로를 포함하며;상기 승산기 출력회로는 메모리 회로에 저장될 데이터를 제공하는 방식으로, M0 와이어번들 인터페이스회로의 입력회로에 접속되고; 및상기 메모리 출력회로는 승산기 출력 인터페이스에 접속되고 이에 의해 메모리회로의 상태를 메모리출력 인터페이스로부터 와이어번들 성분 혹은 전체 버스(B3) 상으로 출력할 수 있다.구체예에서, 상기 버스(BO)는 와이어번들 성분(DOA)과 (DOC)를 추가적으로 포함하며;대용량 메모리 광역인터페이스회로 내의 출력드라이버가 접속버스(BO)의 와이어번들 성분(DOA)과 접속하여 대용량 메모리데이터 액세스에 필요한 어드레스신호를 제공하며;대용량 메모리 광역인터페이스회로 내의 출력드라이버가 접속버스(BO)의 와이어번들 성분(D0C)과 접속하여 대용량 메모리데이터 액세스에 필요한 어드레스신호를 제공한다.또다른 구체예에서, 상기 버스(BO)는 와이어번들 성분(D0F)을 더 포함하며;대용량 메모리 광역인터페이스회로 내의 입력드라이버는 접속버스(BO)의 와이어번들 성분(D0F)과 접속하여 대용량 메모리데이터 액세스의 상태를 전달하는데 사용되는 피드백(Feedback)신호를 제공한다.한 구체예에서, 외부회로에 대한 적어도 하나의 통신인터페이스는 요청된 회로가 버스마스터(bus master) 역할을 하는 버스에 대한 통신인터페이스를 제공한다.또다른 구체예에서, 외부회로에 대한 적어도 하나의 통신인터페이스는 요청된 회로가 버스슬레이브(bus slave) 역할을 하는 버스에 대한 통신인터페이스를 제공한다.도 5 내지 도 12는, 본 발명을 이용한 비디오 프레임 발생기 태스크 및 다른 일반 평형 산출에 대한 근접 선형-고속화를 제공하는 도면이다. 집적도가 커짐에 따라, 외부메모리 인터페이스 통신패스를 1개의 공유 외부메모리 인터페이스로 집중시키는 중요한 잇점이 있다. 각 외부 메모리 인터페이스는 각 IC의 다수 핀을 추가함으로써 생산비용 측면에서 큰 경제적 부담을 준다. 다이(die)크기는 물론 열분해 및 전력소비에 점점 더 영향을 미친다. 상기 방식으로 외부메모리 인터페이스를 분배하는 것은 제조비용에 관한 통신 대역폭을 경제적으로 최적화시키는 것이다.도 5는, 독립 외부메모리 인터페이스와 함께 도1의 기초회로의 2개의 사례를 갖는 집적회로의 블록도이다.도 6은 하나의 외부메모리 인터페이스를 공유하는 도1의 기초회로의 2개의 사례를 갖는 집적회로의 블록도이다.도 7은 독립 외부메모리 인터페이스와 함께 도1의 기초회로의 4개의 사례를 갖는 집적회로의 블록도이다.도 8은 하나의 외부메모리 인터페이스를 공유하는 도1의 기초회로의 4개의 사례를 갖는 집적회로의 블록도이다.도 9는 2개의 외부메모리 인터페이스를 공유하는 도1의 기초회로의 4개의 사례를 갖는 집적회로의 블록도이다.도 10은 2개의 공유 외부메모리 인터페이스 및 완전히 내부접속된 메시지포트(PORT)를 갖는 도1의 기초회로의 4개의 사례를 갖는 집적회로의 블록도이다.도 11은 4개의 공유 메모리 인터페이스와 함께 도1의 기초회로의 16개의 사례를 갖는 집적회로의 블록도이다.도 12는 2개의 공유 메모리 인터페이스와 함께 도1의 기초회로의 16개의 사례를 갖는 집적회로의 블록도이다.도 13은 대응되는 메모리모듈과 함께 도1의 기초회로의 사례를 통합한 프린트 회로기판의 블록도이다.도 14는 대응되는 메모리모듈과 함께 도1의 기초회로의 사례를 통합한 또다른 프린트 회로기판의 블록도이다.
본 발명은 비디오처리와 동화제작 또한 디지털신호와 화상처리에 사용하기 위한 프레임의 전체 또는 일부를 생성하는데 필요한 메모리, 로직, 산술적 및 제어구성회로(circuitry)를 포함하는 회로를 제공한다. 상기 하나 이상의 회로를 집적회로 상에 제공한다.
비디오 혹은 화상 프레임 생성 시스템은 동화(애니메이션)용 프레임 제작, 특히 의료화상이나 비디오게임 및 시뮬레이션 환경에서의 가상현실 및 실시간 장면 생성 등의 3차원 또는 기타 고성능 어플리케이션에서 탁월한 성능을 제공하기 위한 것으로서, 상기한 하나 이상의 집적회로로 구성되며 필요하면 별도의 메모리 구성 회로를 더 포함할 수 있다
이 회로는 MPEG4가 제안한 것 같은 고속객체지향 그래픽 관련 흐름을 처리하는데 사용되고 또한 최적화된 산수능력의 단일칩 JAVA 엔진 역할을 한다
참 조 문

Claims (5)

  1. 연산과정에서 메모리와 함께 동작하는 집적회로에 있어서,
    상기 집적회로는,
    상기 메모리에 대한 액세스를 제어하도록 구성되고, 내부 인터페이스를 위한 플로우를 제어하도록 구성되는 제 1 인터페이스 회로;
    상기 집적회로를 제어하도록 구성되고, 상기 제 1 인터페이스 회로의 정보를 수신하기 위해 상기 인터페이스 회로와 결합되는 내장 마이크로 프로세서; 및
    상기 제 1 인터페이스 회로의 정보를 수신하기 위해 상기 제 1 인터페이스 회로와 결합되며, 둘 이상의 스칼라 요소를 공유하여 연산하는 공유 피연산 함수를 수용하여 산술 계산 수행하는 최소한 하나 이상의 어레이 프로세서를 포함하되,
    상기 어레이 프로세서는,
    상기 제 1 인터페이스 회로에서 전송되는 명령과 데이터의 요구 및 수신을 제어하고, 상기 제 1 인터페이스 회로로 데이터 송신을 제어하는 제 2 인터페이스 회로 및
    상기 제 2 인터페이스 회로와 결합되며, 산술 프로세스 유닛으로써 복수의 승산기/누산기 및 적어도 두 개의 복수의 승산기/누산기의 공유 피연산수를 제공하여, 상기 둘 이상의 스칼라 요소를 공유하여 연산하는 공유 피연산 함수를 수용하여 부동소수점 변환에 의한 부동소수점 가산/감산, 승산 및 누적을 수행하는 공유 피연산수 회로를 구비함을 특징으로 하는 집적회로.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제 1 인터페이스 회로는 광역 액세스를 제공하기 위한 와이어 번들을 포함하는 것을 특징으로 하는 집적회로.
  4. 제 3 항에 있어서,
    상기 와이어번들이 적어도 256개의 와이어로 구성되는 것을 특징으로 하는 집적회로.
  5. 제 1 항에 있어서,
    광역 외부버스 인터페이스가 더 구비되고, 와이어번들이 상기 광역 외부버스 인터페이스와 주버스 인터페이스 상의 주플로우 트랜잭션과 무관한 상기 내장 마이크로 프로세서 간의 상호 작용을 위한 경로를 제공하도록 구성됨을 특징으로 하는 집적회로.
KR10-1999-7005593A 1996-12-19 1997-12-18 비디오 프레임 렌더링 엔진 KR100366689B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US3347696P 1996-12-19 1996-12-19
US60/033,476 1996-12-19
US5039697P 1997-06-20 1997-06-20
US60/050,396 1997-06-20

Publications (2)

Publication Number Publication Date
KR20000062253A KR20000062253A (ko) 2000-10-25
KR100366689B1 true KR100366689B1 (ko) 2003-01-06

Family

ID=26709753

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7005593A KR100366689B1 (ko) 1996-12-19 1997-12-18 비디오 프레임 렌더링 엔진

Country Status (6)

Country Link
US (1) US6854003B2 (ko)
JP (1) JP4235987B2 (ko)
KR (1) KR100366689B1 (ko)
DE (2) DE19782200B4 (ko)
GB (1) GB2335127B (ko)
WO (1) WO1998028695A1 (ko)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6646639B1 (en) 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
DE69813912T2 (de) * 1998-10-26 2004-05-06 Stmicroelectronics Asia Pacific Pte Ltd. Digitaler audiokodierer mit verschiedenen genauigkeiten
US6859872B1 (en) 1999-05-12 2005-02-22 Analog Devices, Inc. Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US7111155B1 (en) 1999-05-12 2006-09-19 Analog Devices, Inc. Digital signal processor computation core with input operand selection from operand bus for dual operations
US7107302B1 (en) 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US6820189B1 (en) 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6573900B1 (en) 1999-12-06 2003-06-03 Nvidia Corporation Method, apparatus and article of manufacture for a sequencer in a transform/lighting module capable of processing multiple independent execution threads
US6417851B1 (en) 1999-12-06 2002-07-09 Nvidia Corporation Method and apparatus for lighting module in a graphics processor
US6452595B1 (en) 1999-12-06 2002-09-17 Nvidia Corporation Integrated graphics processing unit with antialiasing
US6765575B1 (en) 1999-12-06 2004-07-20 Nvidia Corporation Clip-less rasterization using line equation-based traversal
US7209140B1 (en) 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US6650325B1 (en) 1999-12-06 2003-11-18 Nvidia Corporation Method, apparatus and article of manufacture for boustrophedonic rasterization
US6504542B1 (en) 1999-12-06 2003-01-07 Nvidia Corporation Method, apparatus and article of manufacture for area rasterization using sense points
US6353439B1 (en) 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline
US6198488B1 (en) 1999-12-06 2001-03-06 Nvidia Transform, lighting and rasterization system embodied on a single semiconductor platform
US6515671B1 (en) 1999-12-06 2003-02-04 Nvidia Corporation Method, apparatus and article of manufacture for a vertex attribute buffer in a graphics processor
US6844880B1 (en) 1999-12-06 2005-01-18 Nvidia Corporation System, method and computer program product for an improved programmable vertex processing model with instruction set
US6870540B1 (en) 1999-12-06 2005-03-22 Nvidia Corporation System, method and computer program product for a programmable pixel processing model with instruction set
US6593923B1 (en) 2000-05-31 2003-07-15 Nvidia Corporation System, method and article of manufacture for shadow mapping
US6806886B1 (en) 2000-05-31 2004-10-19 Nvidia Corporation System, method and article of manufacture for converting color data into floating point numbers in a computer graphics pipeline
US20020008704A1 (en) * 2000-07-21 2002-01-24 Sheasby Michael C. Interactive behavioral authoring of deterministic animation
US8930844B2 (en) * 2000-08-22 2015-01-06 Bruce Carlin Network repository of digitalized 3D object models, and networked generation of photorealistic images based upon these models
US6597356B1 (en) 2000-08-31 2003-07-22 Nvidia Corporation Integrated tessellator in a graphics processing unit
US7162716B2 (en) 2001-06-08 2007-01-09 Nvidia Corporation Software emulator for optimizing application-programmable vertex processing
US6697064B1 (en) 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
WO2002101497A2 (en) 2001-06-08 2002-12-19 Nvidia Corporation System, method and computer program product for programmable fragment processing in a graphics pipeline
US7456838B1 (en) 2001-06-08 2008-11-25 Nvidia Corporation System and method for converting a vertex program to a binary format capable of being executed by a hardware graphics pipeline
US7006101B1 (en) 2001-06-08 2006-02-28 Nvidia Corporation Graphics API with branching capabilities
JP4945053B2 (ja) 2003-03-18 2012-06-06 ルネサスエレクトロニクス株式会社 半導体装置、バスインターフェース装置、およびコンピュータシステム
US7353362B2 (en) 2003-07-25 2008-04-01 International Business Machines Corporation Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus
US7412588B2 (en) 2003-07-25 2008-08-12 International Business Machines Corporation Network processor system on chip with bridge coupling protocol converting multiprocessor macro core local bus to peripheral interfaces coupled system bus
KR100648293B1 (ko) 2005-08-09 2006-11-23 삼성전자주식회사 그래픽 시스템 및 그것의 그래픽 처리 방법
KR100835173B1 (ko) * 2006-09-20 2008-06-05 한국전자통신연구원 곱셈 누적 연산을 위한 디지털 신호처리 장치 및 방법
DE602007008845D1 (de) * 2007-04-20 2010-10-14 Nethawk Oyj Verfahren, Vorrichtung, Testgerät und Programm zum Testen von Multimediakommunikationsgeräten und -software
US8515052B2 (en) * 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US7724165B2 (en) * 2008-07-17 2010-05-25 Faraday Technology Corp. Audio codec and built-in self test method for the same
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
CN103937737B (zh) * 2008-11-12 2023-05-23 因瑞金公司 分离的肾细胞及其用途
KR101511273B1 (ko) 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
JP5380392B2 (ja) * 2010-08-04 2014-01-08 ルネサスエレクトロニクス株式会社 半導体装置、バスインターフェース装置、およびコンピュータシステム
JP5324676B2 (ja) * 2012-02-17 2013-10-23 ルネサスエレクトロニクス株式会社 プロセッサ、バスインターフェース装置、およびコンピュータシステム
US9411726B2 (en) * 2014-09-30 2016-08-09 Samsung Electronics Co., Ltd. Low power computation architecture

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860191A (en) * 1985-08-08 1989-08-22 Nec Corporation Coprocessor with dataflow circuitry controlling sequencing to execution unit of data received in tokens from master processor

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3621214A (en) 1968-11-13 1971-11-16 Gordon W Romney Electronically generated perspective images
US3833889A (en) 1973-03-08 1974-09-03 Control Data Corp Multi-mode data processing system
US4128880A (en) 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
JPS5725069A (en) 1980-07-21 1982-02-09 Hitachi Ltd Vector data processing equipment
DE3267489D1 (en) 1982-02-18 1986-01-02 Itt Ind Gmbh Deutsche Digital parallel calculating circuit for positive and negative binary numbers
US4590465A (en) 1982-02-18 1986-05-20 Henry Fuchs Graphics display system using logic-enhanced pixel memory cells
US4589067A (en) 1983-05-27 1986-05-13 Analogic Corporation Full floating point vector processor with dynamically configurable multifunction pipelined ALU
US4888682A (en) * 1983-09-09 1989-12-19 International Business Machines Corp. Parallel vector processor using multiple dedicated processors and vector registers divided into smaller registers
US4646075A (en) 1983-11-03 1987-02-24 Robert Bosch Corporation System and method for a data processing pipeline
US4594651A (en) * 1984-01-18 1986-06-10 General Electric Company Concurrent processor for control
US4799144A (en) * 1984-10-12 1989-01-17 Alcatel Usa, Corp. Multi-function communication board for expanding the versatility of a computer
GB2181929B (en) 1985-10-21 1989-09-20 Sony Corp Methods of and apparatus for video signal processing
GB8719395D0 (en) * 1987-08-17 1988-04-27 Gen Electric Co Plc Radar systems
GB8728836D0 (en) 1987-12-10 1988-01-27 Quantel Ltd Electronic image processing
US5187796A (en) * 1988-03-29 1993-02-16 Computer Motion, Inc. Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units
US4949280A (en) 1988-05-10 1990-08-14 Battelle Memorial Institute Parallel processor-based raster graphics system architecture
US5293586A (en) 1988-09-30 1994-03-08 Hitachi, Ltd. Data processing system for development of outline fonts
US5101365A (en) 1988-10-31 1992-03-31 Sun Microsystems, Inc. Apparatus for extending windows using Z buffer memory
US5184318A (en) 1989-09-05 1993-02-02 Cyrix Corporation Rectangular array signed digit multiplier
US5182797A (en) 1989-10-23 1993-01-26 International Business Machines Corporation Multi-processor graphics display system for displaying hierarchical data structures
US5522083A (en) 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
US5410649A (en) 1989-11-17 1995-04-25 Texas Instruments Incorporated Imaging computer system and network
US5544337A (en) 1989-12-29 1996-08-06 Cray Research, Inc. Vector processor having registers for control by vector resisters
EP0442041A3 (en) * 1990-01-18 1991-09-04 National Semiconductor Corporation Integrated digital signal processor/general purpose cpu with shared internal memory
DE69324399T2 (de) 1992-04-29 1999-09-30 Canon Kk Videoprozessorsystem
US5418973A (en) 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5388206A (en) 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
JP3304444B2 (ja) 1992-11-30 2002-07-22 富士通株式会社 ベクトル処理装置
JPH06223198A (ja) 1993-01-26 1994-08-12 Hitachi Ltd 光線追跡による画像生成装置及び方法
US5717947A (en) 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US5579455A (en) 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5630043A (en) 1995-05-11 1997-05-13 Cirrus Logic, Inc. Animated texture map apparatus and method for 3-D image displays
US5557759A (en) * 1995-06-07 1996-09-17 International Business Machines Corporation Video processor with non-stalling interrupt service
US5790880A (en) * 1996-01-04 1998-08-04 Advanced Micro Devices Microprocessor configured to dynamically connect processing elements according to data dependencies
US5745125A (en) * 1996-07-02 1998-04-28 Sun Microsystems, Inc. Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance
US5747125A (en) * 1996-07-18 1998-05-05 Viskase Corporation Fibrous composite cellulosic film and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860191A (en) * 1985-08-08 1989-08-22 Nec Corporation Coprocessor with dataflow circuitry controlling sequencing to execution unit of data received in tokens from master processor

Also Published As

Publication number Publication date
WO1998028695A1 (en) 1998-07-02
JP4235987B2 (ja) 2009-03-11
DE19782200T1 (de) 1999-11-18
KR20000062253A (ko) 2000-10-25
GB9914054D0 (en) 1999-08-18
JP2001506781A (ja) 2001-05-22
GB2335127B (en) 2002-02-13
US20020002574A1 (en) 2002-01-03
US6854003B2 (en) 2005-02-08
GB2335127A (en) 1999-09-08
DE19782200B4 (de) 2011-06-16

Similar Documents

Publication Publication Date Title
KR100366689B1 (ko) 비디오 프레임 렌더링 엔진
Khailany et al. Imagine: Media processing with streams
US6192384B1 (en) System and method for performing compound vector operations
Bove et al. Cheops: A reconfigurable data-flow system for video processing
Kapasi et al. The Imagine stream processor
Rixner et al. A bandwidth-efficient architecture for media processing
US9015354B2 (en) Efficient complex multiplication and fast fourier transform (FFT) implementation on the ManArray architecture
US5822606A (en) DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US8412917B2 (en) Data exchange and communication between execution units in a parallel processor
US8862653B2 (en) System and method for sparse matrix vector multiplication processing
US6037947A (en) Graphics accelerator with shift count generation for handling potential fixed-point numeric overflows
de Kock Multiprocessor mapping of process networks: a JPEG decoding case study
US5083267A (en) Horizontal computer having register multiconnect for execution of an instruction loop with recurrance
US5226128A (en) Horizontal computer having register multiconnect for execution of a loop with a branch
Hannig et al. System integration of tightly-coupled processor arrays using reconfigurable buffer structures
Sanchez-Elez et al. Algorithm optimizations and mapping scheme for interactive ray tracing on a reconfigurable architecture
Undy et al. A low-cost graphics and multimedia workstation chip set
Borden Graphics processing on a graphics supercomputer
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
Burgio et al. Architecture and programming model support for efficient heterogeneous computing on tigthly-coupled shared-memory clusters
Xu et al. Generalized GPU acceleration for applications employing finite-volume methods
Bove Jr et al. Media processing with field-programmable gate arrays on a microprocessor's local bus
Dowling et al. HARP: An open architecture for parallel matrix and signal processing
TW484110B (en) Video frame rendering engine
US20240111353A1 (en) Constructing hierarchical clock gating architectures via rewriting

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee