KR100319768B1 - 영상화및그래픽처리시스템내에서의다차원주소발생방법 - Google Patents

영상화및그래픽처리시스템내에서의다차원주소발생방법 Download PDF

Info

Publication number
KR100319768B1
KR100319768B1 KR1019940700433A KR19940700433A KR100319768B1 KR 100319768 B1 KR100319768 B1 KR 100319768B1 KR 1019940700433 A KR1019940700433 A KR 1019940700433A KR 19940700433 A KR19940700433 A KR 19940700433A KR 100319768 B1 KR100319768 B1 KR 100319768B1
Authority
KR
South Korea
Prior art keywords
data
processor
address
register
subpattern
Prior art date
Application number
KR1019940700433A
Other languages
English (en)
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 마거리트 와그너-달
Priority to KR1020017006042A priority Critical patent/KR100319770B1/ko
Application granted granted Critical
Publication of KR100319768B1 publication Critical patent/KR100319768B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Abstract

본 발명은 고속으로 영상 및 그래픽 처리 모두를 제공하는 통합된 영상 및 그래픽 처리 시스템을 제공한다. 본 시스템은 병렬 벡터 처리장치, 그래픽 서브 시스템, 공유메모리 및 그 밖의 다른 구성성분 모두를 연결하는 고속버스를 포함한다. 일반적으로, 상기 병렬 벡터 처리장치는 일련의 벡터 프로세서를 포함한다.
각각의 프로세서는 일정한 주소시퀀스를 위한 효율적인 메모리 주소 발생을 위해 하나의 벡터주소 발생기를 포함한다. 공유메모리에 대한 벡터 프로세서의 액세스를 제어하고 동기화하기 위해, 상기 병렬 벡터 프로세싱 장치는 공유메모리 액세스로직을 포함한다. 상기 로직은 각각의 벡터 프로세서에 통합되어 있다.
상기 그래픽 서브시스템은 파이프라인화된 구성에서 일련의 다변형 프로세서를 포함한다. 각각의 프로세서는 상기 파이프라인내에서 데이트 결과 전달을 위해 선입선출(FIF0)버퍼에 의해 연결된다. 부가적으로, 각각의 다변형 프로세서는 프로그램명령 및 데이타가 저장된 국부 공유메모리에 연결된다. 상기 그래픽 서브시스템은 또한 태그된 주소를 사용하여 목적장치를 식별하기 위한 장치 주소지정 기관(mechanism)을 포함한다. 상기 공유메모리, 상기 병열 벡터 프로세서 및 그래픽 서브시스템은 또한 상기 공유메모리로부터의 순척 주소요구에 필요한 정보의 양을 줄이는 축약된 주소지정 구성을 통합한다.

Description

