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

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

Info

Publication number
KR100319770B1
KR100319770B1 KR1020017006042A KR20017006042A KR100319770B1 KR 100319770 B1 KR100319770 B1 KR 100319770B1 KR 1020017006042 A KR1020017006042 A KR 1020017006042A KR 20017006042 A KR20017006042 A KR 20017006042A KR 100319770 B1 KR100319770 B1 KR 100319770B1
Authority
KR
South Korea
Prior art keywords
address
value
sequence
dimensional
memory
Prior art date
Application number
KR1020017006042A
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 마거리트 와그너-달
Application granted granted Critical
Publication of KR100319770B1 publication Critical patent/KR100319770B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Graphics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

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

Description

영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법{METHOD OF GENERATING MULTIDIMENSIONAL ADDRESSES IN AN IMAGING AND GRAPHICS PROCESSING SYSTEM}
발명의 기술분야
본발명은 영상화 및 그래픽 처리를 위한 시스템이며, 특히 영상화 및 그래픽 처리속도에 있어서 상대적으로 동등( 同等 )한 속도를 제공하는 워크스테이션이다.
발명의 배경
영상화, 혹은 영상처리라 함은 영상의 질높임, 복원, 재현, 압축, 해제를 포함한다. 즉, 본래의 영상으로 부터 새로운 영상을 발생시키는 임의의 프로세스이다.
반면에 컴퓨터 그래픽은 다각형 및 선과 같은 대상의 데이타 베이스로부터 영상을 발생시킨다. 전통적으로, 영상화 및 그래픽 시스템은 각 분야에서 별개의처리필요조건들로 인해 별개로 발전되어 왔다. 영상화 및 그래픽 능력 모두를 필요로 하는 응용분야는 점차 증가되고 있다. 영상화 및 그래픽 사용의 증대로 인해 영상화 혹은 그래픽에 적합한 특수한 컴퓨터 구조가 발전되어 왔다. 많은 워크스테이션들이 영상화 및 그래픽 처리 능력을 결합할지라도 두 유형을 고속(高速)으로 처리 가능한 워크스테이션은 많지 않다. 따라서 사용자는 각각의 분야에서 우수한 두개의 개별적인 시스템, 혹은 한 분야에선 고속처리 그리고 다른 분야에선 저속처리능력을 제공하는 결합된 시스템을 이용하는 것이 요구되어졌다. 상기한 바와같이, 영상화 혹은 그래픽 처리를 위해 여러 종류의 특수 목적 워크스테이션이 고안되고 상용화되어 왔다. 이것들 가운데, 아던트 타이탄 그래픽 수퍼컴퓨터(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)는 소프트웨어 제어에 의해 수행되는 것이 바람직하다.
데이타 캐슁방법은 만일 라인 태그가 라인 레지스터의 내용과 매치(match) 하지 않으면 주 메모리로 부터 주소지정된 데이타를 얻는 단계를 또한 포함한다. 만일 어떠한 매치도 일어나지 않는다면, 주소지정된 데이타는 주 메모리로 부터 얻어지며, 캐쉬로 로드된다. 따라서 데이타 주소로 부터의 라인 태그는 라인 레지스터로 로드되며; 라인 레지스터는 상기 주소로 부터의 라인 인덱스에 의해 식별된다. 바람직한 실시예에서, 라인태그 관리는 데이타 캐슁 하드웨어에 의해 수행된다.
본발명의 다른 관점에 따르면, 그래픽 서브 시스템은 프로그램 명령 및 데이타 저장을 위한 공유메모리를 이용하는 파이프라인구조로된 다각형 처리시스템 및 다각형 프로세서간 빠른 데이타 통과를 위한 선입선출(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은 본발명에 따른 영상 및 그래픽 처리 시스템의 블럭도;
도 2는 본발명에 따른 벡터 프로세서의 구성도;
도 3은 본발명에 따른 캐쉬 데이타의 구성도;
도 4는 본발명의 데이타 캐쉬 구성에 따른 지역 레지스터, 라인(line) 레지스터 및 데이타 저장구조의 구성도;
도 5는 본발명에 따른 캐쉬 데이타 구성를 사용하여 저장하는 메모리로 부터의 데이타를 액세스하는 방법의 흐름도;
도 6은 본발명에 따른 벡터 주소발생기의 구성도;
도 7은 본발명에 따른 데이타 주소 시퀀스(sequence)를 발생하는 방법의 흐름도;
도 8은 본발명에 따른 토큰 로직구성을 사용하여 공유 메모리를 액세스하는 방법의 흐름도;
도 9는 본발명에 따른 공유 메모리의 구성도;
도 10은 본발명에 따른 그래픽 서브시스템(subsystem) 의 블럭도;
도 11은 제10도의 그래픽 서브시스템내에서의 그래픽 엔진(engine)의 블럭도;
도 12a는 본발명의 바람직한 한 실시예에 사용된 다각형 프로세서를 위한 다각형 처리 사이클 필요조건들의 테이블;
도 12b는 하나의 다각형 예( 例 )를 위한 다각형 처리 사이클 필요조건들의 테이블;
도 13은 본발명에 따른 주소 태깅(tagging) 장치의 블럭도; 및
도 14는 제13도의 주소 태깅장치에 사용된 메모리 공간의 구성도.
바람직한 실시예의 상세한 설명
제 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) 에서, 만일 라인태그가 상기 선택된 라인 레지스터의 내용과 매치되지 않거나혹은 상기 유효비트가 세트되지 않는다면( 데이타가 무효임을 의미하는 ), 캐쉬미스(cachemiss) 가 발생된다. 상기 캐쉬는 그후 블럭(110) 에서 공유메모리에 메모리 주소요구를 보낸다. 상기 데이타가 캐쉬로 복귀되어졌을 때, 블럭(112) 에서 상기 데이타는 상기 라인 인덱스에 상응하는 데이타 레지스터로 로드된다. 즉 라인이 채워진다. 메모리 주소 부분은 적당한 라인 레지스터에서 라인태그로써 기록되어지며 상기 유효비트가 세트된다. 블럭(108) 에서, 요청된 데이타는 제어 ASIC로 보내진다. 블럭(104) 에서 어떠한 매치도 없기 때문에, 이미 캐쉬내에 있는 데이타에 겹쳐( 중복 )서 기록하는 것이 필요하다. 직접사상방법이 사용되었기 때문에, 어느 데이타가 중복되어 기록되어야 하는지에 대한 선택이 없으며, 블럭들(110-112) 과 관련하여 설명된 상기 관리는 제어상태기에 의해 수행되며 제어상태기는 상기 목적을 위해 영구적으로 프로그램되어 있다. 상기 제어상태기에 의한 수행은 상대적으로 빠르다.
만일 지역태그가 블럭(100) 에서 매치되지 않는다면, 캐쉬내에서 데이타의 지역은 요구된 주소와 관련된 데이타의 섹션(section) 으로 반드시 대치되어져야 한다. 완전연관 주소지정 구성이 지역식별을 위해 사용되어지기 때문에, 데이타 캐쉬내에서 중복기록되어질 지역으로써의 여러 선택이 있다. 하드웨어로 상기 선택을 수행하는 종래의 방법은 복잡하고 비용이 많이든다. 따라서, 소프트웨어에 의해 수행되는 상기 캐쉬 지역들의 관리는 제어 ASIC 에 의해 실행된다. 일반적으로, 블럭(114) 에서 최근 최소(least recently) 액세스된 지역태그가 중복기재된다. 최근 최소 액세스된 지역은 지역 액세스가 발생할 때 마다 지역 액세스 카운트를 둠으로써 식별된다. 이러한 구성부분의 사용검사방법은 관련 기술분야에선 잘 알려져 있다. 최근 최소 사용된 지역에 대한 중복기재 결정은 앞으로 최소 사용되어질 지역의 중복기재에 관한 바람직한 관리계획을 가져온다. 제어 ASIC(52) 는 중복기재되어질 지역을 선택하고 인출된 데이타에 대한 지역태그를 적당한 지역태그 레지스터로 로드한다. 중복기재되어질 지역이 선택되어진 후, 블럭(100) 에서 주소요청은 공유메모리로 보내지며,공유메모리는 데이타를 제어 ASIC 로 반환한다. 상기 데이타는 주소의 라인 인덱스에 의해 명령된 대로 데이타 레지스터로 로드되며, 상기 주소로 부터의 라인태그는 블럭(112) 에서 상기 라인인덱스와 관련된 라인 레지스터내에 저장된다.
직접사상 캐쉬의 뚜렷한 특징은 임의의 한 메모리 주소에 상응하는 데이타는 오직 한 데이타 레지스터내에만 존재하는 것이 허용된다는 것이다. 오직 하나의 라인 태그만이 캐쉬히트를 검출하기 위해 초기 주소와 비교되어 진다. 비교하면, 완전연관 캐쉬는 임의의 지역이라도 주어진 메모리 주소에 상응하는 데이터를 포함하는 것이 가능하고 지역 레지스터의 배열 전체가 캐쉬히트를 검출하기 위하여 반드시 탐색되어져야 한다. 따라서 직접사상방법은 완전영관방법 보다 매우 적은 비교들을 필요로 할수 있다.
상기한 바와같이, 직접사상 캐쉬는 제어상태기에 의해 매우 단순한 방법으로유지되어질수 있으며, 반면에 완전연관 캐쉬는 좀더 유연한 소프트웨어에 의해 제어되어질 수 있다. 지역스와핑(swapping of regions) 은 라인스와핑(swapping of lines) 보다 덜 빈번하게 발생하지만 처리시간면에서 볼때 라인스와핑 보다 비용이 많이들기 때문에, 이러한 두 제어의 결합은 소프트웨어 관리계획에 의해 초래되는 오버헤드(overhead)에도 불구하고 지역관리가 생산적이 되도록 보장한다. 부가적으로, 상기 두 방법을 결합함으로써, 단순한 라인 레지스터 갱신은 하드웨어로 신속하게 실행되어질 수 있다. 따라서, 데이타 캐쉬는 공유메모리 인출을 감소시키기 위해 동작되며 이렇게하여 벡터처리 인터럽트를 감소시킨다.
일반적으로, 영상처리는 커다란 데이타 배열을 필요로하며 따라서 이것은 벡터처리에 유용하게 된다. 효율적인 벡터동작을 위해, 벡터처리장치(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-blit 장치를 제공한다.
그래픽 서브시스템
그래픽 서브시스템(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), TMS 34020 을 기초로 한 그래픽 프로세서 및 시스템 제어기(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) 로 부터 액세스 가능하기 때문에 각 다각형 프로세서 특정 태스크 혹은 특정서브태스크에 영원히 고정되어지기보단 상이한 태스크 혹은 서브태스크에 동적으로 할당될 수 있다. 또한, 다각형 프로세서 사이에 FIFO 연결을 유지함으로써, 전체 그래픽 처리속도는 증가되며, 따라서 각각의 다각형 프로세서는 자신의 전임자(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)은 FIFO 선택로직(200), FIFO 버퍼(190) 및 태크 디코오더(202) 를 사용한다. 맨 처음의 두개 구성성분은 다각형 파이프라인의 부분이고, 세번째 구성성분은 명령어 분배기(180) 의 부분이다.
도 14를 참조하면, 다각형 프로세서의 주소공간내에서의 FIFO 주소범위는 4개의 섹터로분할되며, 각각의 섹터는 특정 BBI ASIC와 관련된다. 다각형 프로세서는 각각 하나의 BBI ASIC를 나타내는 4개의 상이한 FIFO에 기록되어야 하는 것처럼 보인다. 상기 주소는 각각의 주소의 최하위 2-비트가 특정 FIFO 0-3 을 인식하도록 분할된다. 예에서, 주소... 10000,... 10001,... 10010, 그리고 10011 은 각각의 FIFO 0-3 과 관련된상기 FIFO 메모리 위치이다. 최하위 2-비트 혹은 태그를 운송하는 프로세서 주소라인은 FIFO (190)에 연결되어 있으며,상기 프로세서는 32- 비트 그래픽 데이타와 함께 데이타로써 상기 2-비트를 받아들이며, 전체적으로 태그된 34- 비트 데이타를 형성한다. FIFO를 선택하기 위하여, FIFO 기록 인에이블라인상에서 인에이블 신호를 발생시키기 위해 모두가 동일한 상위주소 비트가 FIFO선택 로직(200) 에 입력된다. 상기 선택로직은 다각형 프로세서 주소출력의 상위 30- 비트를 FIFO 주소범위의 상위 30- 비트를 나타내는 미리 저장된 숫자와 비교한다. 만일 매치(match) 가 발생하면, FIFO 선택라인은 하이(high)로 되며 FIFO는 인에이블된다. 이러한 실행은 태그된 34- 비트 데이타가 다각형 프로세서로 부터 수신되도록하며, FIFO 내 34- 비트가 명령어 분배기(180) 로 출력되도록 한다. 상기 명령어 분배기는 태그 비트를 떼어내어 태그 디코오더로 보낸다. 유사하게, 그래픽 데이타의 32- 비트가 BBI ASIC로 출력된다. 태그 디코오더는 태그로 부터 목적 BBI ASIC를 인식하며 BBI ASIC 선택라인을 사용하여 데이타를 수신하기 위해 적당한 BBI ASIC를 인에이블시킨다. 본질적으로 장치 인식라인으로써 다각형 프로세서의 주소라인을 이용함으로써, 다각형 프로세서와 상기 FIFO 사이의 데이타 폭을 증가시키지 않고 목적 BBI ASIC를 인식하는 것이 가능하다. 본발명은 일련의 목적장치에 할당된 메모리 공간 및 각각의 주소공간분할이 논리적 의미를 갖도록 분할되어질 수 있는 메모리공간을 포함하는 임의의 시스템에서 데이타를 태그하기 위해 이용되어 질수 있다. 임의의 상기 분할에 대한 참조는 참조된 데이타가 특정목적 장치에 할당된 태그로써 태그되어지도록 한다.
상기에서 논의된 바와같이, 상기 그래픽 서브시스템은 영상블럭전달(184) 을 통하여 비트블럭전달 동안 원시 데이타(source data) 를 얻기 위하여 생략된 영상주소 지정구성을 이용한다. 그래픽 서브시스템의 나머지 부분은 상대적으로 잘 알려진 디스플레이 프로세서 및 호스트 인터페이스로써 구현될 수 있다. 본발명의 바람직한 실시예가 예증되고 설명되어진 반면에, 본발명의 정신 및 범위로부터 벗어남이 없이 다양한 변화가 만들어질 수 있음이 인식되어져야 할 것이다.
상기와 같은 본 발명의 구성에 의해, 효율적으로 멀티프로세서를 제어하고 데이터를 액세스하여 시스템의 영상화 및 그래픽 처리에 있어서 높은 수행능력을 달성할 수 있다.

Claims (7)

  1. 메모리 시작점, 메모리 폭 및 메모리 높이값에 의해 정의되는 2 차원 메모리공간내 주소를 식별하기 위해 사용되는 주소시퀀스 발생을 위한 방법에 있어서, 상기 방법은 베이스 값 및 시퀀스폭 값을 포함하는 일차원 주소코드 발생하는 단계;
    영 (零) 차원 주소 세트내 영차원 주소의 수가 상기 시퀀스폭 값과 같아질 때까지 상수인자에 의해 상기 베이스 값을 증가시킴으로써 상기 베이스 값으로 시작되는 순차적 주소에 상기 세트내 상기 주소가 대응되도록 상기 일차원 주소 코드로부터 한 세트의 영차원 주소세트를 발생하는 단계를 포함하는 것을 특징으로 하는 주소시퀀스를 발생하기 위한 방법.
  2. 제 1항 에 있어서, 상기 방법은
    상기 베이스 값, 상기 시퀀스폭 값 및 상기 시퀀스 높이값을 포함하는 2 차원 주소코드를 발생하는 단계를 추가적으로 포함하며,
    여기서 상기 2 차원 주소코드로부터 일차원 주소코드를 발생시키는 상기 단계는 메모리폭 값으로 상기 2 차원 주소코드 베이스 값을 증가시키고 상기 결과값에 상수인자를 곱함으로써, 베이스 값 세트가 베이스 값으로부터 시작되는 순차적 수와 대응되도록 상기 베이스 값 세트를 발생시키는 단계, 및 각각의 일차원 주소코드를 구성하기 위하여 상기 시퀀스폭 값과 결합하여 각각의 상기 베이스 값을 사용하는 한 세트의 일차원 주소코드를 형성하는 단계를 포함하며, 이에 따라 각각의일차원 주소코드가 한 세트의 영차원 주소를 발생하기 위하여 사용되는 것을 특징으로 하는 주소시퀀스를 발생하기 위한 방법.
  3. 시작 메모리 폭 및 메모리 높이값에 의해 정의되는 기억공간내 주소를 식별하기 위해 주소시퀀스가 사용되도록 축소된 크기의 주소코드를 사용하는 주소 시퀀스를 발생하는 방법에 있어서, 상기 방법은
    베이스 값, 시퀀스폭 값 및 폭 스킵(skip) 값을 포함하는 일차원 주소코드를 발생하는단계; 및
    영차원 주소세트내 영차원 주소의 수가 상기 시퀀스폭 값과 같아질 때까지 상기 폭 스킵값에 의해 상기 베이스 값을 증가시킴으로써 상기 세트내 상기 주소가 상기 베이스 값으로부터 시작하는 순차적 주소에 대응되도록 상기 일차원 주소코드로부터 한 세트의 영차원 주소를 발생하는 단계; 를 포함하는 것을 특징으로 하는 주소시퀀스를 발생하기 위한 방법.
  4. 제 3 항에 있어서, 상기 방법은
    상기 베이스, 상기 시퀀스 폭, 시퀀스 높이, 상기 폭 스킵 및 높이 스킵의 값을 포함하는 2 차원 주소코드를 발생하는 단계를 추가적으로 포함하며;
    여기서 상기 2 차원 주소코드로부터 일차원 주소코드를 발생시키는 단계는 베이스 값 세트내 베이스 값의 수가 상기 시퀀스 높이값과 같아질 때까지 메모리폭 값과 상기 높이 스킵 값의 곱에 의해 상기 베이스 값을 증가시킴으로써 상기 베이스 값으로 시작되는 베이스 값 세트를 발생하고 그리고 일차원 주소코드를 형성하기 위하여 상기 시퀀스폭 값과 결합하여 상기 베이스 값 세트내 각각의 상기 베이스 값을 사용하는 상기 일차원 주소코드 세트를 형성하는 것을 포함하며, 이에 따라 각각의 상기 일차원 주소코드가 한 세트의 영차원 주소를 발생하기 위해 사용되는 것을 특징으로 하는 주소시퀀스를 발생하기 위한 방법.
  5. 시작점을 갖는 메모리 공간내 저장위치를 식별하기 위해 메모리 제어기에서 사용 되고 메모리 폭 및 메모리 높이 값에 의해 정의되는 주소코드 발생을 위한 주소시퀀싱 시스템에 있어서, 상기 주소시퀀싱 시스템은
    베이스 값 및 시퀀스 폭 값을 포함하는 일차원 주소코드 발생을 위한 코드발생기; 및 상기 일차원 주소코드로부터 한 세트의 영차원 주소 발생을 위한 시퀀스 발생기; 를 포함하고 있으며 영차원 주소세트내 영차원 주소가 상기 베이스값으로 시작되는 주소에 대응되도록 하고 상기 세트내 주소의 수가 상수인자에 의해 곱해진 상기 시퀀스 폭 값과 같아지도록 하여 한정된 주소코드 정보의 양을 사용하여 일련의 메모리 주소 참조가 제공되도록 하는 것을 특징으로 하는 시스템.
  6. 제 5 항에 있어서, 상기 코드발생기는 상기 베이스 값 시퀀스, 상기 시퀀스 폭 값 및 시퀀스 높이 값을 포함하는 2 차원 주소코드를 추가적으로 발생하며, 상기 시스템은 메모리 폭 값 및 상수값으로 상기 베이스 값을 증가시킴으로써 상기 2차원 주소 코드로부터 상기 베이스 값으로부터 시작하는 한 세트의 일차원 주소 코드를 발생시키고,
    일차원 주소코드를 발생하기 위해 상기 시퀀스 폭 및 시퀀스 높이 값과 결합하여 상기 베이스 값 세트로부터 각각의 베이스 값을 사용하는 상기 일차원 주소코드 세트를 형성하는 열(row) 발생기 수단을 추가적으로 포함하고, 이에 따라 한 세트의 영차원 주소발생을 위해 일차원 주소코드가 상기 시퀀스 발생기에 의해 사용되는 것을 특징으로 하는 주소시퀀싱 시스템.
  7. 알려진 패턴에 따라 번호의 시퀀스를 발생하기 위한 시퀀스 발생기에 있어서, 어떤 결과를 생성하기 위해 다수의 입력을 수신하고 결합하기 위한 가산기;
    상기 가산기에 연결된 베이스 주소 레지스터의 내용을 상기 가산기에 입력으로써 전송하기 위해 그리고 상기 가산기로부터의 결과를 상기 베이스 주소 레지스터를 위한 새로운 내용으로써 수신하기 위해 상기 가산기에 연결된 베이스 주소 레지스터;
    각각의 서브패턴 목록이 증가 필드 및 다음 목록필드를 포함하는 다수의 서브패턴 목록을 포함하며, 현재의 서브패턴 목록에 대한 증가 필드의 내용을 상기 가산기에 입력으로써 전송하기 위해 상기 가산기에 연결되어지는 증가 테이블; 및
    (1) 베이스 주소를 상기 베이스 주소 레지스터로 로딩하고 현재의 서브패턴 목록을 선택하고;
    (2) 상기 베이스 주소 레지스터가 상기 가산기로부터의 결과를 수신하도록 야기하고, 상기 현재 서브패턴 목록내 상기 다음 목록값을 기초로 한 상기 다수의서브패턴 목록으로부터 하나의 새로운 현재 서브패턴 목록을 선택하며, 그리고
    (3) 상기 가산기로부터의 상기 결과가 상기 증가 테이블 목록 및 상기 베이스 주소에 의해 표현되는 하나의 시퀀스가 되도록 상기 패턴이 끝날 때까지 서브스텝(2) 을 반복하는 제어수단; 으로 구성되는 것을 특징으로 하는 시퀀스 발생기.
KR1020017006042A 1991-08-13 1992-08-12 영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법 KR100319770B1 (ko)

Applications Claiming Priority (3)

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

Related Parent Applications (1)

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

Publications (1)

Publication Number Publication Date
KR100319770B1 true KR100319770B1 (ko) 2002-01-16

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 After (1)

Application Number Title Priority Date Filing Date
KR1019940700433A KR100319768B1 (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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150049262A (ko) * 2013-10-29 2015-05-08 삼성전자주식회사 영상 처리 장치 및 영상 처리 방법
US11645201B2 (en) 2020-04-16 2023-05-09 Nxp Usa, Inc. Memory address generator

Families Citing this family (120)

* 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
AU5877799A (en) * 1998-09-18 2000-04-10 Pixelfusion Limited Apparatus for use in a computer system
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
US6483516B1 (en) 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6801207B1 (en) 1998-10-09 2004-10-05 Advanced Micro Devices, Inc. Multimedia processor employing a shared CPU-graphics 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
US6404429B1 (en) 1998-11-12 2002-06-11 Terarecon, Inc. Method for modulating volume samples with gradient magnitude vectors and step functions
US6411296B1 (en) 1998-11-12 2002-06-25 Trrarecon, Inc. Method and apparatus for applying modulated lighting to volume data in a rendering pipeline
US6512517B1 (en) 1998-11-12 2003-01-28 Terarecon, Inc. Volume rendering integrated circuit
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
US6426749B1 (en) 1998-11-12 2002-07-30 Terarecon, Inc. Method and apparatus for mapping reflectance while illuminating volume data in a rendering pipeline
US6532017B1 (en) 1998-11-12 2003-03-11 Terarecon, Inc. Volume rendering pipeline
US6297799B1 (en) * 1998-11-12 2001-10-02 James Knittel Three-dimensional cursor for a real-time volume rendering system
US6342885B1 (en) 1998-11-12 2002-01-29 Tera Recon Inc. Method and apparatus for illuminating volume data in a rendering pipeline
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
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
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
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
US7184059B1 (en) 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
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
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in 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
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
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
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling 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
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for 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
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for 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
US8141102B2 (en) * 2008-09-04 2012-03-20 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
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
US9170864B2 (en) * 2009-01-29 2015-10-27 International Business Machines Corporation Data processing in a hybrid computing environment
US20100191923A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data Processing In A Computing Environment
US8001206B2 (en) * 2009-01-29 2011-08-16 International Business Machines Corporation Broadcasting data 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 キヤノン株式会社 データ処理装置及びその制御方法
WO2013071485A1 (en) * 2011-11-15 2013-05-23 Intel Corporation Scheduling thread execution based on thread affinity
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US9971397B2 (en) 2014-10-08 2018-05-15 Apple Inc. Methods and apparatus for managing power 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
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10551902B2 (en) 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers
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
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
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
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
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

Family Cites Families (17)

* 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
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
US4546451A (en) * 1982-02-12 1985-10-08 Metheus Corporation Raster graphics display refresh memory architecture offering rapid access speed
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150049262A (ko) * 2013-10-29 2015-05-08 삼성전자주식회사 영상 처리 장치 및 영상 처리 방법
KR102099914B1 (ko) * 2013-10-29 2020-05-15 삼성전자주식회사 영상 처리 장치 및 영상 처리 방법
US11645201B2 (en) 2020-04-16 2023-05-09 Nxp Usa, Inc. Memory address generator

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100319770B1 (ko) 영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법
US5774133A (en) Computer system with improved pixel processing capabilities
US11604649B2 (en) Techniques for efficiently transferring data to a processor
US6192384B1 (en) System and method for performing compound vector operations
US5611064A (en) Virtual memory system
US11106261B2 (en) Optimal operating point estimator for hardware operating under a shared power/thermal constraint
US10699427B2 (en) Method and apparatus for obtaining sampled positions of texturing operations
US10810784B1 (en) Techniques for preloading textures in rendering graphics
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
US5539898A (en) Data-array processing system wherein parallel processors access to the memory system is optimized
US11429534B2 (en) Addressing cache slices in a last level cache
CN104050705A (zh) 处置光栅操作中的post-z覆盖数据
US11379420B2 (en) Decompression techniques for processing compressed data suitable for artificial neural networks
US11907717B2 (en) Techniques for efficiently transferring data to a processor
CN112783554A (zh) 用于程序间数据交换的持久便签内存
CN112749120A (zh) 将数据有效地传输至处理器的技术
GB2251770A (en) Graphics accelerator system using parallel processed pixel patches
US5546532A (en) Data-array processing system
GB2251773A (en) Graphics accelerator using parallel processed pixel patch to render line
US20230115044A1 (en) Software-directed divergent branch target prioritization
WO1992012496A1 (en) Computer system with enhanced image and graphics capabilities
WO1992002923A1 (en) Data processing and memory systems
WO1992002883A1 (en) Parallel-processing systems
CN116775519A (zh) 用于高效访问多维数据结构和/或其他大型数据块的方法和装置
CN116774968A (zh) 具有一组线程束的高效矩阵乘法和加法

Legal Events

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

Payment date: 20111010

Year of fee payment: 11

EXPY Expiration of term