영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법
제 1도는 본발명에 따른 영상 및 그래픽 처리 시스템의 블럭도,
제 2도는 본발명에 따른 벡터 프로세서의 구성도;
제 3도는 본발명에 따른 캐쉬 데이타의 구성도,
제 4도는 본발명의 데이타 캐쉬 구성에 따른 지역 레지스터, 라인(line) 레지스터 및 데이타 저장구조의 구성도;
제 5도는 본발명에 따른 캐쉬 데이타 구성를 사용하여 저장하는 메모리로 부터의 데이타를 액세스하는 방법의 흐름도;
제 6도는 본발명에 따른 벡터 주소발생기의 구성도;
제 7도는 본발명에 따른 데이타 주소 시퀸스(sequence)를 발생하는 방법의 흐름도;
제 8도는 본발명에 따른 토큰 로직구성을 사용하여 공유 메모리를 액세스하는 방법의 흐름도;
제 9도는 본발명에 따른 공유 메모리의 구성도;
제 10도는 본발명에 따른 그래픽 서브시스템(subsystem) 의 블럭도;
제 11도는 제 10도의 그래픽 서브시스템내에서의 그래픽 엔진(engine)의 블럭도;
제 12A도는 본발명의 바람직한 한 실시예에 사용된 다각형 프로세서를 위한 다각형 처리 사이클 필요조건들의 테이블;
제 12B도는 하나의 다각형 예(例)를 위한 다각형 처리 사이클 필요조건들의 테이블;
제 13도는 본발명에 따른 주소 태깅(tagging) 장치의 블럭도; 및 제 14도는 제 13도의 주소 태깅장치에 사용된 메모리 구성도.
(발명의 기술분야)
본발명은 영상화 및 그래픽 처리를 위한 시스템이며, 특히 영상화 및 그래픽 처리속도에 있어서 상대적으로 동등(同等)한 속도를 제공하는 워크스테이션이다.
(발명의 배경)
영상화, 혹은 영상처리라 함은 영상의 질높임, 복원, 재현, 압축, 해제를 포함한다. 즉, 본래의 영상으로 부터 새로운 영상을 발생시키는 임의의 프로세스이다.
반면에 컴퓨터 그래픽은 다각형 및 선과 같은 대상의 데이타 베이스로부터 영상을 발생시킨다. 전통적으로, 영상화 및 그래픽 시스템은 각 분야에서 별개의 처리필요조건들로 인해 별개로 발전되어 왔다.
영상화 및 그래픽 능력 모두를 필요로 하는 응용분야는 점차 증가되고 있다. 영상화 및 그래픽 사용의 증대로 인해 영상화 혹은 그래픽에 적합한 특수한 컴퓨터 구조가 발전되어 왔다. 많은 워크스테이션들이 영상화 및 그래픽 처리 능력을 결합할지라도 두 유형을 고속(高速)으로 처리 가능한 워크스테이션은 많지 않다.
따라서 사용자는 각각의 분야에서 우수한 두개의 개별적인 시스템, 혹은 한 분야에선 고속처리 그리고 다른 분야에선 저속처리능력을 제공하는 결합된 시스템을 이용하는 것이 요구되어졌다. 상기한 바와같이, 영상화 혹은 그래픽 처리를 위해 여러 종류의 특수 목적 워크스테이션이 고안되고 상용화되어 왔다.
이것들 가운데, 아던트 타이탄 그래픽 수퍼컴퓨터(the Ardent Titan Graphics Supercomputer), 실리콘 그래픽 수퍼워크스테이션(the Silicon Graphics Superworkstation) 및 에이티 앤티픽셀 머쉰(the AT&T Pixel Machine)은 전용 그래픽 하드웨어를 사용하여 고다각형 수행능력(high polygon throughput) 을 제공한다.
그러나, 이러한 시스템들은 고(高) 영상화 수행을 제공하지는 못한다.
반면에, 굳이어 매시브리 병렬 프로세서(the Goodyear Massively Parallel Processor), 커넥션 머쉰(the Connection Machine) 및 카아네기 멜론 대학교 랩(the Carnegie Mellon University Warp) 은 고(高) 영상 계산속도를 달성할 수 있으나 고(高) 그레픽 수행능력을 달성하지 못한다.
멀티프로세서 시스템(Multiprocessor systems)은 이러한 유형의 워크스테이션을 위한 표준구조로 되어지고 있다. 멀티프로세서 시스템은 연관된 국부 메모리 및 입력/ 출력요소를 포함하는 일련의 상호연결된 프로세서를 포함하는 시스템이다.
시스템 통신 및 동기화는 프로세서간의 메시지 교환에 의해 수행된다. 멀티프로세서 시스템의 간단한 예는 일련의 직렬로 연결된 프로세서들로써, 각 프로세서는 고유한 기능만을 수행하도록 프로그램되어 있다.
이러한 구성은 파이프라인 구조로 불리워진다. 이러한 유형의 시스템에서의 동작동안, 정보 혹은 데이타는 제1 프로세서로 입력되며, 제1 프로세서는 각각의 특별한 기능을 수행하고 출력데이타를 연결된 다음프로세서로 전달한다.
출력데이타의 종속(縱續)은 맨 마지막 프로세서에 의해 최종 데이타 혹은 결과가 발생될 때까지 이어진다. 파이프라인 구조는 일련의 순차적 프로그램 작업이 수행되어져야 할때 효율적이다. 프로세서의 시퀸스를 태스크(task)시퀀스에 일치하도록 태스크를 프로세서에 할당함으로써, 태스크는 특별한 태스크를 수행하는 전용 프로세서에 의해 매우 효율적으로 수행된다.
병렬구조 다중처리 구성은 동기(同期) 방법으로 동일 태스크를 수행하도록 프로그램된 일련의 프로세서들을 포함한다. 일반적으로, 각 프로세서는 동일태스크 명령으로 프로그램되어지며 한 세트의 특별한 데이타가 제공된다.
상기 데이타 세트들은 일반적으로 영상과 같은 류의 완전한 데이타 세트의 부분이다. 각각의 프로세서는 자신 데이타를 처리하고 결과를 주기억장치의 한 장소로 복귀한다. 상기 프로세서는 사용자 프로그램 가능한 혹은 특정작업에 전용되는 프로세서 일수도 있다. 이러한 방법으로 커다란 데이타 세트가 신속하게 처리되어 질수 있다.
멀티프로세서 시스템은 다량의 데이타 처리를 의미하므로, 빠른 데이타 주소지정 및 프로세서 작동에 따른 효율적인 데이타 전송이 중요한 요소이다.
프로세서가 기능 가능한 속도와 동일한 속도로 데이타가 액세스될 수 없기 때문에 시스템의 처리능력이 완전하게 이용되지 못하는 경우가 있다.
영상화 및 그래픽 처리 워크스테이션을 위한 구조는 시스템의 두 유형을 위한 만족할 만한 처리 능력을 가져야할 뿐아니라 빠르고 효율적인 데이타 주소지정 및 상기 두 시스템과 호스트 시스템(host system) 사이의 전달을 위한 수단을 제공하여야 한다.
본 시스템은 고속자료처리 중앙공유메모리에 영상화를 위한 병렬구조 및 그래픽 처리를 위한 파이프라인구조가 고속의 데이타 버스에 의해 내부 연결된 구성으로되어 있다.
일련의 멀티프로세서 제어능력은 효율적인 데이타 액세스 구성과 결합하여 시스템의 영상화 및 그래픽 처리에 있어서 고(高) 수행능력을 달성하게 한다.
(발명의 요약)
본발명은 고속으로 영상 및 그래픽 처리 모두를 제공하는 단일의 영상 및 그래픽 처리 시스템을 제공한다. 상기 시스템은 병렬벡터 처리장치, 그래픽 서브시스템, 공유메모리 및 시스템의 다른 모든 성분을 연결하는 고속데이타 버스를 포함한다.
모든 호스트(host) 통신은 그래픽 서브시스템에 의해 수행된다.
일반적으로, 병렬벡터 처리장치는 일련의 벡터 프로세서를 포함한다. 각각의 프로세서는 규칙적인 주소 시퀀스를 위해 효율적인 메모리 주소의 발생을 위한 벡터 주소발생기를 포함한다. 공유메모리에 대한 벡터 프로세서의 액세스를 동기화하고 제어하기 위해, 병렬벡터 처리장치는 공유메모리 액세스 로직을 포함한다.
상기 공유메모리 액세스 로직은 각 벡터 프로세서에 포함되어 있다.
그래픽 서브시스템은 파이프라인구조로 구성된 일련의 다각형 프로세서(polygon processor)를 포함한다. 각 프로세서는 상기 파이프라인내에서 데이타 결과를 통과시키기위해 선입선출(FIFO)버퍼로 연결되어 있다. 부가적으로, 각각 다각형 프로세서는 프로그램 명령 및 데이타가 저장된 국부공유메모리에 연결되어 있다.
파이프라인구조로된 선임선출(FIFO) 연결 및 국부공유메모리의 결합은 파이프라인에 관한 순차적 처리 필요 요소들을 감소시킨다. 그래픽 서브시스템은 또한 다각형 프로세서내에 포함된 주소지정방법장치 및 디스플레이 장치를 포함한다.
디스플레이 장치는 그래픽 데이타가 보내져야할 다수의 장치를 포함하기 때문에, 주소지정 방법장치는 데이타가 보내져야할 특정장치를 식별하기 위해 태그된(tagged) 데이타를 이용한다. 태그하는 구성은 다각형 프로세서와 디스플레이장치 사이의 데이타 처리속도 증가의 필요를 제거한다.
공유메모리, 병렬벡터 프로세서 및 그래픽 서브시스템은 축약된 주소지정방법 구성을 포함하고 있으며, 공유메모리로 부터의 순차적 주소요청에 필요한 정보의 양을 감소시킨다. 이러한 각각의 멀티프로세서 제어 및 주소발생 구성의 결합은 단일 환경에서 고속으로 영상화 및 그래픽 처리를 제공하는 영상화 및 그래픽 처리시스템을 생산한다.
본발명에 따르면, 주소 시퀀스 발생방법 및 그러한 주소 시퀀스 발생을 위한시스템이 제공된다. 상기 방법은 주소지정된 데이타를 검색하기 위해 메모리 액세스 구성 성분에 의해 사용되는 하나 혹은 그 이상의 영(零) 차원(zero-dimensional)주소코드를 발생한다.
상기 방법은 일차원(one-dimensional) 주소코드 발생단계를 포함하며 일차원 주소코드는 베이스값 및 시퀀스 폭 값을 포함한다.
일차원 주소코드로 부터 영차원 주소코드 세트가 발생된다.
상기 영차원 주소 세트는 베이스 값으로 부터 시작하는 순차적 주소에 대응한다.
상기 세트는 상기 세트내에서 영차원 주소의 수가 시퀀스 폭 값과 같아질때까지 베이스 값을 상수인자에 의해 증가시킴으로써 발생된다.
대안 실시예에서, 폭 스킵(skip)값은 일차원 주소코드에 포함되어 있으며 이 값은 상수인자로써 사용된다.
주소 시퀀스 발생방법은 대안으로써 2차원(two-dimensional) 주소코드를 발생하는 부가적 단계를 포함한다. 2차원 주소코드는 베이스값, 시퀀스폭 값 및 시퀀스 높이값을 포함한다. 2차원 주소코드로 부터 일차원 주소코드 세트을 발생하기 위해, 베이스값 세트가 발생되며, 베이스값 세트는 베이스값 및 시퀀스 높이 값과 같은 다수의 베이스값을 포함한다. 상기 베이스값 세트는 메모리폭 값으로 초기 베이스값을 증가시키고 상수인자로 그 결과를 곱함으로써 발생된다.
일차원 주소코드 세트는 상기 시퀀스폭 값과 결합한 세트로 부터의 각 베이스값을 사용하여 만들어진다.
각각의 일차원 주소코드는 그후 영차원 주소코드 세트발생에 사용된다.
본발명의 또다른 관점에 따르면, 주소지정 가능한 캐쉬 메모리내에 캐시된 데이터를 주소지정하기 위한 방법이 제공된다.
상기 방법은 완전연관(fully-associated) 및 직접사상(direct-mapped) 캐슁(caching)의 결합이다. 바람직하게, 완전연관캐슁의 관리는 소프트웨어 제어에 따라 수행되며 직접사상캐슁의 관리는 하드웨어 구성성분으로 수행된다.
데이타 캐슁방법은 병렬벡터 처리장치에 통합되어 있다. 상기 방법은 별개의 지역(region)들로 분할된 캐쉬메모리내에 데이타가 저장되는 시스템에 포함되어 있다. 각 지역들은 지역 레지스터와 연관되며 추가적으로 라인(line)세트들로 분할된다. 각 라인은 라인 레지스터와 연관된다. 메모리 주소는 지역태그(tag) 및 워어드(word) 태그를 각 워어드 태그는 라인 태그 및 라인 인덱스를 포함한다.
주어진 데이타 주소에 관해서, 상기 방법은 상기 주소로부터의 상기 지역 태그를 각 지역 레지스터의 내용과 비교한다. 지역 태그가 한개 지역 레지스터의 내용과 매치(match) 하면, 상기 주소로부터의 라인 태그를 상기 일치된 지역에 대한 라인 레지스터의 내용과 비교한다. 특정 라인 레지스터는 상기 주소로 부터의 라인 인덱스에 의해 식별된다. 최종적으로, 라인 태그가 라인 레지스터의 내용과 매치(match)된다면, 라인레지스터의 내용을 주소지정된 데이타로써 인식한다.
데이타 캐슁방법은 또한 지역 태그와 지역 레지스터의 비교를 모니터링하는 단계를 포함하며, 그리고 만일 지역 태그가 지역 레지스터의 내용과 일치하지 않으면, 주 메모리로부터 주소지정된 데이타를 얻는다.
상기 주소는 지역 레지스터를 선택하고, 상기 주소로 부터의 지역태그를 상기 선택된 지역 레지스터로 로드(load)하고, 상기 주소로 부터의 상기 선택된 지역에 관한 라인 레지스터로 라인 태그를 로드함으로써 상기 캐슁 시스템에 더해진다.
라인 레지스터는 상기 주소로 부터의 라인 인덱스에 의해 식별된다. 이러한 방법으로, 지역은 새로운 데이타 주소정보에 의해 겹쳐져서 쓰여진다. 이 지역 관리(management)는 소프트웨어 제어에 의해 수행되는 것이 바람직하다.
데이타 캐슁방법은 만일 라인 태그가 라인 레지스터의 내용과 매치(nlatch) 하지 않으면 주 메모리로 부터 주소지정된 데이타를 얻는 단계를 또한 포함한다. 만일 어떠한 매치도 일어나지 않는다면, 주소지정된 데이타는 주 메모리로 부터 얻어지며, 캐쉬로 로드된다.
따라서 데이타 주소로 부터의 라인 태그는 라인 레지스터로 로드되며, 라인 레지스터는 상기 주소로 부터의 라인 인덱스에 의해 식별된다. 바람직한 실시예에서, 라인태그 관리는 데이타 캐슁 하드웨어에 의해 수행된다.
본발명의 다른 관점에 따르면, 그래픽 서브 시스템은 프로그램 명령 및 데이타 저장을 위한 공유메모리를 이용하는 파이프라인구조로된 다각형 처리시스템 및 다각형 프로세서간 빠른 데이타 통과를 위한 선입선출(FiFo) 버퍼를 통한 상호 프로세서간 연결을 포함한다. 파이프라인구조로된 다각형 처리 시스템은 순차적으로 연결된 다각형 프로세서와 대응되도록 할당된 일련의 순차적 서브태스크 처리를 위해 특히 유용하다. 파이프라인구조로된 시스템은 국부공유메모리, 일련의 순차적으로 연결된 다각형 프로세서 및 제어기를 포함한다. 각각의 다각형 프로세서는 상기국부공유메모리에 연결되어 있다.
각각의 프로세서는 또한 처리되어야 할 데이타를 수신하기 위해 버퍼와 관련되어 있다. 버퍼는 역시 다각형 프로세서간 통신요소로써의 역할을 한다. 이와같이, 상기 연결에서 제1(the first) 프로세서는 예외이고, 각 프로세서는 이전(以前)(preceding) 프로세서로 부터 처리된 데이타를 수신하는 버퍼에 의해 이전 프로세서에 연결되어 있다. 제어기는 각 서브태스크를 다각형 프로세서중의 하나에 할당하며, 각 프로세서는 국부공유메모리로 부터 대응하는 서브태스크 명령을 인출한다(fetch). 다각형 혹은 라인 데이타와 같은 데이타 세트는 제어기에 의해 제1 프로세서에 보내진다. 각각의 서브태스크가 상기 연결된 프로세서중의 하나에 의해 수행되어 짐에 따라, 데이타 처리 결과는 버퍼를 통한 파이프 라인을 통하여 순차적으로 전달되어 진다.
국부공유메모리 및 버퍼 상호연결을 사용하여, 파이프라인구조로된 프로세서는 감소된 횟수의 메모리 액세스로 효율적인 다각형 처리를 제공한다.
파이프 라인구조로 된 처리 시스템에서, 태스크는 서브태스크들로써 구성되며, 각각의 서브태스크은 데이타 세트 특성을 기초로 한 종래방법에서 증가할 수도 있는 처리 필요 요소들과 관련되어 있으며, 제어기에 의해 다각형 프로세서들 사이에 할당된다.
상기 제어기는 데이타 세트에 대해, 데이타 특성을 기초로 한 각각의 서브태스크의 처리 필요요소들을 결정한다. 전체 필요요소가 계산된다.
제어기는 전체 처리요소들이 프로세서들 간에 균형을 이루도록 각 서브태스크를 순차적으로 연결된 프로세서에 할당한다.
본발명의 추가적 관점에 따르면, 병렬벡터 처리장치는 공유메모리내에 있는 공유변수들에 대한 액세스를 제어하기 위한 공유장치 액세스 시스템을 포함한다.
상기 액세스 시스템은 토큰(token) 통과신호를 발생하기 위한 클럭(clock), 토큰이 로드되는 각 처리장치와 연관된 토큰 레지스터, 연결된 레지스터 쌍 사이의 단일 방향 방법으로 토큰통과를 하게 하기 위하여 연속적인 링(ring) 형상으로 토큰 레지스터를 연결하기 위한 토큰통신로직 및 각 프로세서에 연관된 토큰 로직 장치를 포함한다.
토큰 레지스터로 로드된 토큰은 한개 액세스 토큰 및 일련의 무시(null) 토큰을 포함한다. 토큰로직장치는 상기 연결된 토큰 레지스터들 사이에 토큰이 통과될때의 클럭신호를 수신하기 위해 클럭에 연결된 타이밍장치를 포함한다.
특정 프로세서를 위한 상기 로직장치는 또한 처리장치가 상기 공유된 장치에의 액세스를 필요로 할때를 결정하고 만일 이러한 액세스가 필요하다면, 토큰 레지스터가 액세스 토큰으로 로드되어질 때를 결정하고, 무시(null) 토큰으로 토큰 레지스터를 로딩하고 그리고 상기 프로세서에 공유장치 액세스가 활용 가능함을 알리기 위한 액세스 제어를 포함한다. 이러한 방법으로, 자신의 토큰 레지스터에 액세스 토큰을 가진 프로세서만이 공유된 장치를 액세스할 수 있다.
본발명의 추가적 관점에 따르면, 병렬벡터 처리장치는 종래 방식에 따른 일련의 주소들을 발생하기 위한 벡터주소 시퀀스 발생기를 포함한다.
이러한 방식은 영상처리주소요구에서 종종 발생하는 방식이다. 상기 시퀀스발생기는 가산기, 베이스주소 레지스터, 증가 테이블(increment tatble) 및 제어기를 포함한다. 상기 가산기는 베이스주소 레지스터 및 증가 테이블로 부터의 입력을 수신하고 결합한다. 상기 베이스주소 레지스터는 베이스주소 레지스터의 내용입럭으로써 전송되기 위해 가산기에 연결되며 그리고 상기 가산기로 부터의 베이스주소 레지스터 결과를 위한 새로운 값으로 수신하기 위해 상기 가산기에 연결된다.
상기 증가 테이블은 서브패턴(subpattern) 목록을 포함하며, 서브패턴 목록은 증가 필드(Increment field) 및 다음 목록필드(next-entry field)를 포함한다. 상기 증가 테이블은 현재의 서브패턴 목록에 관한 증가 필드의 내용을 가산기에 입력으로써 전송하기 위해 가산기에 연결되어 진다.
최종적으로, 제어기는 초기에 베이스주소를 베이스주소 레지스터로 로드하며 특정패턴에 관한 값을 가진 증가 테이블을 로드한다. 동작을 하는 동안, 상기 제어기는 베이스주소 레지스터가 상기 가산기로 부터의 결과를 수신하도록 야기시키며, 현재의 서브패턴내의 다음목록 값을 기초로한 서브패턴 목록들로 부터 새로운 현재 서브패턴목록을 선택하며, 상기 방식이 완료될때까지 상기 동작단계를 반복한다. 가산기로 부터의 결과는 증가 테이블 목록 및 상기 베이스주소에 의해 표현된 시퀀스이다.
증가 테이블 서브패턴 목록은 상기 테이블 목록에 따른 서브패턴내에서 반복되어져야 할 증가횟수를 식별하는 카운트필드(count field) 를 또한 포함할 수 있다. 상기 제어기는 새로운 서브패턴 목록으로써 현재의 서브패턴 목록을 선택한다.
즉, 현재의 서브패턴 목록내에서의 카운트 값과 동일한 횟수의 증가 출력을반복한다. 증가 테이블 서브패턴 목록은 조건필드(condition field) 를 포함할 수도 있다. 조건필드는 조건코드, 카운트값 및 다음 목록값에 관련된 조건을 기초로한 다음 목록의 선택을 나타내는 조건코드를 식별한다.
본발명은 또한 주소시퀀스를 위한 증가 테이블 값을 결정하는 방법을 제공한다.
본발명의 부가적인 관점에 따르면, 데이타 메모리 주소로 부터 장치 식별을 발생하는 방법은 병렬벡터 처리장치 및 파이프 라인구조로된 다각형 프로세서에 통합되어 있다. 상기 방법은 주소지정 가능한 메모리 공간을 다수의 섹터(sectors) 로 분할하는 단계를 포함하며, 따라서 섹터는 섹터를 식별 주소의 태그부분에 의해 유일하게 식별가능해진다. 이러한 각 섹터는 한 장치와 관련되어 있다. 상기 분할된 메모리에 관련된 프로세서는 전송된 데이타가 저장되는 데이타 주소를 발생한다. 상기 데이타 주소로 부터의 태그부분은 태그된 데이타를 형성하기 위해 추출되거나 전송된 데이타에 연결된다.
상기 태그된 데이타는 장치 식별자로 전송되어지며, 장치 식별자는 태그된 데이터로부터 태그부분을 추출하고 태그부분으로 부터 장치를 식별하며, 태그된 데이타로부터 전송된 데이타를 추출하며 액세스된 데이타를 상기 식별된 장치에 전송한다.
영상화 및 그래픽의 원리는 컴퓨터 워크스테이션 기술이 발전함에 따라 좀 더 밀접하게 통합되어질 것이 예상된다. 예를들면, 발단된 의학 응용분야는 3차원 복원 및 체적표현같은 계산중심 그래픽 동작과 함께 대비의 질높임, 회전,줌(zoom), 윈도우 및 평면, 영상압축 및 압축해제, 영화디스플레이, 가장자리(edge)의 질 높임 및 검출과 영상분석을 위한 적응가능 막대그래프동등화와 같은 고속영상처리를 필요로 한다. 또한, 군사응용분야에선 벡터지도취급(vector map handling) 및 지형모델링과 같은 그래픽 동작뿐만 아니라 향상된 영상처리를 필요로 한다.
마지막예로써, 빠르게 발전하는 과학적 시각표상(表象)의 분야는 동시에 매우 높은 부동 소숫점 수행능력 및 실시간 그래픽 표현을 요구한다.
(바람직한 실시예의 상세한 설명)
제 1도를 참조하면, 본발명에 따른 영상화 및 그래픽 처리 시스템(10)은 영상처리를 위한 병렬벡터 프로세서(12), 공유메모리(14), 고속버스세트(16), 및 그래픽 서브시스템(18)으로 구성된다. 이러한 각 장치는 영상화 및 그래픽 처리 시스템(10)의 고속영상화 및 그래픽 처리를 지지하는 주소지정 구성 및/ 혹은 멀티프로세서 제어구성에 통합되어 있다.
(병렬벡터 처리장치)
병렬벡터 처리장치는 상기 버스(16)에 병렬로 연결된 다수의 벡터 프로세서를 포함한다. 하나의 실제적인 실시예에서, 병렬처리장치는 최대 1,280 MFLOPS (1초당 백만번의 부동소숫점 연산)의 계산능력을 제공하는 16개의 벡터 프로세서(20)를 포함한다. 이러한 구성은 영상변형 및 영상회선(回旋)과 같은 영상처리동작들이 매우 고속으로 벡터 프로세서에 의해 계산되어지도록 한다.
16개의 각 벡터 프로세서는 독립적으로 혹은 다른 벡터 프로세서와 동기되어동작할 수 있다. 벡터 프로세서(20)는 일반적으로 공유메모리(14)에 저장된 데이터를 가지고 동작을 수행한다. 16개의 벡터 프로세서(20)는 4개의 고속(高束)버스(16)를 통해 공유메모리(14)에 연결되어 있기 때문에, 각 고속버스는 4개의 벡터 프로세서에 공유메모리로의 통신경로를 제공한다.
소프트웨어 오버헤드(overhead) 없이 영상화 동작을 위한 주소 시퀀스를 발생하기 위해, 각 벡터 프로세서(20)는 프로그램 가능한 주소발생기(도시되지 않음)를 포함한다. 병렬벡터 프로세서(12)는 또한 공유메모리 액세스로직(22)을 포함한다. 상기 액세스논리는 저장된 데이타의 무결성(integrity)을 유지하기 위해 한번에 오직 하나의 벡터 프로세서만 공유메모리의 임의의 보호영역 액세스를 허용한다.
그래픽 서브시스템(18)은 그래픽 엔진(24), 디스플레이 구성성분(26) 및 호스트(host) 인터페이스 구성성분(28)을 포함한다. 그래픽 엔진(24)은 실제 계산을 수행하기 위해 두개의 다각형 처리 파이프라인(30)과 제어 및 조정을 행하는 주 프로세서(32)를 사용하는 파이프라인 처리를 위한 구성으로 된다. 처리 파이프라인내에서 각각의 프로세서에 대한 개별적인 국부처리 메모리를 제공해야만 하는 것을 방지하기 위해, 처리 파이프라인은 대부분의 데이타 및 프로그램 저장을 위해 작은 국부공유메모리(34)를 이용한다. 부가적으로, 그래픽 엔진(24)에는 파이프라인으로 부터 디스플레이 구성성분(26)내에 있는 픽셀(pixel) 처리장치(도시되지 않음) 세트중에 하나로 그래픽 데이타를 전송하기 위한 장치식별구성이 통합되어 있다.
예를 들어 백터처리장치(12) 및 그래픽 서브시스템(18) 같은 주요처리장치들사이의 모든 통신은 공유메모리(14)를 통하여 수행한다. 한 실제적 실시예에서 공유메모리는 1초당 1,280 백만바이트 메모리 액세스 처리속도를 표준 DRAM(36)으로 달성하기 위해 32-웨이 인터리빙구성(32-way interleaving scheme)을 사용한다. 이러한 구성들은 관련기술분야에 알려져 있다. 처리장치와 공유메모리 사이의 상호 연결망은 포트제어기(40)를 통하여 4개의 고속버스(16)에 연결된 크로스- 바 망(crossbar network)을 포함한다. 병렬계산 시스템에 있어서 불충분한 데이타 전송처리속도로 인해 많은 제한들이 나타나기 때문에 공유메모리 및 상호연결망은 고속계산수행의 실현을 위해서 필수적이다.
하나의 실제적 실시예에서, 각 고속버스(16)는 80MHz 속도로 운행하며 제어신호와 함께 주소 및 데이타를 위해 32- 비트 통로를 제공한다.
4개 고속버스의 일련의 데이타 전송율은 1초당 1,280 백만바이트이며, 이것은 공유메모리의 메모리 처리속도에 대응된다.
이러한 방식으로, 데이타 전송처리속도는 공유메모리 능력과 비례하여 최고로 되어진다. 벡터처리장치(12), 그래픽 서브시스템(18) 및 공유메모리(14)는 공유메모리로 부터의 데이타를 요구하는데 필요한 정보의 양을 줄이기 위해 축약된 주소지정 구성을 이용한다. 이러한 구성은 고속버스상에 필요한 주소지정폭을 줄인다. 상기 주소지정 구성은 그래픽 처리동안 영상데이타의 블럭(block) 들을 이동시키는데 특히 유용하다.
이와같은 다양한 메모리 액세스 및 다중처리기 제어구성은 시스템 전반에 걸쳐 잘 균형되고 일련의 높은 수행능력을 지닌 영상화 및 그래픽 처리능력을 가진시스템이 된다. 상기 시스템의 구조 및 동작의 상세사항은 여기서 설명된다.
병렬벡터 처리장치(12)는 시스템내에서 주 계산 기관이며, 주로 영상화 및 일반적인 수학적 계산에 사용된다. 제 2도를 참조하면, 한개의 벡터프로세서(20)는 두 개의 부동소숫점장치(FPU)(46), 한세트의 스칼라 레지스터 파일(48), 벡터 레지스터 파일(50), 제어 및 명령발행을 위한 제어 ASIC (52), 픽셀 취급을 위한 픽셀 포매터장치(PFU)(54), 명령 및 데이타 캐쉬(56) 및 고속버스(16)에 대한 인터페이스를 하기 위한 버스인터페이스장치(BIU)(58) 로 구성된다.
4개의 벡터 프로세서(20)는 제 1도에 도시된 바와같이, 두쌍씩 하나의 고속버스에 연결되어 있다. 벡터 프로세서의 각쌍은 상기 고속버스를 공유하며, 바람직하게는 상호교대 방식으로 공유한다. 버스인터페이스장치(58)는 벡터 프로세서(20)에 대한 트랜지스터- 트랜지스터로직(Transistor-Transistor Logic)(TTL)레벨 인터페이스와 상기 고속버스에 대한 백플레인 트랜시버로직(Backplane Transceiver Logic)(BTL)레벨 인터페이스 사이에 신호변환을 제공한다. 각 BIU 는 동일버스단계에서 통신하는 각 벡터프로세서쌍 사이의 중재를 제어하는 버스중재기를 포함한다.
상기 두개의 부동소숫점장치(46)는 상호교대방식으로 동작하며 텍사스주 달라스(Texas Instrument)사의 74ACT8847 CMOS 부동소숫점 프로세서 칩(chip)을 사용하여 구현되었다. 각각의 부동소숫점장치는 완전한 연산 및 논리명령 세트를 가지며, 32-비트 정수값 뿐만아니라 단정밀도(single precision) 및 배정밀도(double-precision) 부동소숫점 오퍼랜드를 처리할 수 있다. 부동소숫점 프로세서내의 산술논리장치(ALU) 및 승산기는 독립적으로 동작가능하거나 혹은 파이프라인 구성으로곱셈의 축적을 수행할때 동시에 사용되어질 수도 있다. 하나의 부동소숫점 프로세서의 최대수행능력은 40 MFLOPS이며 따라서 하나의 벡터프로세서는 최고 80 MFLOPS 의 계산속도를 제공한다.
명령인출/ 발행(issue) 및 데이타 캐쉬처리를 포함한 벡터 프로세서의 제어는 제어 ASIC(52)의 영역이다. 제어 ASIC(52)는 공유메모리(14)로 부터 명령을 인출하고 해석하며, 산술 및 논리연산을 실행하기 위해 부동소숫점장치(46)를 제어한다.
제어 ASIC는 또한 공유메모리 액세스논리(22)를 통해 프로세서간 통신을 제어하며 백터프로세서(20)의 적당한 동작에 필요한 모든 제어 및 스퀀싱(sequencing)을 수행한다. 제어 ASIC는 30,000 게이드 1 마이크론 CMOS 표준 셀 주문 집적회로를 사용한 하나의 실제적 실시예내에 구현되어 있다.
스칼라 레지스터 파일(48) 및 벡터 레지스터 파일(50)은 스칼라 계산 및 벡터명령 모두의 신속한 실행을 용이하게 한다.
스칼라 실행동안, 제어 ASIC(52)는 데이타를 두개의 부동소숫점장치(46), 명령 및 데이터 캐쉬(56) 및 스칼라 레지스터 파일(48)로/ 부터 이동시키기 위해 4개의 스칼라 버스를 조종한다. 부가하여 3개의 2048- 워어드로된 한 세트의 벡터 레지스터 파일(50)이 각 벡터 프로세서(20)에 또한 제공된다.
각 벡터 레지스터 파일은 개별적인 판독 및 기록포트(port)를 가지고 있다. 백터연산동안, 제어 ASIC(52)는 벡터 레지스터 파일(50)중의 2개 벡터 레지스터에 버스인터페이스장치(58)를 통하여 공유메모리로 부터의 입력오퍼랜드의배열(arrays)을 로드하며, 부동소숫점장치(46)가 세번째 벡터 레지스터 화일(50)의 레지스터로 저장되는 세 번째 배열을 발생시키기 위해 상기 입력오퍼랜드의 배열상에서 소정 계산을 수행하도록 야기시키며, 뒤이어서 다시 버스인터페이스장치(58)를 통하여 저장을 위해 입력오퍼랜드 배열을 공유메모리(14)에 본래대로 전송한다.
본 시스템에 있어서, 부동소숫점과 정수값 사이의 데이타 변환은 특수한 픽셀 포맷터장치(54)(PFU) 에 의해 수행된다. 이 장치는 프로그램가능한 게이트 배열 필드로 구현된다. 일반적으로 영상픽셀 데이타는 8-비트 혹은 16- 비트 팩된 (packed) 부호없는 정수값을 포함하는 반면에 영상처리는 정확성을 가하기 위해 부동소숫점으로 수행된다. 또한, 부동 소숫점으로 된 계산결과는 공유메모리로 전송되기 전에 바람직하게 8-비트 혹은 16- 비트 팩된 정수값으로 변환된다.
상기 픽셀 포맷터장치는 이러한 기능을 벡터 프로세서(20)를 위해 수행한다. 픽셀 포맷터장치의 변환속도는 1초당 40백만픽셀, 즉 하나의 픽셀 정수값이 25나노초 사이클 시간에 32- 비트 부동소숫점 값으로 변환가능하며 그 반대도 가능하다.
영상픽셀 값은 1, 4, 8 혹은 16- 비트 부호없는 정수일 수 있으며 이들중 어느것도 픽셀 포맷터장치에 의해 취급되는 것이 가능하다. 픽셀 포맷터장치는 필요하다면 계산결과가 소오스 오퍼랜드(source operands) 로써 사용되는 것이 가능하도록 벡터 레지스터 화일(50)중 3번째 벡터 레지스터 화일에 저장된 데이타를 다른 벡터 레지스터 화일에 전송한다.
명령 및 데이타 캐쉬(56)는 제어 ASIC(52)를 위한 국부메모리로써 사용된다. 하나의 실제적 실시예에서, 명령 및 데이타 캐쉬는 명령 및 데이타를 위해 32- 비트폭으로 된 두 세트의 4k 메모리를 포함한다.
명령 및 데이타 캐쉬(56)의 특정지역(regions) 에 대한 좀더 효율적인 액세스를 제공하기 위해, 제어 ASIC(52)는 본발명에 따른 데이타 캐슁 구성을 구현한다.
일반적으로, 데이타 캐쉬는 공유메모리(14)와 같은 주메모리로 부터 검색되어진 데이터의 블럭들을 국부적으로 저장하기 위해 사용된다.
데이타요구 및 수신에 요구되는 시간에 관한 한 공유메모리에 대한 액세스는 비용이 많이 들지만, 데이터 캐쉬에 대한 액세스는 매우 빠르다.
따라서, 데이타 블럭들이 필요로 되어질 수 있는 응용에서, 공유메모리 액세스가 발생할 때, 단순히 데이타의 한 워어드 보다는, 데이타 캐쉬내에 저장되고 검색되어질 워어드들이 이어지는 일련의 데이타 블럭들을 검색한다.
상기 응용이 계속해서 캐쉬된 데이타를 참조한다면 주메모리 액세스는 따라서 감소된다. 데이타 캐쉬가 주어질 경우에, 특정 메모리 주소로 부터의 데이타가 현재 캐쉬내에 저장되어 있는지 혹은 그것들이 상기 공유메모리로 부터 인출되어야만 하는지를 효율적으로 결정하는 것이 또한 중요하다.
본발명은 데이타 캐쉬에 대한 빠르고 효율적인 액세스를 위한 두개의 주소지정방법 및 데이타 캐쉬관리를 결합한다. 상기 구성은 데이타 캐슁을 위해 완전연관 및 직접사상 주소지정 방법을 결합한다.
이러한 두 구성은 데이타 캐슁 기술분야에선 잘 알려져 있다.
본발명은 캐쉬 갱신을 확실히 하기 위해 소프트웨어 및 하드웨어 데이타 캐쉬 관리기술을 이용하며, 캐쉬미스(cache miss)가 생겼을 때 발생하는 상기 캐쉬 갱신은 필요하다면 덜 사용된 데이타에 겹쳐서 기록하고 캐쉬내에 자주 사용된 데이타를 유지하는 관점에서 볼때 생산적이다. 제어 ASIC(52)내에 구현된 소프트웨어는 캐슁구조면에서 완전연관을 위한 상기 후자의 기능을 수행하는 반면에 제어상태기(도시되지 않음)는 캐슁구성의 직접사상부분을 위한 갱신기능을 수행한다.
제 3도를 참조하면, 캐슁구성은 각각의 데이타 메모리 주소(60)가 지역태그(62) 및 워어드태그(64)로 나누어진다. 워드태그들은 차례로 라인태그(66), 라인인덱스(68) 및 오프세트(70)를 포함하다. 제 4도를 참조하면, 데이타 캐쉬 메모리(72)는 지역들로 나누어진다. 예에서, 4개의 지역(0-3) 들이 형성된다.
각 지역들은 지역태그를 가진 레지스터(74)와 연관되어 있다. 데이타 캐쉬내의 각 지역은 추가적으로 한 세트의 라인(76)들로 더 나누어지며, 각 라인은 하나 혹은 그이상의 워어드(78)를 포함한다. 각 라인은 라인 레지스터(80)와 연관되어 있으며, 한 세트의 라인 레지스터(82)는 각 지역태그와 연관된다.
라인 레지스터는 또한, 만일 정보가 라인 레지스터내에 저장되어 있고 데이타 저장이 유효하다면 설정되는 연관유효비트(도시되지 않음)를 포함하고 있다. 라인 및 데이타 레지스터들은 배열내에서 특정 라인태그 참조를 용이하게 하기 위하여 순서화된 배열형태로 정렬된다.
실제예를 쉽게 설명하기 위해, 지역(0) 에 대해 오직 한 세트의 라인, 라인 레지스터 및 태그 레지스터가 도시되어 있다.
다시 제 3도를 참조하면, 주소 캐쉬 하드웨어는 주소 레지스터(84), 지역태그 비교기(86)에 연결된 한 세트의 지역 레지스터(74) 및 라인태그 비교기(88)에 연결된 한 세트의 라인레지스터(80)을 포함한다. 지역태그 비교기로 부터의 출력은 AND 게이트(90)를 사용하여 라인 레지스터 세트들 중의 하나를 선택하기 위해 사용된다.
선택된 라인 레지스터 세트와 대응하는 라인태그 비교기로 부터의 출력은 OR게이트(92)를 통하여 매치(Match) 표시를 생산한다. 다시, 지역(0-3) 과 연관된 4세트중 오직 두세트의 성분만이 도시되어 있다.
상기 회로의 동작동안, 주소지역태그는 각 지역 레지스터의 내용과 비교된다. 만일 매치가 발생되었을 경우 연관 지역 비교기로 부터의 출력선택라인은 하이(high)가 된다. 상기 주소로 부터의 라인 인덱스는 지역태그 비교가 발생되었는지 여부와 관계없이 각 레지스터 세트내에 특정 라인 레지스터를 인에이블시키는데 사용된다.
그후 라인태그는 라인 비교기에 의해 인에이블된 라인 레지스터의 내용과 비교된다. 한 세트의 지역 및 라인 비교기로 부터의 결합된 출력은 지역 및 라인태그가 매치된다면 AND 게이트에서 하이(high) 신호를 생산한다.
AND 게이트의 모든 출력은 OR 게이트에서 결합된다. 임의의 상기 비교기 세트가 매치된다면 즉 요청된 데이타가 현재 데이타 캐쉬내에 있다면 OR 게이트의 출력은 하이(high)가 된다.
제 5도의 흐름도에서의 블럭(100) 을 참조하면, 제어 ASIC(52) 에 의해 요청된 데이타가 메모리 주소와 일치할때 데이타 캐쉬(56)에 의해 수신되며, 주소가 위치되어 있는 지역은 데이타 주소내에서 지역태그를 기초로 한 완전영관 주소지정수법을 사용하여 맨처음 식별된다. 이 방법은 상기 주소로 부터의 지역태그가 각각의 지역 레지스터(74)의 내용과 비교되어져야 하는 것을 필요로 한다.
만일 지역태그가 상기 레지스터들 중의 하나와 매치된다면, 특정지역으로 부터의 데이타는 캐쉬내에서 이용할 수 있다. 이 조건은 지역 비교기로 부터의 선택라인중 하나가 하이(high)이면 참이다. 매치되었음을 나타낸다.
라인태그, 라인 인덱스 및 워어드 태그의 오프세트를 이용하는 직접사상 주소지정구성은 식별된 지역과 연관된 특정 메모리 공간을 식별하기 위해 사용된다.
블럭(102) 에서, 라인 인덱스는 각 라인 레지스터내에 있는 목록들중의 하나를 선택하는데 이용된다. 지역 비교기로 부터의 출력을 기초로 AND 게이트(90)에서 오직 하나의 지역만이 선택되어지기 때문에, 본 논의에서 오직 한 세트의 라인 레지스터들만이 참조되어 질 것이다. 블럭(104) 에서 라인 인덱스에 의한 라인 레지스터의 내용과 메모리 주소의 라인태그가 비교되어진다.
만일 블럭(106) 에서 매치가 있다면, 요구된 데이타 캐쉬내에서 발견되어질 수도 있는 것을 의미하는 캐쉬히트(cache hit) 가 발생되었다고 생각되어 진다.
그런후 대응하는 유효비트가 세트된다. 데이타 레지스터는 다수의 워드데이타를 보유할 수 있기 때문에, 상기 오프세트는 상기 선택된 라인 레지스터와 관련된 라인으로부터 한 워드를 선택하는데 사용된다.
블럭(108) 에서, 오프세트에서 발견된 상기 워드는 제어 ASIC로 읽혀진다.
블럭(104) 에서, 만일 라인태그가 상기 선택된 라인 레지스터의 내용과 매치되지 않거나 혹은 상기 유효비트가 세트되지 않는다면(데이타가 무효임을 의미하는), 캐쉬미스(cache miss) 가 발생된다. 상기 캐쉬는 그후 블럭(110) 에서 공유메모리에 메모리 주소요구를 보낸다. 상기 데이타가 캐쉬로 복귀되어졌을 때, 블럭(112) 에서 상기 데이타는 상기 라인 인덱스에 상응하는 데이타 레지스터로 로드된다.
즉 라인이 채워진다. 메모리 주소 부분은 적당한 라인 레지스터에서 라인태그로써 기록되어지며 상기 유효비트가 세트된다.
블럭(108) 에서, 요청된 데이타는 제어 ASIC로 보내진다. 블럭(104) 에서 어떠한 매치도 없기 때문에, 이미 캐쉬내에 있는 데이타에 겹쳐(중복)서 기록하는 것이 필요하다.
직접사상방법이 사용되었기 때문에, 어느 데이타가 중복되어 기록되어야 하는지에 대한 선택이 없으며, 블럭들(110-112) 과 관련하여 설명된 상기 관리는 제어상태기에 의해 수행되며 제어상태기는 상기 목적을 위해 영구적으로 프로그램되어 있다. 상기 제어상태기에 의한 수행은 상대적으로 빠르다.
만일 지역태그가 블럭(100) 에서 매치되지 않는다면, 캐쉬내에서 데이타의 지역은 요구된 주소와 관련된 데이타의 섹션(section) 으로 반드시 대치되어져야 한다.
완전연관 주소지정 구성이 지역식별을 위해 사용되어지기 때문에, 데이타 캐쉬내에서 중복 기록되어질 지역으로써의 여러 선택이 있다. 하드웨어로 상기 선택을 수행하는 종래의 방법은 복잡하고 비용이 많이든다. 따라서, 소프트웨어에 의해 수행되는 상기 캐쉬 지역들의 관리는 제어 ASIC 에 의해 실행된다.
일반적으로, 블럭(114) 에서 최근 최소(least recently) 액세스된 지역태그가 중복기재된다. 최근 최소 액세스된 지역은 지역 액세스가 발생할 때 마다 지역 액세스 카운트를 둠으로써 식별된다. 이러한 구성부분의 사용검사방법은 관련 기술분야에선 잘 알려져 있다. 최근 최소 사용된 지역에 대한 중복기재 결정은 앞으로 최소 사용되어질 지역의 중복기재에 관한 바람직한 관리계획을 가져온다.
제어 ASIC(52) 는 중복기재되어질 지역을 선택하고 인출된 데이타에 대한 지역태그를 적당한 지역태그 레지스터로 로드한다.
중복기재되어질 지역이 선택되어진 후, 블럭(100) 에서 주소요청은 공유메모리로 보내지며, 공유메모리는 데이타를 제어 ASIC로 반환한다.
상기 데이타는 주소의 라인 인덱스에 의해 명령된 대로 데이타 레지스터로 로드되며, 상기 주소로 부터의 라인태그는 블럭(112) 에서 상기 라인인덱스와 관련된 라인 레지스터내에 저장된다.
직접사상 캐쉬의 뚜렷한 특징은 임의의 한 메모리 주소에 상응하는 데이타는 오직 한 데이타 레지스터내에만 존재하는 것이 허용된다는 것이다.
오직 하나의 라인 태그만이 캐쉬히트를 검출하기 위해 초기 주소와 비교되어 진다. 비교하면, 완전연관 캐쉬는 임의의 지역이라도 주어진 메모리 주소에 상응하는 데이터를 포함하는 것이 가능하고 지역 레지스터의 배열 전체가 캐쉬히트를 검출하기 위하여 반드시 탐색되어져야 한다.
따라서 직접사상방법은 완전영관방법 보다 매우 적은 비교들을 필요로 할수 있다.
상기한 바와같이, 직접사상 캐쉬는 제어상태기에 의해 매우 단순한 방법으로 유지되어질 수 있으며, 반면에 완전연관 캐쉬는 좀더 유연한 소프트웨어에 의해 제어되어질 수 있다. 지역스와핑(swapping of regions) 은 라인스와핑(swapping of lines) 보다 덜 빈번하게 발생하지만 처리시간면에서 볼때 라인스와핑 보다 비용이 많이들기 때문에, 이러한 두 제어의 결합은 소프트웨어 관리계획에 의해 초래되는 오버헤드(ovehead)에도 불구하고 지역관리가 생산적이 되도록 보장한다.
부가적으로, 상기 두 방법을 결합함으로써, 단순한 라인 레지스터 갱신은 하드웨어로 신속하게 실행되어질 수 있다. 따라서, 데이타 캐쉬는 공유메모리 인출을 감소시키기 위해 동작되며 이렇게하여 벡터처리 인터럽트를 감소시킨다.
일반적으로, 영상처리는 커다란 데이타 배열을 필요로하며 따라서 이것은 벡터처리에 유용하게 된다. 효율적인 벡터동작을 위해, 벡터처리장치(20)는 벡터주소지정 하드웨어를 포함하며, 벡터 레지스터 파일(50)이 상이한 주소지정 패턴으로 액세스되어질 수 있게 한다. 3개의 벡터 레지스터 파일(50)의 각각은 자신의 벡터주소지정 하드웨어를 포함한다. 일반적인 주소지정 패턴 혹은 시퀀스의 예는 회선 및 변형들을 필요로 한다. 이러한 주소지정 시퀀스들은 일반적으로 완전한 패턴을 이루기 위해 반복되어지는 간단한 서브패턴들로 이루어진다.
이 서브패턴들은 스스로가 유사하게 반복되어진 서브패턴들로 이루어질 수도 있다.
상기 벡터주소지정 하드웨어는 데이타 주소계산을 하는 동안 소프트웨어 오버헤드를 피하면서 하나의 벡터동작에서 일반적인 주소지정 시퀀스를 이용하는 최고의 영상화 알고리즘을 허용한다. 본발명의 벡터주소발생기는 상대적으로 복잡한 주소시퀀스를 생산하는 유연하고 효율적인 방법을 제공하면서 주소시퀀스 발생의 비용을 줄이는 하드웨어 및 소프트웨어 제어의 결합이다.
제 6도를 참조하면, 본발명에 따른 주소발생기는 베이스 주소 레지스터(120), 증가 테이블(122), 제어기(124) 및 가산기(126) 를 포함한다.
초기화동안, 베이스 주소 레지스터는 상기 초기화 시퀀스시작으로 부터의 베이스 주소가 로드된다. 부가적으로, 증가 테이블은 발생되어질 수 있는 소정시퀀스로부터 필요한 증가, 반복 및 조건정보가 로드된다.
증가 테이블내에서의 정보는 소정시퀀스의 기본 패턴을 나타낸다.
기본 패턴은 소정주소 시퀀스를 생산하는데 필요한 횟수만큼 반복되어진다.
베이스 주소 레지스터(120) 는 벡터주소를 저장하는데 충분한 크기이다.
한 실제적 실시예에서, 증가 테이블(122) 은 32- 비트 레지스터 파일이다.
필요한 목록들의 수는 발생되어져야 할 시퀀스의 복잡도에 따라 변화한다. 전형적으로, 대부분의 일반적인 응용에 대해 16목록이면 충분하다. 각 목록은 증가(increment) 카운트, 재(再)로드, 다음 인덱스 및 조건값 저장을 위한 필드를 포함한다. 증가(increment) 필드는 +1, -4와 같은 정수값을 지닌다.
재로드 필드값은 일반적으로 주소 시퀀스내에 포함된 특정 서브패턴내에서 반복된 증가(increment) 횟수를 나타낸다. 카운트 값은 서브패턴내에서 반복되어진증가의 횟수를 추적하기 위한 임시값으로 사용된다.
이 추적은 초기에 재로드 값을 동일 증가 테이블 목록의 카운트 필드로 복사함으로써 수행되며, 그리고나서 카운트 값을 증가 테이블 목록에 대한 증가값이 특정 서브패턴 발생동안 출력될때 마다 감소(decrementing)시킴으로써 수행된다.
카운트 값이 제로가 되었을때, 카운트 값은 재로드 필드로 부터 자동적으로 재로드된다. 감소 및 재로딩은 카운트로직에 의해 제어된다.
이러한 방법으로, 재로드값은 카운트 값으로 사용함으로써 파괴되어지지 않는다.
다음인덱스 값과 조건값은 특정 서브패턴이 완성된 후 사용하기 위해 증가 테이블내에서 다음 서브패턴을 결정하기 위해 제어기에 의해 사용된다.
주소시퀀스발생 동안, 제어기(124) 는 반복해서 현재의 증가 테이블 목록을 선택하며, 증가 테이블 목록의 증가 값은 가산기로 출력된다.
가산기는 벡터주소출력 값을 생산하기 위해 베이스 레지스터내에 있는 주소에 증가값을 가산한다. 이 값은 벡터 레지스터로 출력되며, 또한 베이스 레지스터를 갱신하는데 사용된다.
그후 제어기의 조건로직은 현재 목록의 조건정보 및 다음인덱스 값을 기초로 하여 다음테이블 목록을 선택한다. 이러한 방법으로, 유연한 즉 프로그램 가능한 그러나 효율적인 주소시퀀스 발생기가 제공된다.
증가 테이블을 위한 일련의 값들은 완전한 주소지정 시퀀스를 만드는 기본패턴 및 기본패턴내에서의 서브패턴들을 결정하는 것에 의해 주어진 주소시퀀스를 위해 미리 설정되어진다.
예를들면, 회선(回旋) 영상화 동작은 처리를 위한 영상으로부터 추출된 다음의 일반적인 픽셀값 시퀀스를 필요로 한다: 1, 2, 3, 8, 9, 10, 16, 17, 18.. 상기 시퀀스의 기본형식은 제로 베이스로부터 시작하여 현재의 베이스를 1씩 증가시키고, 상기 증가(increment) 시키는 단계를 3번씩 반복함으로써 형성되는 서브패턴으로 설명되어질 수 있다. 다음 서브패턴은 현재의 베이스값을 5씩 증가시키는 단계에 의해 설명되어진다.
전체 패턴은 소정 시퀀스를 얻는데 필요한 횟수만큼 반복되어진다. 이 주소시퀀스를 위한 증가 테이블은 따라서 +1 및 +5 두개의 증가 값을 포함할 것이다. 첫번째 테이블 목록과 관련된 재로드 값은 3이며, 두번째 테이블 목록과 관련된 재로드값은 1 이다.
증가 테이블에서 이러한 패턴정보를 저장하기 전에, 상기 서브패턴들 사이의 흐름을 결정하기 위한 방법이 또한 만들어져야 한다.
본 예에서 매우 단순할지라도, 테이블 목록들이 선택되어진 상기 시퀀스를 정의하는 정보는 또한 상기 테이블로 반드시 로드되어야 한다.
이러한 단계는 주소발생기에 의해 사용되어 질 서브패턴들이 있는 증가 테이블내의 시퀀스에 나타나는 서브패턴들이 항상 참이 아니기 때문에 필요하다.
분기명령은 다음 인덱스 필드에 저장된 인덱스 값을 기초로 하는 것이 바람직하다. 대안으로, 일정 정수값에 의한 현재 테이블 목록의 조건부 수정은 조건로직에 의해 다음 인덱스값 출력발생을 위해 수용된다. 서브패턴들 사이의 각각의 변환(transition)은 다음 인덱스 값을 결정하기 위하여 분석되어진다. 본 예에서, 상기 패턴은 상기 첫번째 및 두번째 서브패턴들은 몇번의 횟수동안 순차적으로 반복되어져야 함을 필요로 한다.
바람직한 한 실시예에서 현재의 인덱스 값은 제로로 초기화된다. 첫번째 서브패턴 형식이 완성된 후에, 현재의 테이블 인덱스 값은 두번째 서브패턴으로 진행되기 위하여 1씩 증가된다. 두번째 서브패턴이 완성되었을때, 현재 테이블 인덱스 값은 제로로 리세트되며, 테이블 인덱스를 나타내며 상기 패턴이 완성되어 졌다.
따라서, 첫번째 서브패턴 형식과 관련된 상기 조건은 카운트 값이 제로가 아닐때 현재 인덱스 값을 사용하며, 만일 카운트값이 제로이면 다음 인덱스 값으로 가며 본예에서는 값이 1이다 (동일한 분기가 현재의 테이블 인덱스값을 현재의 테이블 인덱스 더하기 1 로 갱신함으로 달성되어질 수 있다. 즉, 제로 더하기 1).
일단 두번째 서브패턴이 완성되어지면, 현재 인덱스 값은 첫번째 서브패턴을 반복하기 위하여 반드시 제로로 되돌려져야 한다.
따라서, 두번째 조건은 카운트 값이 제로이면 다음 인덱스값을 사용하며, 제로로 세트된다. 이러한 각각의 조건들은 조건코드에 의해 표현되며, 조건로직에 의해 테스트 된다. 제로에서 2까지를 포함하는 범위의 한 세트의 서로 다른 조건값들은 일반적인 모든 서브패턴 변환을 표현한다.
제로인 조건값은 제어기가 카운트값이 제로가 될때까지 현재의 테이블 목록참조를 계속하는 것을 의미하며; 카운트 값이 제로일때, 다음 인덱스 필드내에서 특정된 목록은 현재 인덱스로 사용된다. 1인 조건값은 제어기가 현재의 테이블 목록을 한번 참조함을 의미하며, 그렇게 함으로써 만일 카운트가 제로이면, 다음의 연속적인 테이블 목록으로 점프하며, 만일 카운트가 제로가 아니면, 다음 인덱스 필드내에서 특정된 목록으로 점프한다. 2인 조건값은 만일 카운트가 제로이면 다음 인덱스 필드내에서 특정된 목록을 참조함을 의미하며, 카운트가 제로가 아니면 다음의 연속적인 테이블 목록으로 점프해야 한다. 적절한 조건 코드를 선택함으로써, 복잡한 분기패턴들이 만들어진다. 예를들면, 첫번째 및 두번째 서브패턴을 위해 로드된 조건코드는 제로이고 다음 목록 값은 각각 1 및 제로이다.
또다른 벡터주소지정 구성은 증가 테이블내에서 값을 바꿈으로써 지지되는 것이 가능하며, 빠른 푸리에 변환(FFT)(Fast Fourier Transform) 를 포함하여, 대부분의 영상화 동작들이 지지될 수 있다. FFT의 경우에, FFT 의 마지막 단계는 역전된 비트 순서열(bit-reversed order)로 결과를 생산한다. FPU로 부터의 계산결과를 저장하는 세 번째 벡터 레지스터 파일(50)은 상기 결과 데이타를 해독하기 위해 벡터주소 발생기에서 역전된-비트 하드웨어를 제공한다.
제 7도를 참조하면, 블럭(130) 에서 주소발생을 개시시키기 위하여, 베이스 주소가 베이스 레지스터로 로드되며, 증가 테이블은 미리 만들어진 주소시퀀스 변수(variables) 에 의해 로드되어지며, 재로드 값은 상응하는 카운트필드로 복사(copy)된다.
상기 마지막 단계는 제어로직에 의해 약간 단순화할 수도 있다.
제어기는 일반적으로 주소발생을 현재의 테이블 인덱스 제로에서 시작한다. 현재 인덱스에 대한 값을 제어기에 제공함으로써 테이블내의 임의의 로우(row)에서주소발생이 시작되어질 수 있음이 이해되어져야 한다. 블럭(132) 에서 현재의 테이블 목록으로부터의 증가 값은 가산기로 출력되며, 가산기는 블럭(134) 에서 증가테이블 및 베이스 레지스터로 부터의 값을 결합한다.
블럭(136) 에서 결과로 생기는 값은 벡터 레지스터 값으로써 출력되며 또한 베이스 레지스터내에 새로운 값으로 저장된다.
블럭(138) 에서 제어기를 참조하면, 현재의 테이블 목록으로 부터의 카운트값, 다음-인덱스값 및 조건값은 제어기에 의해 수신된다.
상기 회선(回旋) 예에서, 초기 카운트값은 3이고, 다음 인덱스값은 1 이며 조건값은 제로이다. 블럭(140) 에서, 카운트값은 값 2를 산출하기 위하여, 각각의 로직장치에서 1씩 감소되어진다. 블럭(142) 에서, 카운트 값 2는 그후 제로조건을 사용하여 분석된다. 만일 카운트값이 제로가 아니면 첫번째 조건은 현재의 인덱스가 변경되지 않았음을 의미한다. 상기 조건에 따르면, 새로운 카운트값이 현재의 인덱스의 카운트 필드에 저장되며 블럭(132) 에서 상기 루프가 반복하여 시작한다.
상기 진행시퀀스는 카운트값이 제로가 될때까지 반복된다.
블럭(142) 에서 카운트값이 제로이며 조건논리에 따라서 현재의 인덱스의 카운트 필드는 재로드값(제로로 된 것으로써)에 의해 갱신되며 현재 인덱스값은 값이 1 인 다음 인덱스값으로 갱신된다. 그후 상기 루프는 테이블 목록 1에 위치한 두번째 서브패턴을 위하여 블럭(132) 에서 시작한다.
일반적으로, 상기 주소발생기는 얼마나 많은 루프가 수행되어야 하는지 즉, 상기 시퀸스에서 얼마나 많은 주소가 발생되어야 하는지를 명령하는 제어 ASIC(52)의 제어하에 동작한다. 대안으로, 상기 프로세스를 끝마치기 위해, 제어기(124) 는 특정 프로세스를 끝내기 위해 얼마나 많은 상기 패턴이 수행되어야만 하는지를 나타내는 초기값이 제공되어 질 수도 있다.
본 발명의 주소발생기를 사용하여, 상이한 계산 및 알고리즘과 관련된 복잡한 주소발생 패턴들은 증가 테이블 값 및 각 패턴에 대한 조건들을 미리 만들기 위해 분석되어지는 것이 가능하다. 이러한 값 및 조건들은 벡터 레지스터내에 존재하는 데이터가 액세스되는 상기 시퀀스를 결정하기 위해 베이스 주소와 함께 영상화 시스템에 사용된다. 따라서, 효율적인 일반적 주소발생 그리고 때때로 복잡한 주소시퀀스가 제공된다.
병렬벡터 처리장치(12)의 전반적인 동작 및 16개의 프로세서(20)를 효율적으로 이용하는 것에 대하여, 단순한 프로세서간 동기화 구성 및 빠른 데이타 액세스가 주요한 필요요소이다. 공유메모리 액세스로직(22)은 병렬벡터 처리장치를 위한 프로세서간 동기화를 제공한다. 또다시 제 2도를 참조하면, 각각의 벡터프로세서(20)는 토큰-인(token-in) 및 토큰- 아웃(token-out)으로 이름지어진 두개의 라인(59)를 갖는다.
벡터 프로세서들을 직렬방식으로 연결하기 위해, 한 프로세서로 부터의 토근- 아웃은 다음 프로세서를 위해 필수적으로 토큰- 인 라인이며; 맨나중 프로세서의 토큰- 아웃라인은 링을 형성하도록 맨 처음 프로세서의 토큰- 인 라인에 연결된다.
액세스 토큰(access token) 혹은 무시토큰(null token)들은 토큰- 인 및 토큰- 아웃라인(59)에 걸쳐 있는 벡터 프로세서들 사이에 통과된다. 토큰- 인 및 토큰- 아웃라인들은 벡터 레지스터내에서 최소한 1비트를 지니는 토큰 레지스터(도시하지 않음)에 연결된다. 한 실제적 실시예에서, 액세스 토큰은 2진 1 값을 가지며, 무시토큰은 2진 제로 값이다. 액세스 로직은 벡터 프로세서가 액세스 토큰의 제어를 갖지 못한다면 단순히 벡터 프로세서가 공유메모리의 보호구역으로 액세스하는 것을 방지한다.
초기화 동작동안, 액세스 토큰은 특정태스크(task)가 할당된 하나의 벡터 프로세서에 의해 발생되고 토큰 레지스터로 로드된다.
제 8도를 참조하면, 하나의 벡터 프로세서(20)를 위한 제어 ASIC(52)에 의해 실행된 제어로직이 설명되어 있다. 각각의 벡터 프로세서의 제어 ASIC는 동일논리를 실행한다는 것이 인식되어져야 한다. 블럭(146) 에서, 토큰 레지스터들이 로드된다.
블럭(148) 에서, 토큰들은 벡터 프로세서들 사이에서 동기(同期)식으로 전송된다.
전송 타이밍은 제어 ASIC들에 의해 수신된 외부클럭신호에 의해 제어된다.
결정블럭(150) 에서, 벡터 프로세서가 공유메모리내에서 어떤 공유변수에 대한 액세스가 필요한지를 결정하기 위해 검사가 이루어진다.
만일 그렇다면, 결정블럭(152) 에서 벡터 프로세서는 자신이 자신의 토큰 레지스터에서 액세스 토큰을 수신할때까지 반드시 기다려야 한다.
만일 액세스 토큰이 토큰 레지스터에 없다면, 상기 프로세서는 블럭(148) 에서 계속된다.
일단 토큰이 수신되면, 블럭(154) 에서, 벡터 프로세서는 자신의 토큰 레지스터에 무시토큰을 기록함으로써 액세스 토큰을 제거한다. 그후 벡터 프로세서는 블록(156)에서 다른 프로세서들과의 충돌없이 공유변수들을 액세스한다.
공유메모리 액세스 동안, 오직 무시토큰들 만이 벡터 프로세서들 사이에 통과되며, 임의의 벡터프로세서와 공유메모리를 액세스하는 것도 예방한다.
공유메모리에 대한 액세스가 끝났다면, 액세스하는 벡터 프로세서는 액세스 토큰을 자신의 토큰 레지스터에 로드한다. 이러한 방법으로, 액세스 토큰은 프로세서간 토큰전달구성으로 다시 들어간다. 상기 토큰전달처리는 블럭(148) 에서 계속진행된다.
상기 프로세서간 메모리 액세스 구성은 메모리 액세스를 제어하기 위해 중앙감독을 필요로 하지않는 분산구조라는 점에서 유리하다.
따라서, 액세스 우선순위를 결정하기 위한 어떠한 중앙 중재자가 없을지라도, 각 벡터프로세서는 모든 시간에 걸쳐 공유메모리에 대한 올바른 액세스를 얻는다.
각 벡터 프로세서는 액세스 로직에 의해 공유메모리의 어느 부분이 보호되어지는지를 간단하게 알아야 하며, 공유메모리 액세스가 끝났을 때 자신의 토큰 레지스터에 액세스 토큰을 반환하여야만 한다.
따라서 공유메모리의 무결성(integrity) 은 상대적으로 단순한 방법으로 유지되어지며, 하드웨어 혹은 소프트웨어 필요요소들 면에서 볼때 매우 낮은 비용이든다.
(공유메모리 및 상호연결망)
중앙공유메모리를 이용하는 병렬컴퓨터에 있어서, 전체 시스템의 일관된 수행능력은 상호연결망 및 공유메모리의 대역폭에 의해 제한된다.
본 시스템에 있어서, 공유메모리 및 상호연결망 구조는 데이타 액세스들을 최소화한다. 메모리의 대역폭을 증가시키기 위해 그리고 상대적으로 느린 메모리 속도를 프로세서 속도에 필적시키기 위해 (프로세서 사이클 시간은 일반적으로 메모리 사이클 시간보다 4 내지 10배 빠르다), 메모리 인터리빙 계획이 사용된다.
본 시스템에 있어서, 1초당 1,280 백만바이트의 메모리 대역폭을 달성하기 위해 32-웨이 메모리 인터리빙이 사용된다.
제 9도를 참조하면, 공유메모리(14)는 4개의 버스인터페이스장치(BIU)(160), 8개의 포트 제어기(40), 8 × 8 × 40-비트 크로스바망(38), 8개의 메모리 제어기(162) 및 8개의 4-웨이 인터리브된 메모리 모듈(36)로 구성된다.
버스인터페이스장치(160) 는 고속버스(16)를 포트제어기(40)에 접속시키며; 각각의 버스인터페이스장치는 하나의 버스를 두개의 포트제어기에 접속시킨다.
모든 공유메모리의 구성성분은 40MHz 클럭 사이클로 동작한다. 두개의 포트제어기는 충돌하지 않고 교대하는 (alternating) 방법으로 각 사이클의 반대편 반(半) 사이클을 사용하여 하나의 고속버스와 통신한다. 버스인터페이스장치는 공유메모리내의 TTL-레벨로직은 BTL-레벨버스에 접속시킨다.
하나의 바람직한 실시예에서, 포트제어기(40)는 18,000 게이트로 된 CMOS 게이트- 배열 ASIC를 사용한다. 포트제어기는 벡터처리장치(20)로 부터의 메모리주소 명령어를 메모리제어기(162) 에 의해 실행될 수 있는 단순한 명령어로 번역하며 메모리 제어기와 함께 교차점스위치(crosspoint switches) 를 제어한다.
상호 연결망은 64개 교차점 스위치를 사용하는 8 × 8 × 40-비트 크로스바망으로써 조직된다. 하나의 실제적 실시예에서, 크로스바망은 별개로 발전된 쇼트키(Schottky) TTL송신기칩(chip)으로 구현되어 진다.
데이타에 대한 크로스바망의 깊이는 4-바이트이고, 제어신호들을 위한 부가적 라인이 더해지며 (총 40-비트)망의 주기는 40MHz이고, 크로스망의 전체 데이타 전송율은 1초당 1,280백만바이트이다.
크로스바망은 시스템의 다른 구성성분에 대해 적당한 자료처리속도 및 데이타 이용가능성을 제공한다. 크로스바망(38)은 항상 임의의 포트제어기(40)와 임의의 메모리 제어기(162)사이에 개별적 통로를 제공함으로써 8개의 포트제어기는 8개의 메모리 제어기와 동시에 통신하는 것이 가능하다.
메모리제어기(162) 는 포트제어기(40)로 부터 수신된 주소명령어로 부터의 각 데이터 워드에 대한 물리적 주소를 발생하며, 각 메모리제어기는 18,000개의 게이트로된 CMOS 게이트- 배열 CMOS를 포함한다. 각각의 메모리제어기는 4개의 인터리브된 DRAM메모리 모듈(36)을 제어하며, 1초당 160 백만바이트의 액세스 속도로 메모리 모듈로부터의 벡터 데이타를 액세스한다.
상이한 용량으로된 다수의 메모리 칩을 수용하기 위하여, 메모리 제어기 ASIC는 1 백만비트, 4백만 비트 혹은 16백만 비트 DRAM으로 동작가능하다.
각 메모리 제어기(162) 에 연결된 4개의 메모리 모듈(36)은 열(row) 벡터 데이터의 경우에 25나노초 액세스 시간을 제공하며, 상기 DRAM 모듈의 4-웨이 인터리빙 및 페이지 모드(page-mode) 액세스 능력을 이용할 수 있다. 메모리폭은 32- 비트이다.
상기 공유메모리는 8개의 메모리제어기를 가지고 있으므로, 각 제어기는 4개의 인터리브된 메모리 모듈을 제어하며, 전체 32개의 인터리브된 메모리 모듈들이 지지되며, 최대 10억바이트 (256 백만워드) 의 메모리 공간을 제공한다.
영상화 및 그래픽처리는 특정영상을 설명하는 정보의 2차원 블럭으로 수행되어지므로, 공유메모리내의 2차원 블럭데이타에 대한 효율적인 액세스 구성을 갖는 것이 필요하다. 본발명에 있어서, 공유메모리 주소발생기는 데이타의 블럭 혹은 블럭의 부분을 액세스하기위해 공유메모리로 전달되어져야만 하는 정보의 양을 감소시킨다.
일반적으로, 벡터 프로세서는 순차적 시퀀스로 된 임의의 데이타 지역요구가 제공된다면 하나의 명령어로 메모리 모듈(36)내에 있는 스칼라 데이타 항목, 컬럼(column) 혹은 열(row)벡터, 혹은 2차원 배열데이타를 액세스할 수 있다.
상기 주소발생기는 여러 제어장치를 통하여 병렬벡터처리장치, 그래픽 서브시스템 및 공유 메모리에 통합되어 있다.
종래의 메모리 주소지정 구성에 있어서, 데이타블럭은 배열 혹은 베이스 주소값 및 베이스로 부터의 오프세트값을 포함하는 주소명령어의 시퀀스를 메모리제어기에 제공함으로써 요구되어진다. 이러한 주소지정 방법은 일반적으로 일차원적으로 행해진다.
예를들어 메모리 주소는 메모리의 맨처음에서 부터 시작되며, 순차적 주소들이 열(row)을 따라 각 값을 위해 할당된다. 각각의 열은 다음 열로 순환된다.
예를들면, 주소 0 에서 시작하는 메모리공간 100 × 100에서, 배열 A가 공간 62의 처음부터 저장되어 있다고 하면, 배열 A의 3번째 값에 대한 요구는 절대주소인 (62, 3) 혹은 단순히 (65) 가 될수 있다. 상기 주소지정 방법이 2차원으로 수행된다면, 상기 요구는 베이스가 (62, 0) 에 있고 상기 공간내의 오프세트가 (3, 0) 예를들면 베이스로 부터 x-방향으로 3공간 및 y-방향으로 제로 공간임을 나타내는 (62, 0, 3, 0)이 될 것이다. 일반적으로, 메모리내에 순차적으로 배열된 데이타 전체에 대해 연속적인 요구가 이루어지며, 이것은 영상데이타가 그렇게 저장되어 있기 때문이다.
따라서, 데이타의 2개 열(row), 3개 값 폭에 대한 요구는 (62, 3), (62, 4), (62, 5), (162, 3), (162, 4), (162, 5)가 될 수도 있다.
대안으로, 각 데이타 워어드의 절대주소가 특정될 수도 있다. 예를들어, (65), (66), ..., (166), (167) 따라서, 12 혹은 6개의 주소들이 6개의 픽셀을 얻기 위해 필요로 되어진다.
이러한 액세스 요구의 순차적 관계를 이용하기 위하여, 본발명의 벡터 프로세서 제어 ASIC(52)는 감소된 크기의 주소요구를 형성한다.
본발명에 따르면, 상기 예는 [절대 베이스: 폭][절대 베이스: 높이]를 표현하는 주소요구[65:3][65:2]로 될 것이다. 이렇게 감소된 주소요구 세트는 포트제어기(60)의 주소발생기에서 수신된다. 이러한 주소요구는 우선 [65:3], [165:3]과 같은 일련의 일차원 요구로 분석되어 진다.
이러한 시퀀스의 각각은 크로스바망을 통하여 적당한 메모리제어기(162) 로 전송된다. 상기 메모리 제어기내의 주소발생기는 일차원 요구를 (65), (66), (67) 및 (165), (166), (167) 과 같은 영(零)차원 요구로 분석한다. 이러한 개별적인 요구의 각각은 특정 메모리 위치에 저장된 픽셀값을 반환하는 메모리모듈(36)로 보내진다.
따라서 6개 픽셀에 대한 요구는 상기 고속버스에 의해 운송되는 주소정보의 4조각 만큼 작은 것으로써 완성된다. 대역폭의 저축은 더큰 데이타블럭이 요구될 때 더욱 커진다.
유사한 주소발생 구성이 그래픽 서브시스템에 의해 구현된다. 공유메모리 주소발생기의 한 응용에서 줌(zoom) 능력을 지닌 비트블럭 전달장치(bit-blit)는 빠르고 효율적인 방법으로 원시영상을 얻기위해 주소발생기를 이용한다.
블럭전달 하드웨어는 메모리내 원시위치로 부터 같은 메모리 혹은 다른 메모리내의 목적 위치까지 픽셀정보를 전송하기 위해 사용된다.
Bit-blit 장치는 원시 및 목적 영상들의 위치를 식별하기 위해 여러개의 주소지정 및 카운터 레지스터를 이용한다. 원시 레지스터는 영상이 시작되는 위치를 특정하는 x-값 및 y-값을 포함하며, 원시영상의 폭(x- 길이) 과 높이(y- 길이) 를 포함한다.
목적 레지스터는 x 및 y 방향좌표, 및 소정목적영상의 폭 및 높이값은 포함한다. 본발명에서, bit-blit 목적 레지스터는 또한 x- 및 y- 줌(zoom) 인자들을 포함한다.
본발명의 bit-blit 장치에서 하드웨어 필요요소들을 감소시키기 위해, 상기 설명된 원시 레지스터들이 제거되며 공유메모리 주소발생 구성이 이용된다.
이러한 방법으로, 원시영상의 시작주소 혹은 베이스, 폭 및 높이가 그래픽 서브시스템에 의해 발생되고 공유메모리 제어 ASIC에 의해 처리된다.
공유메모리 액세스에 의해 발생된 픽셀의 흐름은 그래픽 서브시스템의 bit-blit 장치의 목적로직에 의해 처리된다. 상기 로직은 전체 라인 즉 폭값과 동일한 수의 픽셀이 수신될 때까지 버퍼내에 픽셀의 한라인의 저장을 제어한다.
상기 라인은 그후 x- 및 y- 줌 인자들에 따라서 비디오 메모리로 복사된다.
예를들면, 각각의 픽셀에 대해, 줌 인자 x 가 2 이면, 맨 처음(x, y)방향에서의 픽셀 시작은 목적영상내의 2개의 순차적 메모리 공간내로 읽혀진다.
이것은 목적영상의 길이를 두배로 만든다. 유사하며, 만일 줌인자 y 가 2이면, 버퍼내에 저장된 픽셀의 라인은 2개의 순차적 라인위치에 있는 목적영상으로 읽혀지게 될 것이며, 상기 줌인자 y 는 목적영상의 높이를 두배로 만든다.
공유메모리 주소발생기의 전체적인 통합 및 bit-blit 장치의 목적 모듈은 소프트웨어 제어를 필요로 하지 않는 줌능력을 가진 효율적인 bit-bllt 장치를 제공한다.
(그래픽 서브시스템 )
그래픽 서브시스템(18)은 영상을 드로잉(drawing) 하며, 보존하는 주요행위자이며, 또한 장면 설명으로 부터 현실적으로 음영된 3차원 영상발생을 위한 주요 행위자이다. 하나의 실제적 실시예에서, 그래픽 서브시스템(18)은 1 초당 약 200,000 Gouraud 채색된 다각형의 그래픽 수행능력을 제공할 수 있는 파이프라인구조로된 병렬구조로 이루어진다. 디스플레이 구성성분은 24- 비트 완전 컬러영상을 지원하며, 이중 프레임 버퍼(double frame buffers)가 부드러운 애니메이션(animation) 을 위해 통합되어 있다.
호스트터페이스는 영상화 및 그래픽 처리시스템과 연결된 호스트(host) 컴퓨터 사이에 1 초당 20백만 바이트의 전송속도를 제공한다.
제10도를 참조하면, 그래픽 엔진(24)은 2개의 독립된 다각형 처리 파이프라인(30), 4개의 bit-blit 삽입기(BBI) ASIC(166), Z-버퍼(168) 및 이중버퍼로 된 프레임버퍼(170), TMS34020 을 기초로 한 그래픽 프로세서 및 시스템 제어기(172), 오버레이 버퍼(174), 커서(cursor)발생기(176), RGB RAMDAC(178), 호스트(host)인터페이스(28), 명령어분배기(180), 및 영상블럭전달장치(184) 로 이루어진다.
상기 시스템 제어기(172) 는 호스트(host) 인터페이스를 유지하며, 시스템 전체에 대한 중앙제어기로써 역할을 하며, 오버레이버퍼(174) 를 제어한다.
하나의 실제적 실시예에서, 4메가 바이트 국부메모리(도시되지 않음)가 프로그램 및 상기 시스템제어기와 관련된 데이타의 저장을 위해 제공된다.
영상화 및 그래픽 처리시스템(10)과 호스트(host) 컴퓨터(도시되지 않음) 사이의 모든 통신은 그래픽 서브시스템내 호스트 인터페이스(28)에 의해 수행된다.
그래픽 서브시스템은 공유메모리(14)로/ 로부터 데이타를 로드하고 저장하기위해 두개의 고속버스(16)를 이용한다. 상기 두 고속버스중의 하나는 공유메모리(14)로부터 다각형 처리 파이프라인(10)로 그래픽 데이타를 로드하기 위해 사용된다.
또다른 버스는 공유메모리(14) 및 호스트 인터페이스(28) 및 그래픽 프로세서(172) 사이에 영상데이타, 프로그램 및 임의의 제어정보를 전송하기 위해 사용된다.
제11도를 참조하면, 처리파이프라인(30)의 전면 끝에 위치한 주프로세서(32)는 그래픽 엔진(24) 및 공유메모리(14) 사이의 통신을 책임진다.
한 실제적 실시예에서, 주프로세서는 주어진 장면을 랜더링(rendering)하는데 표현에 필요한 처리능력의 총량 또는 로드를 예상하고 모든 파이프 단계가 동량의 로드를 가지도록 분배하여 전체 처리 효율을 증가시킨다. 주프로세서는 물리적 데이타가 공유메모리내에 저장된 물체계층의 구조적 정보뿐만 아니라 주프로세서의 명령코드 및 데이타를 저장하기 위하여 주프로세서의 국부메모리로써 8K× 64 SRAM (186) 을 사용한다.
주프로세서에서 각 파이프라인은 다수의 파이프라인구조로된 단계를 포함하는 두 개의 파이프라인이 이어진다. 주프로세서는 상기 물체 계층으로 부터 추출된 다각형을 프로세서의 요청에 따라 상기 두 파이프라인의 맨 처음 단계로 분배한다.
두 파이프라인은 동일한 하드웨어 및 휨웨어(firmware)로 이루어지기 때문에, 상기 시스템은 파이프라인의 수를 증가 혹은 감소시킴으로써, 또는 각 파이프라인내에 포함된 프로세서 수를 변경시킴으로써 상기 그래픽 엔진의 더 높거나 더낮은 수행능력을 위해 쉽게 재설계 되어질 수 있다. 두개의 다각형 처리 파이프라인(30)은 3차원 컴퓨터 합성을 위해 전위처리(front-end processing)를 수행한다.
상기 파이프라인에 의해 제공되는 동작들은 기하학적 변형, 뒷면 추출(back-face culling), 조명(illumination), 클리핑(clipping), 투영(projection) 및 경사계산을 포함한다.
하나의 실제적 실시예에서, 상기 다각형 처리 파이프라인은 캘리포니아 산타클라라의 Intel사로 부터 얻을 수 있는 병렬파이프라인 구성에서 동작하는 9개의 i80860 CPU 구성된다. 주프로세서(32)는 물체계층을 관통함으로써 실제적인 다각형을 추출하기 위해 버스인터페이스장치(182) 를 통하여 공유메모리와 직접 통신하며, 다각형 처리작업들을 2개의 파이프라인에 분배된다. 각 파이프라인은 4개의 파이프라인 단계에 일치하는 4개의 다각형 프로세서(188) 를 갖는다.
주프로세서(32)는 다각형 표현작업들을 각 파이프라인 단계에 동적으로 할당하며, 상기 두 파이프라인의 8개 다각형 프로세서들 사이의 부하균형을 이루기 위해 그러한 방식으로 할당한다. 이러한 파이프라인의 계산결과는 히든(hidden) 평면제거와 연결하여 주사변환(scan conversion) 을 수행하는 4개의 BBI ASIC(166)(제10도) 로 입력된다.
4개의 파이프단계 각각은 다각형 프로세서(188), FIFO 버퍼(190) 및 데이타 버퍼(192)를 포함한다. 하나의 실제적 실시예에서, 각각의 파이프라인 단계는 변형, 조명, 클리핑 및 다각형 꼭지점의 표현을 포함하는 4개의 그래픽 처리 태스크(tasks) 중의 하나를 수행하도록 할당된다. 동일한 시퀀스방법내에서 모든다각형을 위해 4개 태스크의 각각의 수행되도록 그래픽 처리가 순차적으로 수행되어지기 때문에, 상기 프로세서에 순차적으로 연결하는 것이 당연하다.
따라서, 다각형 프로세서 1은 변형을 수행하며 상기 계산결과를 조명계산을 수행하는 다각형 프로세서 2에 전달하고, 등등으로 수행한다.
정보의 전달을 조정하기 위하여, 상기 프로세서는 선입선출(FIFO) 버퍼(190) 를 사용하여 연결된다. 각각의 다각형 프로세서는 이전단계의 FIFO 버퍼로 부터 데이타를 판독하여, 데이타를 처리하고 자신의 FIFO 버퍼에 결과를 기록한다.
이러한 특별한 데이타 결과 전달 구성의 사용으로, 다각형 프로세서 처리를 위한 데이터 액세스를 위해 시간을 소비하는 메모리 액세스 필요를 방지한다.
따라서, 그래픽 처리속도가 증가된다.
상기 처리단계를 수행하기 위해, 각각의 다각형 프로세서는 프로그램 및 프로그램 변수 데이타를 저장하기 위한 메모리를 필요로 한다.
많은 응용에서, 각각의 CPU는 자신의 개별적인 국부메모리가 제공된다.
개별적인 국부메모리 사용의 결점은 처리에 의해 필요로 되어질 수 있는 공간의 최대량을 -사실상 메모리 최대량이 드물게 필요로 될 때- 충당하기 위해 충분한 국부메모리 제공의 비효율성, 그리고 프로세서의 국부메모리내에서 공통 혹은 공유명령 및 데이터의 복사를 포함한다. 본발명은 개별적인 국부메모리 개념을 오직 각각의 다각형 프로세서만이 액세스 가능한 소형 국부공유메모리(194) (전체 시스템에 대해 이용가능한 거대 주공유메모리와 다름)로 대치한다. 4개의 원시 그래픽 처리기능을 수행하기 위해 필요한 다양한 그래픽 소프트웨어 루틴들은 국부공유메모리(194) 내에 저장되어 있다. 부가적으로, 각각의 다각형 프로세서는 처리하는 동안 임시값을 저장하기 위해 상기 공유메모리 공간을 이용할 수 있다.
모든 그래픽 루틴은 보통 국부공유메모리(194) 로 부터 액세스 가능하기 때문에 각 다각형 프로세서 특정 태스크 혹은 특정서브태스크에 영원히 고정되어지기보단 상이한 태스크 혹은 서브태스크에 동적으로 할당될 수 있다.
또한, 다각형 프로세서 사이에 FIF0 연결을 유지함으로써, 전체 그래픽 처리속도는 증가되며, 따라서 각각의 다각형 프로세서는 자신의 전임자(predecessor) 로 부터 다각형 정보를 얻기 위하여 국부공유메모리로/ 로부터 기록하고 판독할 필요가 없다.
국부공유메모리에 대한 기록 및 판독동작을 감소시킴으로써 그래픽 처리속도는 증가된다.
상기한 바와같이, 이점(利点)은 국부공유메모리를 이용하고, 균형된 부하방식으로 각각의 파이프라인 단계에 태스크를 동적으로 할당하기 위해 그래픽 처리태스크의 순차적 배열 시퀸스를 이용함으로써 얻어진다. 높은 수준에서, 각각의 다각형은 4개의 기본 그래픽 태스크가 완성된 후에 표현된다.
각각의 태스크는 일련의 서브태스크로 분석되어 질수 있으며, 각각의 서브태스크는 알려진 고정된 시퀀스로 순차적으로 수행된다. 몇몇 태스크를 위한 처리사이클 필요요소들은 다각형의 꼭지점의 수 그리고/ 혹은 장면내에서 시뮬레이트된 광원의 수에 달려있다. 임의의 주어진 경우에, 주프로세서는 상기 꼭지점 및 광원의 수로부터 각 태스크를 위해 필요한 처리 사이클의 수를 계산할 수 있으며 각각의 파이프라인 단계에 균등하게 상기 사이클을 할당할 수 있다.
각각의 다각형에 대해, 주프로세서는 처리 사이클의 전체수 및 처리필요 요소의 균형유지를 위해 파이프라인 단계 사이에 부하 범위를 평가한다.
이러한 부하균형은 사변형에서 사변형으로의 꼭지점 수가 변하고 장면에서 장면으로의 광원의 수가 변하기 때문에 매우 동적이다. 따라서 분석하기 위해 그리고 가능하게 변경시키기 위해 상기 시퀀스가 각각의 다각형에 관해 각각의 다각형 프로세서에 의해 수행되는 것이 바람직하다.
제 12A도를 참조하면, 각각 서브태스크로 분리된 4개의 주그래픽 태스크가 블럭 A-D로 도시되어 있다. 상기 서브태스크 블럭내에 있는 숫자 표지는 특정서브태스크를 실행하는 데 필요한 처리사이클의 근사수치이다.
이러한 근사수치는 사용된 다각형 프로세서의 특정 유형에 관한 처리파이프라인을 위해 결정된다. 태스크처리 사이클 필요요소들은 인텔 i80860 프로세서에 관해 도시되어 있다. 서브태스크 블럭에서, NV는 꼭지점의 수이고 NI는 시뮬레이트된 광원의 수이다. 처리사이클의 전체 수는 사이클 = 311 + 134(Nv) + 93(Nv)(NI) 에 의해 주어져 있다. 사이클의 값은 다각형에 대한 데이타가 공유메모리(14)로부터 수신되었을때 꼭지점의 수 및 시뮬레이트된 광원의 수로 부터 계산된다.
사이클의 수는 그후 각각의 다각형 프로세서에 의해 산출되어져야 할 코스트(cost), 공유된 코스트 값을 생산하기 위해 4로 나누어진다.
로드범위를 식별하기 위한 반복적 시퀀스는 주프로세서에 의해 개시되며, 주프로세서는 처리되어야 할 다음 다각형을 위한 꼭지점의 수 및 시뮬레이트된 광원의 수에 따라 서브태스크당 코스트을 포함하는 테이블을 갱신한다.
첫번째 프로세서 1 부터 시작하면, 프로세서의 사이클은 제로로 세트된다. 프로세서 1에 할당된 사이클의 수가 코스트보다 작은 동안, 프로세서의 사이클의 수는 다음 순차적 서브태스크의 코스트에 의해 증가된다.
프로세서 1의 사이클의 수가 코스트보다 크면, 프로세서 1의 전체 사이클의 수가 더 근사(近似)한 코스트로 감소되어져야 한다.
만일(코스트- 프로세서의 사이클 수- 마지막 서브태스크 코스트)이 (프로세서의 전체 사이클수- 마지막 서브태스크 코스트)보다 작으면 마지막 서브태스크의 코스트와 동일한 감소가 행해진다.
이러한 방식으로, 프로세서 사이클이 가능한 최적 코스트값에 근사하도록 할당된다.
코스트의 할당은 다음 프로세서 및 할당되지 않은 다음 서브태스크 코스트에 계속된다. 이러한 방식으로, 처리되어야 할 특정 다각형을 위한 부하범위가 인식되며 계산된 부하범위에 관련된 서브태스크할당이 주프로세서에 의해 적당한 다각형 프로세서로 보내진다.
반면에, 각각의 다각형 프로세서는 국부공유메모리(194) 로 부터 자신의 서브태스크에 관한 제어정보를 얻으며 따라서 다각형 정보를 처리한다.
부하균형처리의 한 예가 제 12B도에 도시되어 있다. 블럭 A-D에 레이블로 나타내진 사이클의 수는 꼭지점의 수 Nv = 4, 광원의 수 VI = 1인 다각형에 대응한다.
이러한 조건에서, 첫번째 태스크는 295 사이클, 두번째 태스크는 604 사이클, 세번째 타스크는 120 사이클 및 네번째 태스크는 200 사이클을 필요로 한다.
코스트는 대략 305사이클이다. 부하의 균형을 이루기 위해, 두번째 태스크는 각 프로세서가 대략 302 처리사이클을 수행하도록 두 프로세서 사이에 비슷하게 나누어진다.
세번째 및 네번째 태스크는 전체 320 사이클에 대해 결합된다.
따라서, 파이프라인 단계를 지나는 상기 부하균형은 각 파이프라인 단계에서 프로세서들 사이에 근사한 균형을 나타내는 295, 302, 302 및 320 사이클이다.
유사한 부하균형처리가 서브태스크로 나누어질 수 있고 태스크 처리 코스트가 인식가능한 변수에 의존하는 임의의 순차적 태스크 세트를 위해 이용되어질 수 있다.
부하균형 알고리즘 뿐만아니라 공유메모리 및 FIFO 연결 구성을 이용하여, 본 그래픽프로세서는 효율적인 방법으로 그래픽 데이타를 액세스하고 처리한다.
디스플레이 장치에 관하여, BBI ASIC(166) 는 다각형 처리 파이프라인에 의해 계산된 스팬 데이타(span data) 를 사용하여 프레임 버퍼(168) 로 영상드로잉(drawing) 을 수행한다. 스팬 데이타는 명령어 분배기(180) 에 의해 파이프라인 프로세서로부터 BBI ASIC로 전달된다. 하나의 실제적 실시예에서, 4개의 BBI ASIC는 1초당 40백만 픽셀의 속도로 영상픽셀 필링(filling) 밍 드로잉(drawing) 을 할수 있다.
BBI ASIC는 또한 프레임버퍼(168) 및 Z-버퍼(170) 내에 있는 메모리를 제어하며 장면재생(refresh) 기능을 수행한다. 다각형 처리 파이프라인과 4개 BBI ASIC의 결합은 1초당 200,000 이 넘은 Gouraud 채색을 가진 100- 픽셀 다각형을 전달할 수 있다. 빠른 드로잉 능력을 제공하기 위해 다수의 BBI, ASIC가 이용되어지므로, 명령어 분배기(180)는 그래픽 데이타의 각 조각(piece) 이 정해져 있는 특정 BBI ASIC (166)를 인식하여야 한다. 데이타에 인식비트 혹은 비트들을 더하여 다각형 처리 파이프 라인으로 부터 BBI ASIC로 전달된 데이타의 대역폭을 증가하기 보다는, 맨 마지막 단계의 다각형 프로세서의 주소메모리 내에서의 주소지정 구성이 사용된다.
일반적으로, 상기 구성은 논리정보가 정해지는 특정 BBI ASIC를 인식하는 논리정보를 포함하는 다각형 프로세서 메모리 주소를 필요로 한다.
제13도를 참조하면, 본발명의 주소태깅 프로토콜(address tagging protocol)은 FIF0 선택로직(200), FIF0 버퍼(190) 및 태크 디코오더(202) 를 사용한다.
맨 처음의 두개 구성성분은 다각형 파이프라인의 부분이고, 세번째 구성성분은 명령어 분배기(180) 의 부분이다.
제14도를 참조하면, 다각형 프로세서의 주소공간내에서의 FIF0 주소범위는 4개의 섹터로 분할되며, 각각의 섹터는 특정 BBI ASIC와 관련된다.
다각형 프로세서는 각각 하나의 BBI ASIC를 나타내는 4개의 상이한 FIF0에 기록되어야 하는 것처럼 보인다.
상기 주소는 각각의 주소의 최하위 2-비트가 특정 FIF0 0-3 을 인식하도록 분할된다.
예에서, 주소... 10000,... 10001,... 10010, 그리고 10011은 각각의 FIF0 0-3 과 관련된 상기 FIF0 메모리 위치이다.
최하위 2-비트 혹은 태그를 운송하는 프로세서 주소라인은 FIF0 (190)에 연결되어 있으며, 상기 프로세서는 32- 비트 그래픽 데이타와 함께 데이타로써 상기 2-비트를 받아들이며, 전체적으로 태그된 34- 비트 데이타를 형성한다.
FIF0를 선택하기 위하여, FIF0 기록 인에이블라인상에서 인에이블 신호를 발생시키기 위해 모두가 동일한 상위주소 비트가 FIF0 선택 로직(200)에 입력된다.
상기 선택로직은 다각형 프로세서 주소출력의 상위 30- 비트를 FIF0 주소범위의 상위 30비트를 나타내는 미리 저장된 숫자와 비교한다. 만일 매치(match) 가 발생하면, FIF0 선택라인은 하이(high)로 되며 FIF0는 인에이블된다. 이러한 실행은 태그된 34- 비트 데이타가 다각형 프로세서로 부터 수신되도록하며, FIF0 내 34- 비트가 명령어 분배기(180) 로 출력되도록 한다.
상기 명령어 분배기는 태그 비트를 떼어내어 태그 디코오더로 보낸다.
유사하게, 그래픽 데이타의 32- 비트가 BBI ASIC로 출력된다.
태그 디코오더는 태그로 부터 목적 BBI ASIC를 인식하며 BBI ASIC 선택라인을 사용하여 데이타를 수신하기 위해 적당한 BBI ASIC를 인에이블시킨다.
본질적으로 장치 인식라인으로써 다각형 프로세서의 주소라인을 이용함으로써, 다각형 프로세서와 상기 FIF0 사이의 데이타 폭을 증가시키지 않고 목적 BBI ASIC를 인식하는 것이 가능하다. 본발명은 일련의 목적장치에 할당된 메모리 공간 및 각각의
주소공간분할이 논리적 의미를 갖도록 분할되어질 수 있는 메모리공간을 포함하는 임의의 시스템에서 데이타를 태그하기 위해 이용되어 질수 있다.
임의의 상기 분할에 대한 참조는 참조된 데이타가 특정목적 장치에 할당된 태그로써 태그되어지도록 한다.
상기에서 논의된 바와같이, 상기 그래픽 서브시스템은 영상블럭전달(184) 을 통하여 비트 블럭전달 동안 원시 데이타(source data) 를 얻기 위하여 생략된 영상주소 지정구성을 이용한다. 그래픽 서브시스템의 나머지 부분은 상대적으로 잘 알려진 디스플레이 프로세서 및 호스트 인터페이스로써 구현될 수 있다.
본발명의 바람직한 실시예가 예증되고 설명되어진 반면에, 본발명의 정신 및 범위로부터 벗어남이 없이 다양한 변화가 만들어질 수 있음이 인식되어져야 할 것이다.

Claims (18)

  1. 캐쉬 메모리내에 저장된 데이터는 주 메모리내의 데이터에 대응하고, 상기 캐쉬 메모리는 별개의 지역들로 분할되어지며, 별개 지역들의 각각은 지역 레지스터와 연관되며 한 세트의 라인들로 더 분할되고, 한 세트 라인들중의 각각의 라인은 라인 레지스터와 연관되며, 그리고 각각의 메모리 주소가 지역태그 및 워어드태그를 포함하며, 상기 워어드태그의 각각은 라인태그 및 라인인덱스를 포함하는, 주소지정 가능한 캐쉬 메모리내에 캐쉬된 데이타를 주소지정하기 위한 방법에 있어서, 주어진 데이타 주소에 대한 상기 방법은, 주소로부터의 지역태그를 각각의 지역 레지스터의 내용과 비교하며,
    만일 상기 지역태그와 상기 지역 레지스터중의 하나의 레지스터의 내용이 매치(mactch)된다면, 상기 매치된 지역 레지스터와 연관된 지역을 매치된 지역으로써 참조하고, 주소로부터의 라인태그를 주소로부터의 라인인덱스에 의해 식별된 상기 매치된 지역을 위한 라인 레지스터의 내용과 비교하고, 만일 상기 라인태그가 상기 라인 레지스터의 내용과 매치된다면, 상기 라인 레지스터의 내용을 주소지정된 데이타로써 식별하는 단계를 포함하는 것을 특징으로 하는 주소지정 가능한 캐쉬 메모리내에 캐쉬된 데이타를 주소지정하는 방법.
  2. 제 1항에 있어서, 상기 방법은
    상기 지역태그 비교를 모니터링(monitoring)하고, 만일 상기 지역태그와 상기 지역레지스터의 내용과 매치되지 않는다면, 주 메모리로부터 주소지정된 데이타를 얻고, 캐쉬 메모리내에서 상기 지역 레지스터 세트로부터 지역 레지스터를 선택하고, 주소로부터 지역 태그를 상기 선택된 지역 레지스터로 로드하며, 그리고 주소로부터 라인태그를 상기 선택된 지역에 대한 라인 레지스터로 로드하고, 상기 라인 레지스터는 주소로부터의 라인인덱스에 의해식별되어지는 단계를 더 포함하는 것을 특징으로 하는 데이타 주소지정 방법.
  3. 제 2항에 있어서, 상기 방법은
    컴퓨터 프로그램을 실행하는 주소제어기예 의해 제어되며, 상기 모니터링 및 선택단계가 상기 컴퓨터 프로그램에 의해 수행되어지고 상기 선택단계가 최소 최근(least recently) 매치된 지역 레지스터를 선택하도록 하는 것을 특징으로 하는 데이타 주소지정 방법.
  4. 제 1항에 있어서, 상기 방법은
    상기 라인태그 비교를 모니터링하며, 만일 상기 라인태그가 상기 라인 레지스터의 내용과 매치되지 않는다면, 주 메모리로부터 주소지정된 데이타를 얻고,
    주소로부터의 라인태크를 주소로부터의 라인인덱스에 의해 식별된 라인레지스터로 로드하는 단계를 추가로 포함하는 것을 특징으로 하는 데이타 주소지정 방법.
  5. 제 4항에 있어서, 상기 방법은
    캐쉬 하드웨어와 연관되어 수행되어지며, 컴퓨터 프로그램을 실행하는 주소제어기에 의해 제어되며, 상기 모니터링 및 로딩단계는 상기 캐쉬 하드웨어에 수행되어지는 것을 특징으로 하는 데이타 주소지정 방법.
  6. 제 1항에 있어서, 상기 방법은
    상기 워어드 태그가 오프세트 값을 추가로 포함하며, 유효데이타로써 상기 라인 레지스터 내용을 식별하는 상기 단계가, 워어드의 수가 상기 라인 레지스터의 시작부터 어드레스의 오프세트와 같을 때까지 다수의 워어드가 저장되는 상기 라인 레지스터내의 한 워어드를 식별하는 단계를 포함하는 것을 특징으로 하는 데이타 주소지정 방법.
  7. 미리 설정된(preestablished) 순차적 태스크에 따라 한 세트의 데이타 처리를 위한 파이프라인 구성으로 된 처리 시스템에 있어서,
    (a) 프로그램 데이타 및 순차적 태스크 수행을 위한 한 세트의 순차적 서브 태스크 명령의 저장을 위한 국부 공유 메모리;
    (b) 서브태스크 명령을 수신하기 위해 그리고 프로그램 데이타를 전송하고 수신하기 위해 상기 국부 공유 메모리와 통신하기 위한 수단, 처리되어야 할 데이타를 수신하기 위한 버퍼, 및 수신된 데이타 처리를 위한 프로세서 수단을 각각 포함하는, 첫번째 연결된 프로세서 및 하나이상의 중간연결된 프로세서를 포함하고,상기 중간 연결된 프로세서는 상기 버퍼수단에 의해 다른 중간 연결된 프로세서 혹은 첫번째 연결된 프로세서에 연결되는 한세트의 순차적으로 연결된 프로세서; 및
    (c) 상기 연결된 프로세서의 각각이 상기 국부 공유 메모리로부터 대응하는 서브태스크 명령을 인출(fetch) 하도록 각각의 서브태스크를 상기 연결된 프로세서 중의 하나에 할당하고 상기 첫번째 연결된 프로세서에 한 세트의 데이타를 전송하기 위한 제어수단; 을 포함하며, 이에 따라 각각의 서브태스크가 상기 연결된 프로세서중의 하나에 의해 수행되고, 상기 연결된 프로세서는 상기 결과데이타를 상기 버퍼수단을 통하여 순차적으로 연결된 다음 프로세서로 전달하며 상기 다음 프로세서에서 상기 결과 데이타는 상기 프로세서 수단에 따라 처리되어지는 것을 특징으로 하는 파이프라인 구성으로 된 처리시스템.
  8. 제 7항에 있어서,
    각각의 서브데스크는 한 세트의 데이타 특성에 의해 결정됨으로써 변할 수도 있는 처리 필요요소와 관련되어 있으며,
    상기 제어수단은 상기 데이타 세트를 위해 상기 특성을 기초로 한 각각의 서브데스크의 처리필요요소를 결정하고, 상기 데이타 세트를 위한 전체 처리 필요요소를 생성하며, 상기 전체 처리 필요요소들이 상기 순차적으로 연결된 프로세서들 사이에서 대략 균형되도록 상기 서브태스크를 상기 순차적으로 연결된 프로세서에 할당하는 것을 특징으로 하는 파이프라인 구성으로 된 처리 시스템.
  9. 공유장치에 연결된 다수의 처리장치를 포함하는 멀티프로세서 시스템에 통합된 공유장치 액세스 시스템에 있어서, 상기 시스템은
    (a) 토큰전달신호를 발생하기 위한 클럭발생수단;
    (b) 액세스토큰 혹은 무시(null)토큰으로 이루어지는 토큰이 로드되는 각각의 처리장치와 연관된 토큰 레지스터;
    (c) 서로 연결된 레지스터 쌍 사이에 단일방향방식으로 상기 토큰의 전달을 허용하기 위해 연속하는 링형상에서 상기 토큰 레지스터 연결을 위한 토큰 통신수단;
    (d) 상기 토큰 레지스터중의 하나에 하나의 액세스토큰을 로딩하고 다른 토큰 레지스터에 무시토큰을 로딩하기 위한 레지스터 로딩수단;
    (e) (1) 상기 토큰통신수단에 의해 연결된 토큰 레지스터로부터 상기 연관된 처리장치내 토큰 레지스터를 로딩하기 위한 상기 클럭발생수단에 연결된 타이밍장치, 및
    (2) 상기 연관된 처리장치가 상기 공유장치에 대한 액세스를 필요로 할 때를 결정하고, 만일 그러한 액세스가 필요하다면 상기 액세스토큰으로 상기 연관된 토큰 레지스터가 로드되어질 때를 결정하고, 무시토큰으로 상기 연관된 토큰 레지스터를 로딩하며, 상기 연관된 처리장치에 공유장치 액세스가 가능하다는 것을 표시하기 위한 액세스수단을 포함하며 각각의 프로세서에 연관된 토큰로직장치; 를 포함하며, 이에 따라 상기 액세스토큰의 제어를 갖는 처리장치만이 상기 공유장치를 액세스할 수 있는 것을 특징으로 하는 공유장치 액세스 시스템.
  10. 제 9항에 있어서, 상기 토큰로직장치는 상기 연관된 처리장치가 상기 공유장치로의 액세스가 더이상 필요하지 않음을 나타낼때 상기 연관된 처리장치의 상기 토큰 레지스터내 액세스토큰을 로딩하기 위한 재로드(reload)수단을 포함하는 것을 특징으로 하는 공유장치 액세스 시스템.
  11. 제 9항에 있어서, 상기 액세스수단은 컴퓨터 프로그램을 실행하는 주소제어기에 의해 제어되며, 상기 공유장치에 대한 상기 액세스가 필요할 때를 결정하고 공유장치 액세스가 가능함을 상기 연관된 처리장치에 알려주는 것은 상기 컴퓨터 프로그램에 의해 제어되는 것을 특징으로 하는 공유장치 액세스 시스템.
  12. 알려진 패턴에 따라 번호의 시퀀스를 발생하기 위한 시퀀스 발생기에 있어서, 어떤 결과를 생성하기 위해 다수의 입력을 수신하고 결합하기 위한 가산기;
    상기 가산기에 연결된 베이스 주소 레지스터의 내용을 상기 가산기에 입력으로써 전송하기 위해 그리고 상기 가산기로부터의 결과를 상기 베이스 주소 레지스터를 위한 새로운 내용으로써 수신하기 위해 상기 가산기에 연결된 베이스 주소 레지스터;
    각각의 서브패턴 목록이 증가 필드 및 다음 목록필드를 포함하는 다수의 서브패턴 목록을 포함하며, 현재의 서브패턴 목록에 대한 증가 필드의 내용을 상기 가산기에 입력으로써 전송하기 위해 상기 가산기에 연결되어지는 증가 테이블; 및
    (1) 베이스 주소를 상기 베이스 주소 레지스터로 로딩하고 현재의 서브패턴 목록을 선택하고;
    (2) 상기 베이스 주소 레지스터가 상기 가산기로부터의 결과를 수신하도록 야기하고, 상기 현재 서브패턴 목록내 상기 다음 목록값을 기초로 한 상기 다수의 서브패턴 목록으로부터 하나의 새로운 현재 서브패턴 목록을 선택하며, 그리고
    (3) 상기 가산기로부터의 상기 결과가 상기 증가 테이블 목록 및 상기 베이스 주소에 의해 표현되는 하나의 시퀀스가 되도록 상기 패턴이 끝날 때까지 서브스텝(2) 을 반복하는 제어수단; 으로 구성되고,
    상기 증가 테이블 서브패턴 목록은 또한 하나의 카운트 필드를 포함하고, 상기 제어수단은 상기 현재 서브패턴 목록내 상기 다음 목록을 기초로 한 하나의 새로운 현재 서브패턴 목록을 선택하기 전에 상기 현재 서브패턴 목록내 상기 카운트 값과 같은 횟수동안 상기 현재 서브패턴 목록을 상기 새로운 서브패턴 목록으로써 선택하는 것을 특징으로 하는 시퀀스 발생기.
  13. 알려진 패턴에 따라 번호의 시퀀스를 발생하기 위한 시퀀스 발생기에 있어서, 어떤 결과를 생성하기 위해 다수의 입력을 수신하고 결합하기 위한 가산기;
    상기 가산기에 연결된 베이스 주소 레지스터의 내용을 상기 가산기에 입력으로써 전송하기 위해 그리고 상기 가산기로부터의 결과를 상기 베이스 주소 레지스터를 위한 새로운 내용으로써 수신하기 위해 상기 가산기에 연결된 베이스 주소 레지스터;
    각각의 서브패턴 목록이 증가 필드 및 다음 목록필드를 포함하는 다수의 서브패턴 목록을 포함하며, 현재의 서브패턴 목록에 대한 증가 필드의 내용을 상기 가산기에 입력으로써 전송하기 위해 상기 가산기에 연결되어지는 증가 테이블, 및
    (1) 베이스 주소를 상기 베이스 주소 레지스터로 로딩하고 현재의 서브패턴 목록을 선택하고;
    (2) 상기 베이스 주소 레지스터가 상기 가산기로부터의 결과를 수신하도록 야기하고, 상기 현재 서브패턴 목록내 상기 다음 목록값을 기초로 한 상기 다수의 서브패턴 목록으로부터 하나의 새로운 현재 서브패턴 목록을 선택하며, 그리고
    (3) 상기 가산기로부터의 상기 결과가 상기 증가 테이블 목록 및 상기 베이스 주소에 의해 표현되는 하나의 시퀀스가 되도록 상기 패턴이 끝날 때까지 서브스텝(2) 을 반복하는 제어수단; 으로 구성되고,
    상기 증가 테이블 서브패턴 목록은 또한 하나의 조건필드를 포함하고, 상기 제어수단은 상기 현재 서브패턴 목록에 대한 상기 조건필드내 값으로부터 조건처리를 식별하고 상기 조건처리에 따라 상기 새로운 현재 서브패턴 목록을 결정하는 것을 특징으로 하는 시퀀스 발생기.
  14. 서브패턴 목록 각각이 증가 필드 및 다음 목록필드를 포함하는 다수의 상기 서브패턴목록을 포함하며, 하나의 주소결과를 산출하기 위해 증가 필드의 내용과 베이스 주소 레지스터의 내용을 결합하는 가산기에 연결되는 증가 테이블을 포함하는 시퀀스 발생기에 의해 발생되는 시퀀스를 위한 패턴을 수립하는 방법에 있어서,상기 방법은 시퀀스를 산출하기 위해 하나이상의 횟수가 반복되어질 수 있는 시퀀스내에서 증가 패턴을 식별하는 단계;
    상기 패턴내에서 하나이상의 횟수가 반복되어지는 하나이상의 증가를 포함하는 서브패턴이 되도록 상기 패턴내에서의 한 세트의 서브패턴을 식별하는 단계;
    서브패턴내에서의 각각의 증가를 위해, 상기 서브패턴내 다음 순차적 증가를 식별하는 단계; 및
    상기 다음 순차적 증가를 위한 서브패턴 목록을 인식하는 상기 다음 인덱스 값과 증가 값 및 다음 인덱스값을 각각의 목록내에서 포함하는 각각의 상기 서브패턴 증가에 대한 서브패턴 목록테이블을 형성하는 단계; 를 포함하는 것을 특징으로 하는 패턴수립방법.
  15. 제 14항에 있어서, 상기 방법은
    서브패턴내에서 순차적으로 반복되어지는 특정 증가의 횟수를 위한 재로드값을 식별하는 단계; 및
    상기 증가를 위한 상기 재로드값을 서브패턴 목록의 상기 테이블로 입력(entering)시키는 단계를 추가로 포함하는 것을 특징으로 하는 패턴수립방법.
  16. 제 14항에 있어서, 상기 방법은
    상기 패턴에 관하여 상기 증가의 반복을 기초로 한 상기 서브패턴내에서 상기 증가의 순차적 정렬을 설명하는 한 세트의 조건을 식별하는 단계, 그리고 상기각각의 조건을 코드화하며 다음 서브패턴 목록을 결정할 때 고려되는 조건을 식별하는 상기 증가 테이블내에 각각의 증가 목록에 관한 코드화하고 조건코드를 입력하는 단계를 추가로 포함하는 것을 특징으로 하는 패턴수립방법.
  17. 주소지정가능한 메모리 공간을 가지는 프로세서와 복수의 목적 장치의 하나 사이에서 전송되어지는 데이터에 대한 장치식별을 발생하는 방법에 있어서, 상기 방법은
    주소지정 가능한 메모리 공간을 상기 주소지정 가능한 메모리 공간내의 주소의 고유하게 식별가능한 태그부를 각각의 섹터에 할당함으로써 다수의 섹터로 분할하고, 상기 각각의 태그부는 목적 장치의 하나를 식별하는 단계;
    프로세서에서, 전송된 데이터가 주소지정가능한 메모리 공간내에 저장되는 데이터 주소를 수신하는 단계;
    프로세서를 사용하여 상기 데이터 주소로부터 태그부를 추출하고, 상기 태그부를 태그된 데이터를 형성하기 위해 전송된 데이터에 쇠사슬 모양으로 연결하는 단계;
    상기 태그된 데이터를 프로세서로부터 장치 식별자로 전송하는 단계; 및
    장치 식별자를 사용하여 태그된 데이터로부터 태그부를 추출하고, 태그부로부터 목적장치를 식별하고, 태그된 데이터로부터 전송된 데이터를 추출하고, 그리고 전송된 데이터를 식별된 목적장치로 보내는 단계;를 포함하는 것을 특징으로 하는 장치식별을 발생하는 방법.
  18. 멀티비트 데이터 출력과 분리된 멀티비트 주소 출력을 가지는 프로세서가 목적 장치가 의해 공유되고, 선택적으로 그래픽 데이터의 바이트를 각각에 제공하도록 그래픽 데이터의 바이트의 추가적인 처리를 위한 복수의 목적장치에 그래픽 데이터 바이트를 발생시키기 위해 프로세서로부터 그래픽 데이터의 바이트를 전송하는데 사용되는 목적 장치식별을 발생하는 방법에 있어서, 상기 방법은
    그래픽 데이터의 바이트를 공유 프로세서 데이터 출력으로부터 프로세서 데이터 출력 대역폭에 대응하는 대역폭을 가지는 데이터버스에 전송하는 단계;
    공유 프로세서 어드레스 출력과, 그래픽 데이터를 수신하는 특정 목적 장치를 식별하기 위한 태그를 포함하는 공유 프로세서 주소 출력의 첫부분을 포함하는 데이터 패킷을 형성하기 위한, 공유 프로세서 데이터 출력의 바이트와 공유 프로세서 주소 출력의 첫부분을 쇠사슬 모양으로 연결하는 단계;
    그래픽 데이터의 바이트와 태그를 포함하는 전 데이터 패킷을 버퍼에 저장하는 단계;
    전 데이터 패킷의 대역폭에 대응하는 대역폭을 가지는 제2데이터 버스에 데이터 패킷을 출력하기 위해 버퍼를 트리거링(triggering)하는 단계;
    데이터 패킷을 태그를 그래픽 데이터를 수신하는 특정 목적 장치를 식별하는 디코더에 공급하고, 상기 디코더를 사용하여 그래픽 데이터를 수신하는 상기 특정 목적 장치를 트리거하는 단계; 및
    데이터 패킷의 그래픽 데이터 부분을 상기 특정 목적 장치로 태그없이 공급하는 단계;를 포함하는 것을 특징으로 하는 장치식별을 발생하는 방법.
KR1019940700433A 1991-08-13 1992-08-12 영상화및그래픽처리시스템내에서의다차원주소발생방법 KR100319768B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020017006042A KR100319770B1 (ko) 1991-08-13 1992-08-12 영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US74458791A 1991-08-13 1991-08-13
US744,587 1991-08-13
PCT/US1992/006737 WO1993004429A2 (en) 1991-08-13 1992-08-12 Method of generating multidimensional addresses in an imaging and graphics processing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020017006042A Division KR100319770B1 (ko) 1991-08-13 1992-08-12 영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법

Publications (1)

Publication Number Publication Date
KR100319768B1 true KR100319768B1 (ko) 2002-04-22

Family

ID=24993264

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020017006042A KR100319770B1 (ko) 1991-08-13 1992-08-12 영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법
KR1019940700433A KR100319768B1 (ko) 1991-08-13 1992-08-12 영상화및그래픽처리시스템내에서의다차원주소발생방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020017006042A KR100319770B1 (ko) 1991-08-13 1992-08-12 영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법

Country Status (5)

Country Link
US (1) US5467459A (ko)
EP (1) EP0739513B1 (ko)
JP (1) JPH06509893A (ko)
KR (2) KR100319770B1 (ko)
WO (1) WO1993004429A2 (ko)

Families Citing this family (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5388841A (en) * 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
JP2931490B2 (ja) * 1992-12-18 1999-08-09 富士通株式会社 並列処理方式
US6116768A (en) * 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5832290A (en) * 1994-06-13 1998-11-03 Hewlett-Packard Co. Apparatus, systems and method for improving memory bandwidth utilization in vector processing systems
EP0713181A1 (en) * 1994-11-16 1996-05-22 International Business Machines Corporation Data processing system including mechanism for storing address tags
US5835949A (en) * 1994-12-27 1998-11-10 National Semiconductor Corporation Method of identifying and self-modifying code
US6081880A (en) * 1995-03-09 2000-06-27 Lsi Logic Corporation Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file
US5966529A (en) * 1995-05-15 1999-10-12 Zsp Corporation Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution
US5860137A (en) * 1995-07-21 1999-01-12 Emc Corporation Dynamic load balancing
US5900025A (en) * 1995-09-12 1999-05-04 Zsp Corporation Processor having a hierarchical control register file and methods for operating the same
US5844571A (en) * 1996-06-10 1998-12-01 International Business Machines Corporation Z buffer bandwidth reductions via split transactions
EP0814412B1 (en) * 1996-06-19 2003-03-12 Motorola, Inc. A digital signal processor and a method for interfacing a digital signal processor
US6070002A (en) * 1996-09-13 2000-05-30 Silicon Graphics, Inc. System software for use in a graphics computer system having a shared system memory
US6317134B1 (en) 1996-09-13 2001-11-13 Silicon Graphics, Inc. System software for use in a graphics computer system having a shared system memory and supporting DM Pbuffers and other constructs aliased as DM buffers
US5940086A (en) * 1997-01-10 1999-08-17 Hewlett Packard Company System and method for dynamically allocating data among geometry accelerators in a computer graphics system
US6339780B1 (en) * 1997-05-06 2002-01-15 Microsoft Corporation Loading status in a hypermedia browser having a limited available display area
US6008813A (en) * 1997-08-01 1999-12-28 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Real-time PC based volume rendering system
US6333743B1 (en) * 1997-10-23 2001-12-25 Silicon Graphics, Inc. Method and apparatus for providing image and graphics processing using a graphics rendering engine
US6437796B2 (en) * 1998-02-17 2002-08-20 Sun Microsystems, Inc. Multiple processor visibility search system and method
JP3573614B2 (ja) * 1998-03-05 2004-10-06 株式会社日立製作所 画像処理装置及び画像処理システム
US6230177B1 (en) 1998-06-12 2001-05-08 Silicon Graphics, Inc. Method and apparatus for performing fast fourier transforms
EP1112539A2 (en) * 1998-09-18 2001-07-04 Clearspeed Technology Limited Computer system comprising latency tolerant and intolerant modules
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
US6801207B1 (en) 1998-10-09 2004-10-05 Advanced Micro Devices, Inc. Multimedia processor employing a shared CPU-graphics cache
US6483516B1 (en) 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6731295B1 (en) * 1998-11-09 2004-05-04 Broadcom Corporation Graphics display system with window descriptors
US6356265B1 (en) 1998-11-12 2002-03-12 Terarecon, Inc. Method and apparatus for modulating lighting with gradient magnitudes of volume data in a rendering pipeline
US6342885B1 (en) 1998-11-12 2002-01-29 Tera Recon Inc. Method and apparatus for illuminating volume data in a rendering pipeline
US6411296B1 (en) 1998-11-12 2002-06-25 Trrarecon, Inc. Method and apparatus for applying modulated lighting to volume data in a rendering pipeline
US6532017B1 (en) 1998-11-12 2003-03-11 Terarecon, Inc. Volume rendering pipeline
US6512517B1 (en) 1998-11-12 2003-01-28 Terarecon, Inc. Volume rendering integrated circuit
US6426749B1 (en) 1998-11-12 2002-07-30 Terarecon, Inc. Method and apparatus for mapping reflectance while illuminating volume data in a rendering pipeline
US6404429B1 (en) 1998-11-12 2002-06-11 Terarecon, Inc. Method for modulating volume samples with gradient magnitude vectors and step functions
US6297799B1 (en) * 1998-11-12 2001-10-02 James Knittel Three-dimensional cursor for a real-time volume rendering system
US6369816B1 (en) 1998-11-12 2002-04-09 Terarecon, Inc. Method for modulating volume samples using gradient magnitudes and complex functions over a range of values
JP2000148999A (ja) * 1998-11-13 2000-05-30 Minolta Co Ltd データ処理システム
US6445386B1 (en) * 1999-01-15 2002-09-03 Intel Corporation Method and apparatus for stretch blitting using a 3D pipeline
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6717577B1 (en) * 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US6717989B1 (en) * 1999-11-03 2004-04-06 Ati International Srl Video decoding apparatus and method for a shared display memory system
US6573880B1 (en) * 1999-11-16 2003-06-03 Xerox Corporation Applications for electronic reusable paper
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US6785743B1 (en) * 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7184059B1 (en) 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
US6980218B1 (en) 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US7061502B1 (en) 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US7576748B2 (en) 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
GB0028354D0 (en) * 2000-11-21 2001-01-03 Aspex Technology Ltd Improvements relating to memory addressing
US6925520B2 (en) * 2001-05-31 2005-08-02 Sun Microsystems, Inc. Self-optimizing crossbar switch
US7589737B2 (en) * 2001-10-31 2009-09-15 Hewlett-Packard Development Company, L.P. System and method for communicating graphics image data over a communication network
GB0130534D0 (en) * 2001-12-20 2002-02-06 Aspex Technology Ltd Improvements relating to data transfer addressing
US6683614B2 (en) * 2001-12-21 2004-01-27 Hewlett-Packard Development Company, L.P. System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
US7158141B2 (en) * 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US20040003022A1 (en) * 2002-06-27 2004-01-01 International Business Machines Corporation Method and system for using modulo arithmetic to distribute processing over multiple processors
EP1494074A1 (en) * 2003-06-30 2005-01-05 ASML Netherlands B.V. Lithographic apparatus and device manufacturing method
US7760804B2 (en) * 2004-06-21 2010-07-20 Intel Corporation Efficient use of a render cache
KR100726101B1 (ko) * 2005-04-29 2007-06-12 (주)씨앤에스 테크놀로지 메모리 제어 시스템
US7788635B2 (en) * 2005-07-15 2010-08-31 Sony Computer Entertainment Inc. Technique for processing a computer program
WO2007115425A1 (en) * 2006-03-30 2007-10-18 Intel Corporation Method and apparatus for supporting heterogeneous virtualization
US8145749B2 (en) * 2008-08-11 2012-03-27 International Business Machines Corporation Data processing in a hybrid computing environment
US7984267B2 (en) * 2008-09-04 2011-07-19 International Business Machines Corporation Message passing module in hybrid computing system starting and sending operation information to service program for accelerator to execute application program
US8141102B2 (en) * 2008-09-04 2012-03-20 International Business Machines Corporation Data processing in a hybrid computing environment
US8230442B2 (en) 2008-09-05 2012-07-24 International Business Machines Corporation Executing an accelerator application program in a hybrid computing environment
US8689218B1 (en) 2008-10-15 2014-04-01 Octasic Inc. Method for sharing a resource and circuit making use of same
US8543750B1 (en) * 2008-10-15 2013-09-24 Octasic Inc. Method for sharing a resource and circuit making use of same
US8713285B2 (en) * 2008-12-09 2014-04-29 Shlomo Selim Rakib Address generation unit for accessing a multi-dimensional data structure in a desired pattern
US8527734B2 (en) 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
US9286232B2 (en) * 2009-01-26 2016-03-15 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a cache of ranges of currently registered virtual addresses
US8843880B2 (en) * 2009-01-27 2014-09-23 International Business Machines Corporation Software development for a hybrid computing environment
US8255909B2 (en) 2009-01-28 2012-08-28 International Business Machines Corporation Synchronizing access to resources in a hybrid computing environment
US8001206B2 (en) * 2009-01-29 2011-08-16 International Business Machines Corporation Broadcasting data in a hybrid computing environment
US20100191923A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data Processing In A Computing Environment
US9170864B2 (en) * 2009-01-29 2015-10-27 International Business Machines Corporation Data processing in a hybrid computing environment
US8010718B2 (en) 2009-02-03 2011-08-30 International Business Machines Corporation Direct memory access in a hybrid computing environment
US8037217B2 (en) * 2009-04-23 2011-10-11 International Business Machines Corporation Direct memory access in a hybrid computing environment
US8180972B2 (en) 2009-08-07 2012-05-15 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment by maintaining remote memory values locally
US9417905B2 (en) * 2010-02-03 2016-08-16 International Business Machines Corporation Terminating an accelerator application program in a hybrid computing environment
US8578132B2 (en) * 2010-03-29 2013-11-05 International Business Machines Corporation Direct injection of data to be transferred in a hybrid computing environment
US9015443B2 (en) 2010-04-30 2015-04-21 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment
JP5574816B2 (ja) * 2010-05-14 2014-08-20 キヤノン株式会社 データ処理装置及びデータ処理方法
JP5618670B2 (ja) 2010-07-21 2014-11-05 キヤノン株式会社 データ処理装置及びその制御方法
CN104040500B (zh) * 2011-11-15 2018-03-30 英特尔公司 基于线程相似性的调度线程执行
KR102099914B1 (ko) * 2013-10-29 2020-05-15 삼성전자주식회사 영상 처리 장치 및 영상 처리 방법
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US9798377B2 (en) 2014-10-08 2017-10-24 Apple Inc. Methods and apparatus for recovering errors with an inter-processor communication link between independently operable processors
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10558580B2 (en) 2016-02-29 2020-02-11 Apple Inc. Methods and apparatus for loading firmware on demand
US10191859B2 (en) 2016-03-31 2019-01-29 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10551902B2 (en) 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US11899669B2 (en) * 2017-03-20 2024-02-13 Carnegie Mellon University Searching of data structures in pre-processing data for a machine learning classifier
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10789110B2 (en) 2018-09-28 2020-09-29 Apple Inc. Methods and apparatus for correcting out-of-order data transactions between processors
US10838450B2 (en) 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
EP3896565B1 (en) 2020-04-16 2024-03-06 NXP USA, Inc. Memory address generator
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE334479C (de) * 1919-12-07 1921-03-14 Plath Fa C Erschuetterungsdaempfung an Kompassen
US4546451A (en) * 1982-02-12 1985-10-08 Metheus Corporation Raster graphics display refresh memory architecture offering rapid access speed

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE788028A (fr) * 1971-08-25 1973-02-26 Siemens Ag Memoire associative
US4300192A (en) * 1974-04-18 1981-11-10 Honeywell Information Systems Inc. Method and means for storing and accessing information in a shared access multiprogrammed data processing system
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
US4484265A (en) * 1981-11-06 1984-11-20 Westinghouse Electric Corp. Corner turn memory address generator
US4819152A (en) * 1985-04-05 1989-04-04 Raytheon Company Method and apparatus for addressing a memory by array transformations
US4920504A (en) * 1985-09-17 1990-04-24 Nec Corporation Display managing arrangement with a display memory divided into a matrix of memory blocks, each serving as a unit for display management
US4730251A (en) * 1985-10-28 1988-03-08 International Business Machines Corporation Automatic I/O address assignment
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
JP2549642B2 (ja) * 1986-12-26 1996-10-30 株式会社東芝 画像処理装置
DE3704104A1 (de) * 1987-02-07 1988-08-18 Licentia Gmbh Einrichtung zur uebertragung von daten von einem mikrorechner auf interface-bausteine
JPS63244245A (ja) * 1987-03-31 1988-10-11 Toshiba Corp 並列アクセス可能な多次元メモリ装置
US4914577A (en) * 1987-07-16 1990-04-03 Icon International, Inc. Dynamic memory management system and method
CA1301367C (en) * 1988-03-24 1992-05-19 David James Ayers Pseudo set-associative memory cacheing arrangement
CA1311063C (en) * 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US5047958A (en) * 1989-06-15 1991-09-10 Digital Equipment Corporation Linear address conversion

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE334479C (de) * 1919-12-07 1921-03-14 Plath Fa C Erschuetterungsdaempfung an Kompassen
US4546451A (en) * 1982-02-12 1985-10-08 Metheus Corporation Raster graphics display refresh memory architecture offering rapid access speed

Also Published As

Publication number Publication date
WO1993004429A2 (en) 1993-03-04
US5467459A (en) 1995-11-14
WO1993004429A3 (en) 1993-04-01
KR100319770B1 (ko) 2002-01-16
EP0739513B1 (en) 1999-10-27
EP0739513A4 (en) 1997-03-05
JPH06509893A (ja) 1994-11-02
EP0739513A1 (en) 1996-10-30

Similar Documents

Publication Publication Date Title
KR100319768B1 (ko) 영상화및그래픽처리시스템내에서의다차원주소발생방법
US5774133A (en) Computer system with improved pixel processing capabilities
US6192384B1 (en) System and method for performing compound vector operations
US11604649B2 (en) Techniques for efficiently transferring data to a processor
US11106261B2 (en) Optimal operating point estimator for hardware operating under a shared power/thermal constraint
US8982140B2 (en) Hierarchical memory addressing
US10810784B1 (en) Techniques for preloading textures in rendering graphics
US11379420B2 (en) Decompression techniques for processing compressed data suitable for artificial neural networks
KR20010031192A (ko) 기계시각시스템에서의 영상데이터와 같은 논리적으로인접한 데이터샘플들을 위한 데이터처리시스템
CN103885893A (zh) 用于访问内容寻址存储器的技术
US11429534B2 (en) Addressing cache slices in a last level cache
US10699427B2 (en) Method and apparatus for obtaining sampled positions of texturing operations
US11907717B2 (en) Techniques for efficiently transferring data to a processor
US20110072438A1 (en) Fast mapping table register file allocation algorithm for simt processors
CN112783554A (zh) 用于程序间数据交换的持久便签内存
US20190278574A1 (en) Techniques for transforming serial program code into kernels for execution on a parallel processor
CN112749120A (zh) 将数据有效地传输至处理器的技术
CN116775518A (zh) 用于高效访问多维数据结构和/或其他大型数据块的方法和装置
US10979176B1 (en) Codebook to reduce error growth arising from channel errors
US20230297499A1 (en) Locating a memory unit associated with a memory address utilizing a mapper
WO1992012496A1 (en) Computer system with enhanced image and graphics capabilities
US20200250111A1 (en) Data processing systems
CN116775519A (zh) 用于高效访问多维数据结构和/或其他大型数据块的方法和装置
JPH07509795A (ja) アドバンスド大規模並列計算機
CN116774968A (zh) 具有一组线程束的高效矩阵乘法和加法

Legal Events

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

Payment date: 20110221

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee