KR100246067B1 - 집적회로 장치와 디지탈 데이타 처리 및 비디오 디스플레이 신호 발생 시스템 - Google Patents

집적회로 장치와 디지탈 데이타 처리 및 비디오 디스플레이 신호 발생 시스템 Download PDF

Info

Publication number
KR100246067B1
KR100246067B1 KR1019960017792A KR19960017792A KR100246067B1 KR 100246067 B1 KR100246067 B1 KR 100246067B1 KR 1019960017792 A KR1019960017792 A KR 1019960017792A KR 19960017792 A KR19960017792 A KR 19960017792A KR 100246067 B1 KR100246067 B1 KR 100246067B1
Authority
KR
South Korea
Prior art keywords
index
data
register
control
bus
Prior art date
Application number
KR1019960017792A
Other languages
English (en)
Other versions
KR970002590A (ko
Inventor
토마스 크럼프 드웨인
테일러 팬코스트 스티븐
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR970002590A publication Critical patent/KR970002590A/ko
Application granted granted Critical
Publication of KR100246067B1 publication Critical patent/KR100246067B1/ko

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory

Landscapes

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

Abstract

본 발명은 디스플레이 신호 스트림을 처리하는 디지탈 데이타 처리 시스템에서, 벡터 처리 및 특수한 어드레싱 모드로 인해 고속 수행이 가능한 비디오 프로세서를 VLSI 회로의 설계 기법을 사용하여 제공한다. 단일 VLSI 장치상에서 비디오 프로세서는, 협동적으로 비디오 신호 스트림을 발생하고 VLSI 장치의 메모리 요소에 대한 특유의 어드레싱 모드를 사용하여 다수의 프로세서를 포함한다. 다수의 프로세서 각각은 이와 연관된 인스트럭션 캐쉬 및 데이타 캐쉬를 가지며, 동일 기판상에 형성된 광폭 데이타 버스(wide data bus)에 의해 결합되고, 메모리에 저장된 데이타에 대한 액세스 및 액세스 모드를 제어하는 레지스터를 더 포함한다.

Description

집적회로 장치와 디지탈 데이타 처리 및 비디오 디스플레이 신호 발생 시스템
제1도는 본 발명의 비디오 프로세서를 사용하는 제 1 시스템을 도시한 도면.
제2도는 본 발명의 비디오 프로세서를 사용하는 제 2 시스템을 도시한 도면.
제3도는 본 발명의 비디오 프로세서를 개략적으로 도시한 도면.
제4도, 제5도 및 제6도는 제3도의 비디오 프로세서에 의해 수행된 소정의 오퍼레이션의 신호 타이밍도.
제7도는 FIFO 캐쉬 방안으로 사용된 제3도의 비디오 프로세서의 소정의 엘리먼트를 개략적으로 도시한 도면.
제8도 및 제9도는 제3도의 비디오 프로세서의 소정의 오퍼레이션 인스트럭션 흐름을 개략적으로 도시한 도면.
제10도는 제3도의 비디오 프로세서내의 소정의 데이타 흐름의 비트 할당을 개략적으로 도시한 도면.
제11도는 비디오 신호를 디스플레이 장치로 출력하는 것과 연관된 제3도의 비디오 프로세서 내의 데이타 흐름을 개략적으로 도시한 도면.
제12도는 제3도의 비디오 프로세서를 비디오 신호 처리용의 특정 응용에 적용하는 것을 개략적으로 도시한 도면.
* 도면의 주요 부분에 대한 부호의 설명
10 : 병렬 비디오 프로세서 11 : 병렬 비디오 프로세서 메모리
12 : 호스트 프로세서 14 : 시스템 메모리
16 : PCI 시스템 버스 30 : 마이크로코드 장치
31 : I-캐쉬 32 : D-캐쉬
34 : 라인 버스 36 : 비디오 래스터 장치
38 : 호스트 인터페이스 39 : 메모리 인터페이스
40 : ALU 41 : 로드/저장 장치
44 : 변환장치 46 : 데이타 캐쉬
본 발명은 디스플레이 신호를 처리하는 디지탈 데이타 처리 시스템에 관한 것으로, 특히 고성능의 비디오 프로세서를 갖는 디지탈 데이타 처리 시스템에 관한 것이다.
전형적으로, 디지탈 데이타 처리 시스템은 시스템 사용자를 위해 디스플레이하는데 사용되는 비디오 신호를 발생한다. 디지탈 데이타 처리 시스템은 예를 들어 퍼스널 컴퓨터이거나, 셋탑 박스(set top boxes) 혹은 비디오 게임기 등과 연결된 텔레비젼 수상기처럼 가전 시스템(consumer systems)일 수 있다.
화상 회의, 비디오 신호의 압축/압축해제 및 3차원 영상 표현(three dimensional rendering)의 필요성으로 인해, 이러한 데이타 처리 시스템의 데이타 처리는 매우 신속해야 하는 반면, 시스템의 디지탈 데이타 처리 능력은 곧잘 한계점을 드러내어 전술한 응용을 제대로 수행할 수 없었다. 예를 들어 양질의 3차원 영상을 표현하고자 하는 경우 시스템의 응답 속도가 현저히 저하되는 현상이 발생하였다.
전술한 문제점을 감안하여, 본 발명의 목적은 범용 시스템의 성능을 개선하는데 있다. 이러한 목적을 달성하기 위해, 본 발명은 디스플레이 신호 스트림을 처리하는 디지탈 데이타 처리 시스템에서 벡터 프로세싱(vector processing) 및 특수 어드레싱 모드(special addressing modes)로 인해 고성능을 갖는 비디오 프로세서를 제공하며, 또한 비디오 프로세서를 구현함에 있어서도 VLSI(Very Large Scale Integrated) 회로 설계 및 제조의 잇점을 활용한다.
본 발명의 다른 목적은 상호 협력하여 비디오 신호 스트림을 발생하며 특유의 어드레싱 모드(distinctive addressing modes)를 사용하는 다수의 프로세서를 단일 VLSI 장치상에 제공하는데 있다. 이러한 목적을 달성함에 있어서, VLSI 장치는 다수의 프로세서를 구비하며, 각각의 프로세서는 연관된 인스트럭션 캐쉬 및 데이타 캐쉬를 구비하고 동일 기판상에서 형성되는 광폭 데이타 버스(wide data bus)에 의해 함께 결합되며, 메모리에 저장된 데이타에 대한 액세스 및 액세스 모드를 제어하는 레지스터를 또한 포함한다.
본 발명의 몇가지 목적은 이미 기술되었으며, 다른 목적들은 첨부된 도면과 함께 본 명세서의 설명으로부터 명확해질 것이다.
본 발명은 본 발명의 바람직한 실시예가 도시된 첨부된 도면을 참조하여 더욱 상세히 기술될 것이지만, 본 기술 분야에 통상의 지식을 가진 자라면 이하 개시된 본 발명을 수정하여 본 발명의 바람직한 목적을 성취할 수도 있음을 이해하여야 한다. 따라서, 이하의 개시되는 설명은 본 발명을 제한하는 것이 아니고 본 기술 분야에 통상의 지식을 가진 자를 위한 광범위한 교시임을 이해하여야 한다.
이하의 설명은 대부분 단일칩 장치상의 특정 프로세서 구조 및 실시예에 관해 언급할 것이다. 그러나, 먼저 본 발명의 프로세서 장치가 유용하게 적용되는 특정의 시스템을 살펴보는 것이 적절할 것이다. 제1도를 참조하면, 특정 퍼스날 컴퓨터 시스템과 매우 유사한 시스템이 개략적으로 도시되어 있다. 도시된 바와 같이, 시스템은 비디오 프로세서 메모리(11)와 접속되고, 비디오 출력 신호를 제공하는 병렬 비디오 프로세서(parallel video processor: PVP)(10)를 구비한다. 이 시스템은 또한, PowerPC 프로세서칩 및 지원칩(support chip)과 같은 x86 구조를 기초로 한 CISC(Complex Instruction Set Computing) 프로세서 혹은 RISC(Reduced Instruction Set Computing) 프로세서일 수도 있는 메인 프로세서 콤플렉스(main processor complex)(12)를 구비한다. 시스템 메모리(14)는 메인 프로세서 컴플렉스(12)와 작동적으로 연관된다. PVP(10) 및 메인 프로세서 컴플렉서(12)는 다른 주변 장치(15)와 함께 (퍼스날 컴퓨터 분야에서 널리 알려져 있고 흔히 채택되는 버스 사양(bus specification)인) PCI 버스를 통해 접속된다.
PVP(10)는 디스플레이로서 텔레비전 수상기를 사용하는 셋탑 장치처럼 용도가 특정된 시스템에 사용될 수도 있다. 제1도와 마찬가지로, 본 발명의 비디오 프로세서가 참조번호(10)로 도시되고, 이와 연관된 메모리가 참조번호(11)로 도시 되어 있는 시스템이 제2도에 도시되어 있다. 제2도의 시스템에서, PVP(10)는 80486 형의 프로세서(18)와, 하드디스크 드라이브(20) 및/또는 플로피 디스크 드라이브(21)를 지원할 수 있는 입/출력 처리기(19)와, 시스템 ROM(Read OnIy Memory)(22)과, 원격 제어 장치(25)에 응답하는 입/출력/콤팩트 디스켓 제어기(24)와, 콤팩트 디스크 드라이브(26)와 연관된다. 시스템 구성요소는 X-버스(28)와 같은 적절한 버스에 의해 결합될 수 있다.
이하 기술되는 병렬 비디오 프로세서(PVP)(10)는 실시간 비디오 및 화상 데이타 처리의 증가하는 수요를 처리하도록 설계된 비디오 처리 아키텍처(video processing architecture)이다. 화상 회의, MPEG 압축해제, 과학 및 오락 응용에 요구되는 3차원 표현 등을 실시간으로 수행하는데는 상당한 계산 능력(computational power)을 요구한다. 다행히, 그래픽 알고리즘은 통상 병렬 처리 시스템에서 분할 처리될 수 있다. MPEG, 3차원 지원(3D assist) 등에 대한 전용 로직을 개발하는 대신 PVP는 단일 VLSI 장치상에 병렬 비디오 처리 시스템을 집적하여, 프로그램이 가능하고 상이한 알고리즘에 대해 재사용이 가능한 로직을 제공한다. (제3도에 참조번호(30a, 30b, 30c, 30d)로 도시된) 다수의 프로세서는 인스트럭션 캐쉬(31a, 31b, 31c, 3ld) 및 데이타 캐쉬(32a, 32b, 32c, 32d)를 갖는 하버드 아키텍처 장치(Harvard architecture device) 형태의 마이크로코드 장치(microcoded engine)이다. 본 명세서의 참조번호 표기는 동일한 구성요소를 나타내기 위해서는 공통 참조번호를 사용하고, 다수의 구성요소중 특정 구성요소를 나타내기 위해서는 첨자(postscript letter)를 함께 사용하는 방식을 채택한다. 단순히 번호만 지정하여 설명한 경우, 해당부분의 설명은 다수의 동일한 구성 요소에 적용될 수 있다. 각각의 프로세서는 자신과 연관된 캐쉬를 주로 사용하며, 캐쉬 실패(cache miss) 발생시에만 정지(stall)한다. 4개의 마이크로코드 장치가 도시 되어 있고 기술될 것이지만, 그 갯수는 2 이상이며 PVP(10)에 대해 요구된 성능에 의해 결정됨을 이해하여야 한다. 본 명세서에서 설명되는 용도를 위하여는 4개의 마이크로코드 장치로도 족하나 보통 마이크로코드 장치는 4개 이상임을 이해하여야 한다 .
모든 프로세서는 공통의 단일 기판상에 존재하므로, 프로세서와 메모리 사이에는 높은 대역폭을 갖는 통신이 가능하다. 본 명세서에서는 라인 버스(line bus)로 일컬어지는 단일 버스(34)가 상호접속 메카니즘으로서 선택되었다. 이 버스는 광폭의 버스(wide bus)이다. 즉, 각각의 버스 사이클 동안 캐쉬(31 및 32) 사이에서 혹은 캐쉬(31 및 32)와 메모리 인터페이스(memory interface(I/F))(39) 사이에서 전체 캐쉬 라인을 전송할 수 있다. 모든 프로세서(30)는 통합된 메모리 어드레스 공간을 갖는다. 프로세서(30)는 온(on) 또는 오프(off) 스크린 메모리의 임의의 부분을 액세스 및 캐쉬할 수 있다.
이러한 단일 버스 멀티프로세서 방안은 실리콘 제조시 이를 여러가지로 변형하여 제조할 수 있는 가능성을 열어준다. 예를 들어, 저성능 칩(low end chip)은 2개의 프로세서 즉, 호스트 I/F와 32 비트 DRAM I/F만을 구비할 수 있다. 이 칩은 MPEG-1 압축해제와 2차원 및 3차원 표현에 사용할 수 있다. 고성능 칩(high end chip)은 6개의 프로세서, 호스트 I/F, 이중 RAMBUS I/F, 및 YUV 입력 포트를 구비 할 수 있다. 이 칩은 MPEG-2 압축해제, 원격회의 및 3차원 표현을 지원할 수 있다. 프로세싱 장치와 인스트럭션 세트 및 내부 버스가 표준화되면, 칩이 하나의 계열(a family of chips)을 이루어 제조될 수 있으며, 이들 칩은 다시 특정 제품 주문에 맞춰 제작될 수 있다.
본 발명의 아키텍처를 사용하는 계열화된 제품을 생각할 수도 있으나, 본 발명에서는 각 응용마다 커스텀 칩(custom chip)을 제조하는 방식은 채용하지 않는다. 이러한 아키텍처의 잇점은 프로세서를 프로그램할 수 있어서 많은 계산량을 요구하는 매우 다양한 작업을 구현할 수 있다는 것이다. 영화를 압축해제할 때 역 이산 코사인 변환(inverse descrete cosine transforms: IDCT)을 수행하는 프로세서가 비디오 게임을 수행할 때는 3차원 객체를 변환(translate)하고 나타내도록 재프로그램될 수 있다
PVP는, 상술한 설계 요건을 만족하도록 크기가 정해질 수 있는 스케일가능한 멀티프로세서 컴플렉스를 제공하므로써 이들 목적을 달성한다. 이러한 아키텍처는 동일한 실리콘 기판상에 존재하며 또한 프로세서 장치를 1개에서 10개까지 허용하는 개선된 캐쉬 관리 기법을 갖춘 광폭의 라인 버스를 특징으로 한다. 4개의 프로세서를 갖춘 설계에서는 생(live) MPEG1 및 MPEG2 비디오 신호 스트림 및 생비디오 스트림을 디코딩하는데 필요한 처리 능력(processing power)을 제공한다. 또한, PVP는 향상된 2차원 및 3차원 그래픽을 제공하도록 재프로그램될 수 있다.
PVP 프로세서는 범용 프로세서 또는 DSP로서 설계되지는 않는다. 그 대신, PVP 프로세서는 비디오 및 그래픽 형의 알고리즘을 처리하도록 명시적으로 설계되었다. 이러한 이유로 인해, PVP는 비디오/그래픽 응용에 적합한 한정된 ALU 인스트럭션 세트에 의해 4개의 엘리먼트 벡터(element vectors)를 처리하도록 설계된다.
PVP(10)는 그래픽 컴플렉스 및 MPEG 컴플렉스가 동일 메모리를 공유할 수 있도록 하므로써 메모리(11)를 효율적으로 사용할 수 있다. 이로 인해, 동일한 2MBytes 메모리가 MPEG 디코드 또는 고성능 그래픽에 대해 사용될 수 있다. 물론, 동일한 메모리는 이들 두 기능을 동시에 수행하는데 사용될 수는 없다.
PVP는 그 특성상 범용 프로세서일 필요는 없으므로 실리콘의 크기를 최소화하여 제조될 수 있다. ALU는 감축형 인스트럭션 세트를 특징으로 하며, 그 폭이 16 비트이고, 승산 장치도 마찬가지로 16 비트이다(32 비트의 결과는 전용 MCA 레지스터에 저장된다). 이로 인해, 필요한 실리콘의 크기가 줄어든다. 또한, I 캐쉬(31) 및 D 캐쉬(32)의 크기도 최소로 유지되었다.
[제어 버스]
제어 버스의 역할은 고속의 라인 버스(34)를 방해(penalizing)하지 않고 칩상의 각 서브시스템에 제어/상태 인터페이스를 제공하는 것이다. 제어 버스는 16 비트폭을 가지며, 장치를 구성하고 상태를 검사하는데 주로 사용된다. 호스트 프로세서(12 및 18)가 PVP 프로세서(30)들중 하나의 상태를 폴링(polling)해야 하는 경우, 이 폴링은 제어 버스를 통해 수행될 수 있다. 또한, 호스트 프로세서는 프로세서의 제어 포트에 기록하므로써 프로세서를 개별적으로 리셋(reset) 또는 재개시(restart)할 수 있다.
일반적으로, 호스트 I/F의 I/O 공간은 제어 버스로 매핑되어야 한다. 각각의 서브시스템은 제어 버스로부터 액세스가능한 고유의 레지스터 세트를 갖는다. 예를 들어, 각각의 프로세서는 리셋용 제어 포트 및 벡터 어드레스 레지스터(vector address register)를 갖는다. 비디오 출력 서브시스템은 수직 및 수평 타이밍 레지스터를 갖는다. 16 비트 버스상의 프로토콜은 (임의의 인터페이스를 생성하는 대신) VGA호환칩의 제조를 용이하게 하기 위해 PACT IO 공간의 프로토콜과 정합한다.
또한, 제어 버스는 디버그 모드(debug mode)에 유용하다. 제어 포트는 프로세서의 실행을 중지하고, 레지스터의 내용을 검사하고, 선택적으로(optionally) 단일 단계 통과 코드(single step through code)를 실행한다. 이들 유형의 오퍼레이션을 제어 버스를 통해 수행하게 되면, 라인 버스는 시간 임계 코드(time critical code)를 실행중일 수 있는 다른 프로세서에 자유롭게 이용될 수 있다.
제어 버스의 마스터는 호스트 인터페이스(38)이다. 제어 버스의 마스터는 호스트 버스로부터의 IO를 처리하도록 설계된다. 이와 달리 특별한 IO 어드레스 공간이 라인 버스에 추가될 수 있다. 이러한 방식으로 호스트는 라인 버스로부터 대역폭을 취하지 않고 제어 버스를 사용할 수 있거나 혹은, 라인 버스상의 마스터가 호스트 버스에 대한 중재 및 호스트 버스로부터의 대역폭을 사용하지 않고 제어 버스를 액세스할 수 있다.
제어 버스의 경우 성능은 문제가 되지 않으므로, (ISA 또는 AT 버스로 알려진 버스와 유사하지만 완전히 동일하지 않은) 매우 단순한 프로토콜이 사용되어 각 제어 버스 슬레이브(control bus slave)에서 요구되는 하드웨어를 최소화한다. 고정 펄스폭의 판독 및 기록 스트로브(strobe)가 데이타 전송을 위해 사용된다.
ㆍ Al-15 - 전송할/전송해 올 I0(워드) 어드레스
ㆍ DO-15 - 데이타 버스
ㆍ BLE - 하위 데이타 바이트 선택
ㆍ BHE - 상위 데이타 바이트 선택
ㆍ RD# - 스트로브 판독
ㆍ WR# - 스트로브 기록
[라인 버스]
라인 버스(34)는 PVP(10)의 모든 서브시스템이 인터페이스하는 공통 포인트이다. 라인 버스(34)는 전체 캐쉬 라인을 단일 트랜잭션(single transaction)으로 전송할 수 있는 매우 넓은 데이타 경로(128 비트)를 갖는다. 이러한 광폭의 데이타 경로로 인해, 캐쉬간 전송이 매우 빨라지고, 캐쉬의 라인 버스 포트상의 스티어링 로직(steering logic)이 불필요해진다. 버스에서 어드레스상(address phase) 및 데이타상(data phase)은 라인 버스에서 파이프라인(pipeline)된다.
즉, 현재의 트랜잭션의 어드레스상은 이전의 트랜잭션의 데이타상과 동시에 발생한다. 어드레스상 또는 데이타상에서 는 대기 상태(wait state)가 허용되지 않는다. 데이타를 제로 대기 상태로 얻을 수 없으면 슬레이브는 부정적 확인 신호(negative acknowledge: NACK)를 발생하여 마스터에게 사이클을 재시도(retry)하여야 함을 알려준다. 따라서, 버스는 재시도 사이에 다른 트랜잭션을 위해 자유롭게 이용될 수 있다.
라인 버스(34)는, 경우에 따라 트랜잭션이 지연되는 희생하에, 전체 대역폭이 최대화되도록 설계된다. 예를 들어, 분할 트랜잭션 판독(split transaction reads)이 지원되어 슬레이브가 판독 어드레스를 래치하고 큐 확인 신호(Queue acknowledge: QACK)를 복귀시킬 수 있도록 해준다. 버스는 다른 마스터가 트랜잭션을 수행할 수 있도록 자유상태가 된다. 슬레이브가 데이타를 취득했으면, 슬레이브는 라인 버스를 이용하기 위해 중재 요청하여야 하고 마스터가 되어 보류중인 마스터에 데이타를 전송하므로써 트랜잭션을 완료해야 한다. 분할 트랜잭션 사이클은 마스터를 대기 상태가 삽입된 경우보다 더 오래동안 보류(증가된 지연)시키지만, 라인 버스에 필요한 대역폭이 최소화되도록 한다.
추가된 지연 효과를 최소화하기 위해 여러 파이프라이닝 기법이 동원되었다. 예를 들어 소프트웨어 파이프라이닝에 의해 코드는, 데이타 항목(data item)이 자신의 캐쉬내로 로드(load)되도록 요구할 수 있다. 이러한 ''접촉(touch)'' 인스트럭션은 인스트럭션 파이프를 정지시키지 않는다. 그 대신, (캐쉬 실패가 발생하는 경우) 버스상에서는 판독이 개시되고, 프로세서(30)는 인스트럭션을 계속 실행할 수 있게 된다. 프로세서(30)는 데이타가 채 캐쉬되기도 전에 데이타를 레지스터로 로드시키려 할 때만 정지된다. 하드웨어 리드-어헤드(read ahead)는 후속의 순차적 라인이 필요하게 될 것임을 나타내는 인덱스 제어 레지스터(index control register)에 의해 구현된다. (리드-어헤드 수식자(read ahead qualifier)가 표시된 경우) 캐쉬를 액세스할 때는 후속 순차 캐쉬 라인이 검사되어 이 라인이 사용가능한지의 여부를 체크한다. 사용가능하지 않으면 후속 순차 캐쉬 라인은 프로세서가 액세스를 시도하여 실패를 초래하기 앞서 요구될 것이다. 코드 실행은 매우 순차적인 특성을 나타내므로 I-캐쉬 로부터의 인스트럭션 인출은 항상 ''리드 어헤드''가 이네이블된 것으로 취급되어야 한다.
캐쉬 코히어런시 프로토콜(cache coherency portocol)은 본 명세서의 다른 곳에 약술되어 있다. D-캐쉬(32)는 제각기 바이트당 하나의 오염 비트(dirty bit)를 사용하는 되기록 능력(write back capability)과 캐쉬간의 오염 라인(dirty line)을 전송하는 프로토콜을 지원한다. 이로써, 프로세서(30)는 라인을 DRAM에 되기록 할 필요없이 동일한 캐쉬 라인내의 상이한 바이트(또는 펠(pells))를 변경 할 수 있다. 오염 라인은 후속 캐쉬 실패에 의해 푸쉬 아웃(push out)될 때까지 캐쉬된 상태로 유지될 것이다. 캐쉬 RAM은 스트림(stream) 또는 브로드캐스트 어드레싱(broadcast address)을 이용하여 가상 FIFO를 구현하거나 또는 브로드캐스트 데이타(broadcast data)를 획득(capture)하는데 사용될 수 있다. 이들 두 기법은 라인 버스의 통신량(line bus traffic)을 상당 부분 줄일 수 있다.
라인 버스를 구성하는 신호는 이하의 논리적인 그룹을 설명하면서 논의된다.
[제어 신호]
제어 신호는 다음과 같다:
ㆍ BUSCLK -버스 클럭은 주 클럭이다. 모든 버스 트랜잭션은 주 클럭으로부터 타이밍 조정된다. 다른 모든 서브시스템은 이 클럭을 분할하여 내부 로직을 구동한다. 예를 들어, 호스트 IF는 호스트 버스로부터의 트랜잭션을 버스 클럭에 동기시켜야 할 것이다. 모든 신호 전이(transitions)는 이 클럭의 상승 에지에서 참조(reference)되어 진다.
ㆍ RESET# - 리셋 신호는 소프트웨어에 의해 발생되거나 흑은 호스트 IF의 하드웨어 리셋으로부터 구동될 수 있다. 이 신호에 응답하여, 모든 서브 시스템은 디폴트 상태(default state)로 리셋되어야 한다.
[중재 (Arbitration)]
중재 신호는 어떤 마스터가 버스를 사용할 수 있는지의 여부를 판정하는데 사용된다. 버스 사용이 승인(grant)되면, 마스터는 후속 클럭 주기 동안 어드레스상 신호(address phase signals)를 구동할 수 있다. 동 마스터의 데이타 상(data phase)은 어드레스상에 이어 바로 발생될 것이다.
ㆍ REQn# - 버스 요구 신호는 버스를 액세스하고자 하는 마스터에 의해 발생된다. 마스터 능력을 갖는 모든 서브시스템에 대해 고유의 버스 요구 신호가 존재한다. 후속 클럭 주기 동안 마스터를 결정하고 도출하기 위해, 버스 요구 신호는 중재 로직의 상승 클럭 에지 전에 충분히 발생되어야 한다. 이 버스 요구 신호는 마스터의 트랙잭션의 어드레스상 동안 해제되어야 한다.
ㆍ GNTn# - 버스 승인 신호는 어느 마스터가 후속 트랜잭션 동안 버스를 제어하는지를 선택하기 위해 중재 로직에 의해 동기적으로 발생된다. 마스터 능력을 갖는 모든 서브 시스템에 대해 고유의 버스 승인 신호가 존재한다. 매번의 트랜잭션의 어드레스상 동안, 버스 승인 신호는 후속 마스터를 나타내도록 변경된다. 중재자(arbiter)는 어떤 마스터가 불공평하게 버스를 장기간 이용 못하는 사례를 방지하기 위해, 공평성 알고리즘(fairness algorithm)을 사용하여야 한다.
ㆍ LOCK# - 마스터는 다중 트랜잭션 예를 들어, 원자적 판독-변경-기록 사이클(automic read-modify-write cycles) 동안 버스에 대한 배타적 액세스를 취득하기 위해, 잠금 신호를 사용할 수 있다. 잠금 신호는 트랜잭션의 어드레스상 동안 마스터에 의해 발생된다. 잠금 신호는 최종 트랜잭션의 어드레스상 때까지 REQn# 및 LOCK#신호 둘다를 유지해야 한다. 마스터가 슬레이브로부터 NACK를 연속적으로 수신했으면, 마스터는 슬레이브에 대한 배타적 액세스를 취득하여 강제적으로 사이클을 완료하기 위해 LOCK#신호를 사용해야 한다.
[어드레스상(address phase)]
어드레스상 신호는 모두 마스터에 의해 구동된다. 모든 D-캐쉬는 어드레스상 신호를 디코딩하여 라인이 공급되어야 하는지 무효화되어야 하는지 여부를 판정해야 한다. 또한 DRAM 및 호스트 인터페이스는 어드레스를 디코딩하여 어드레스가 그들 자신의 지정된 영역내에 속하는지의 여부를 판정해야 한다.
ㆍ ADS# - 어드레스 스트로브 신호(address strobe signal)는 유효 어드레스상동안 마스터에 의해 구동된다. 어드레스 스트로브 신호는 이하 설명되는 신호가 유효 상태로 구동될 수 있는 자격을 부여한다.
ㆍ WR -기록 신호는 판독 사이클과 기록 사이클을 구별한다. 즉, 기록신호는 데이타상 동안 마스터가 데이타 버스를 구동할 것인지 또는 슬레이브가 데이타 버스를 구동할 것인지의 여부를 판정한다.
ㆍ ADR4-23 - 이들 어드레스 라인은 트랜잭션의 목적지 어드레스 (destination address)를 지정한다. 버스는 전체 라인(16 바이트)을 일시에 전송하기 때문에, ADRO-3은 존재하지 않음에 유의하여야 한다. 물리적 어드레스는 16Mbytes로 한정됨에 유의하여야 한다.
이하의 신호들은 어드레스 수식자(address qualifier)의 일부로 고려된다:
ㆍ MIDO-3 - 마스터 ID 비트(최대 15개까지 가능한 마스터 서브시스템-0은 미사용)은 스트림 트랜잭션 동안 마스터에 의해 구동되어 목적지 마스터가 지정되도록 한다. 마스터는 다른 모든 트랜잭션 동안 자신의 ID를 구동한다. 판독 트랜잭션이 분할이면, 슬레이브는 판독 응답 동안 ID를 래치하고, 래치된 ID를 사용하여 보류 상태의 마스터를 어드레스해야 한다.
ㆍ LAH - 룩 어헤드 어드레스 수식자는 현재의 어드레스로부터 순차적인 어드레싱이 예상됨을 캐쉬 서브시스템에 알려주기 위해 사용된다. 따라서, 캐쉬는 필요한 경우 후속 라인을 취득해야 한다.
ㆍ STR - 스트림 신호는 MIDO-3에 의해 지정된 특정 마스터가 어드레스되어야 함을 나타내는데 사용된다. 스트림 트랜잭션은 트랜잭션의 데이타 (및 어드레스)가 특정 마스터에 대해 의도된 경우의 가상 FIFO 및 판독 응답에 대해 사용된다. 판독 응답 동안, 보류중인 마스터는 항상 데이타를 수용할 수 있으므로 NACK는 수신될 수 없다. 가상 FIFO 지원 동안, NACK는 FIFO가 충만(기록) 또는 공백(판독)인 경우에 수신될 수 있다.
ㆍ BC - 브로드캐스트 신호는 이 사이클 동안 모든 마스터가 참여하여야 함을 나타내는데 사용된다. 기록 브로드캐스트 동안, 모든 마스터는 버스로부터의 데이타를 래치하려 시도한다. 이것은 데이타가 다수의 프로세서에 의해 사용되는 경우에 유용하다. 브로드캐스트 신호는 각각의 프로세서가 데이타를 개별적으로 검색할 필요성을 제거함으로써 라인 버스 대역폭을 절약한다. 판독 브로드캐스트(브로드 호출(broadcall))는 이를 개시한 마스터 외에도 모든 캐쉬가 데이타를 래치하여 시도한다는 점을 제외하고는 메모리 판독과 동일하다.
ㆍ ACQ/RPL - 취득/응답 신호(acquire/reply signal)는 통상의 메모리 판독과 취득 판독(acquire read)을 구별하는데 사용된다. 취득은 기록 실패의 결과로서 행하여지고, 라인에 대한 배타적인 액세스를 얻는데 사용된다. 또한, 취득/응답 신호는 스트림 기록과 판독 응답을 구별한다.
ㆍ IO - IO신호는 입/출력 인스트럭션과 통상의 메모리 판독 및 기록을 구별하는데 사용된다. 호스트 인터페이스는 라인 버스로부터의 IO 어드레스 공간에 응답하는 유일한 서브시스템이다.
ㆍ HOST- HOST신호는 호스트 버스에 대해 메모리 사이클이 의도된 것임을 나타내는데 사용된다. PVP는 마스터가 되어야 하고, 호스트 버스상에서 메모리 사이클을 수행해야 한다. 현재로는 단지 메모리 공간만이 지원된다(I0는 지원 안됨).
[데이타상]
ㆍ DATO-127 - 데이타 신호는 전송될 라인(또는 부분적인 라인)의 데이타 비트를 포함한다. DATO-7은 라인의 바이트 0과 대응하고, DAT120-127는 라인의 바이트 15와 대응한다. 데이타는 리틀 엔디안 순서(little endian order)로 정렬 된다.
ㆍ BEO-15# - 바이트 이네이블 신호는 어느 바이트(DAT 신호)가 유효 데이타를 포함하는지를 나타내기 위해 구동된다. 실제로, 무효 바이트에 대해 대응하는 DAT신호는 제 3상태가 되어야 한다(tristated)
ㆍ DIRTY - 이 신호는 BEO-15# 비트가 라인내의 어느 바이트가 유효하며 혹은 어느 바이트가 오염된 것인지를 나타내는지 여부를 표시하기 위해 사용된다.
ㆍ DACK# - 데이타 확인 신호는 차후 데이타상 동안 (기록시) 데이타 전송을 수용하거나 혹은 (판독시) 데이타를 공급할 수 있는 임의의 (또한 모든) 슬레이브에 의해 발생된다
ㆍ QACK# - 큐 확인 신호는 어드레스된 슬레이브에 의해 발생되어, 기록 동안 기록 데이타가 큐잉(queuing)되었거나 혹은 판독 요구가 큐잉되었음을 나타낸다. 판독 동안, 이는 버스 사이클이 분할되었음을 나타낸다. 즉,슬레이브는 요구된 데이타를 복귀시키기 위해 버스 중재를 요청해야 한다. QACK는 DACK# 보다 우선 순위가 낮다. 즉, 동일한 판독 데이타상 동안, DACK#이 D-캐쉬에 의해 복귀되고 DACK#이 DRAM I/F에 의해 복귀되면, DRAM I/F는 DRAM 판독을 중단해야 한다.
ㆍ NACK# - 부정적 확인 신호는 어드레스된 슬레이브가 비지 상태(busy)이고 요구된 데이타를 복귀(또는 래치)시킬 수 없거나 혹은 이 요구 자체를 래치시킬 수 없을 때 이 어드레스된 슬레이브에 의해 복귀된다. NACK#에 응답하여, 마스터는 다시 버스 중재 요청하고, 버스 트랜잭션을 즉시 재시도해야 한다.
중재는 라인 버스의 마스터 즉 어드레스상 신호를 구동하는 장치로서 하나의 장치만이 선택되도록 하는 메카니즘이다. 라인 버스에 접속되는 거의 모든 장치는 마스터 자격을 가지며 DRAM 인터페이스 조차도 마스터 자격을 갖는다. DRAM 인터페이스는 분할 트랜잭션 사이클 동안 데이타를 복귀시키기 위해서 마스터가 되어야 한다. 라인 버스의 어드레스상 및 데이타상은 파이프라이닝되기 때문에, 마스터는 실제로는 단일 클럭 사이클 동안만 버스를 소유한다. 따라서, 라인 버스를 지속적으로 비지 상태(busy)로 유지하기 위해서는 중재도 단일 클럭 사이클 동안에 발생하여야 한다.
라인 버스(34)의 소유권에 관한 중재 신호는 버스 사이클과 동시에 발생한다. 즉, 하나의 마스터가 버스상에서 전송을 수행하는 동안, 이 버스를 경쟁적으로 얻고자 하는 모든 마스터가 요구를 발생하며, 중재 로직이 이를 해결한다. 따라서, 후속의 사용가능한 버스 사이클 동안에 후속 마스터가 선택될 수 있다. 제4도에는 다수의 마스터가 버스를 동시에 요구하는 예가 도시되어 있다. 중재 로직은 버스가 유휴 상태가 되지 않도록 클럭 사이클 마다 새로운 마스터를 선택할 수 있다.
중재 로직은 비동기 로직이다-중재 로직은 하나의 클럭을 다 소비하지 않고도 승인 신호를 발생할 수 있다. 요구 신호는 하나의 클럭 에지 후에 즉시 발생 되어, 승인 로직이 후속 클럭 에지 전에 결정할 수 있도록 한다. n 클럭에서 승인 신호 수신 후, (승인 신호를 수신한) 에이전트(agent)는 n+1 사이클을 자신의 트랜잭션의 어드레스상으로서 소유하고, n+2 사이클을 자신의 데이타상으로서 소유한다. 데이타는 어드레스 정보가 과 로드된 버스(heavily loaded bus)를 거쳐 캐쉬 적중 로직(cache hit logic)을 통해 전파 지연(propagation delay)된 후라야 복귀될 수 있으므로, 전술한 바와 같은 하나의 클럭 지연이 필요하다고 사료된다. 중재 장치는 어떤 에이전트가 불공평하게 버스를 장기간 이용 못하는 사태 즉 굶주림 현상을 방지하기 위해, 공평성 알고리즘(예를 들어 회전 우선순위(rotation priority))를 구현해야 한다. 버스에 대한 액세스를 확장하기 위해 LOCK# 신호가 버스 사이클의 어드레스상 동안 발생할 수 있다. 이는 원자적 버스 사이클을 구현하거나 혹은 목적지 에이전트로부터의 반복적인 NACK로 인한 굶주림 현상(starvation)을 방지하기 위해 사용될 수 있다
이하의 표는 라인 버스상에서 발생될 수 있는 트랜잭션을 요약한 것이다.
메모리 판독은 서브시스템이 캐쉬 라인 취득을 요구할 때마다 발생될 것이다(이는 통상 캐쉬 실패의 결과이다). 판독 사이클 타이밍의 몇가지 실시예는 제5도에 도시되어 있다.
도면을 참조하면, 사이클 A는 마스터(Ml)가 라인을 요구할 때 발생된다. 판독 요구는 DRAM에 의해 래치되지만, 데이타는 아직 DRAM으로부터 판독되지 않았다. 따라서, 트랜잭션은 큐 확인 신호인 QACK와 함께 종료된다. DRAM I/F는 DRAM으로부터 요구된 라인을 판독 중에 있다. 사이클 B동안, 제 2 마스터(M2)가 라인을 요구한다. 이 경우, DRAM I/F는 마스터가 사이클을 반복해야함을 나타내는 부정적 확인 신호인 NACK를 복귀시킨다. 그러나, 동시에 스누핑 캐쉬(snooping cache)가 자신이 요구된 라인의 유효 사본(copy)을 가졌음을 검출하고 이 유효 사본을 데이타 확인 신호인 DACK와 함께 제공한다. 그러면, 마스터(M2)는 데이타 사본을 수신할 수 있으며 재시도할 필요가 없어진다. 사이클 C 동안, 제 3 마스터(M3)는 라인 판독에 응답하여 부정적 확인 신호인 NACK를 또한 수신한다. 이 마스터는 다시 버스 중재 요청하고 사이클을 재시도해야 한다. 사이클 D 동안, DRAM 인터페이스는 마스터(Ml)가 요구한 데이타를 획득한다. DRAM 인터페이스는 버스 중재 요청하고, 판독 응답 트랜잭션을 사용하여 데이타를 전송한다. 사이클 D 동안, 마스터(M3)는 사이클을 재시도하고, DRAM 인터페이스는 요구를 큐잉한다.
사이클 B 동안, 스누핑 캐쉬는 라인의 일부(예를 들어, 1 오염 바이트)만을 갖고 있을 수도 있다. 이 경우, 제 2 실패가 발생될 수 있고, 마스터(M2)는 라인을 다시 요구해야 할 것이다. DRAM으로부터 라인이 수신되면, 라인은 이미 캐쉬된 오염 데이타와 병합(merge)되어야 한다.
메모리 취득 신호는 마스터가 캐쉬 라인의 내용을 변경하기 위해 동 캐쉬 라인에 대한 배타적 액세스를 취득할 필요가 있는 경우에 발생될 것이다(이는 캐쉬 기록 실패의 결과일 것이다). 취득 사이클은 취득 사이클을 개시한 캐쉬가 DACK를 풀링(pulling)하므로써 DRAM 사이클을 중단시키므로 DRAM 인터페이스가 관계하지 않은 것을 제외하고는 판독 사이클과 매우 유사하다. 따라서, 취득 사이클이 유효 데이타를 발생하지 않을 수도 있다(그럴 가능성이 크다). 취득 사이클 동안, 취득 사이클을 개시한 캐쉬는 유효 데이타를 오염 데이타로서 래치한다. 따라서, 라인의 전부 또는 일부는 나중에 (메모리로) 되기록(write back)되어야 한다.
캐쉬간 오염 라인을 전달하는 이 프로토콜은 그래픽 응용에서 매우 유용하게 사용될 수 있다. 예를 들어, 2개의 프로세서가 복수의 다각형(polygons)을 표현 하고 있으며, 이 다각형간의 경계는 보통 그러하듯 캐쉬 라인내에 위치하는 것으로 가정한다. 화소(pels)가 각각의 프로세서에 의해 기록됨에 따라 (오염된 내용을 부분적으로 갖는) 라인은 요구된 바와 같이 캐쉬 사이에서 전달될 것이다. 이들 캐쉬중 하나가 라인을 캐쉬 외부로 축출하는 경우에만 데이타가 DRAM에 기록될 것이다. 따라서, DRAM 인터페이스는 두 프로세서가 여러번의 개별 화소 기록을 수행한 연후에야 하나의 라인 기록을 경험하게 될 것이다.
메모리 기록 신호는 서브시스템이 라인을 기록할 필요가 있을 때마다 발생 될 것이다(이는 통상 몇가지 예는 제6도에 도시되어 있다.
도면을 참조하면, 사이클 A는 마스터(M1)가 라인을 기록할 때 발생된다. 기록 신호는 DRAM 인터페이스로 통보(post)된다. 트랜잭션은 큐 확인 신호인 QACK와 함께 종료된다. DRAM I/F는 요구된 라인을 DRAM에 기록 중이다. 사이클 B 동안, 제 2 마스터(M2)는 라인을 기록한다. DRAM 인터페이스는 이 기록 신호 또한 통보할 수 있고 따라서 큐 확인 신호인 QACK를 다시 복귀시킨다. 그러나, 동시에 스누핑 캐쉬는 오염 데이터를 수용할 자유사용 라인(free line)을 갖고 있음을 검출하며 다라서 이 스누핑 캐쉬는 데이터를 수신하고 데이터 확인 신호인 DACK를 복귀시킨다. DRAM 인터페이스는 이 DACK를 검출하고, DRAM에 대한 보류중인 기록 사이클을 종료시킬 수 있다. 사이클 C 동안, 제 3 마스터(M3)는 기록 신호를 DRAM 인터페이스에 큐잉할 수 있다. 사이클 D 동안 제 4 마스터(M4)는 DRAM 제어기에 라인을 기록하여 시도하지만, 부정적 확인 신호를 수신한다. 사이클 E 동안 마스터(M4)는 사이클을 재시도하고, DRAM 인터페이스는 이 요구를 큐잉한다.
인터리브(interleave)된 DRAM 인터페이스가 존재할 수 있음을 인식하는 것이 중요하다. 대기 상태를 삽입하는 대신 NACK를 사용하면, 다른 마스터가 다른 뱅크(alternate bank)를 액세스할 수 있도록 버스가 해방(free)될 수 있다.
브로드캐스트 사이클은 마스터가 데이타를 DRAM에 기록하려 시도한다는 점에서 메모리 기록 사이클과 유사하다 . 다른 모든 캐쉬는 데이타 전송이 발생하기(NACK가 아니고 QACK)를 감시하고 데이타를 각자의 캐쉬에 동시에 저장한다. 브로드 호출 사이클은 마스터가 DRAM으로부터 데이타를 판독하려 시도한다는 점에서 메모리 판독과 유사하다. 판독 사이클과 마찬가지로, 데이타는 캐쉬에 의해 제공 될 수 있고, DRAM 사이클은 종료될 수 있다. 차이점은 모든 캐쉬가 데이타를 동시에 래치시키는 것이다. 요구된 브로드 호출 데이타가 캐쉬내의 오염 데이타이면, 오염 라인의 보유자는 브로드 호출에 대해 NACK를 복귀시키고 되기록을 개시한다. 브로드캐스트 데이타는 캐쉬내의 무효 라인을 채울 것이고, 유효 라인을 중첩 기록(overwrite)할 것이다. 캐쉬는 전체 캐쉬 세트가 오염 데이타인 경우에만 브로드캐스트 데이타를 수용하지 않는다.
일반적으로 브로드캐스트/브로드 호출 사이클은 모든 프로세서에 의해 참조 될 필요가 있는 데이타 구조에 대한 라인 버스 통신량을 감소시키는 경향이 있다. 공유 데이타 구조(shared data structure)가 변경될 때는 DRAM이 지속적으로 갱신되므로 DRAM의 대역폭은 여전히 높을 수 있다. 프로그래머는 데이타 구조를 브로드캐스트 공간에 배치할 때에는 신중하여야 한다. 브로드캐스트 공간이 너무 많으면, 캐쉬를 과도하게 차지하게 되며, 따라서 표준 메모리 참조시 캐쉬 실패가 빈번하게 발생된다.
스트림 I/O는 가상 FIFO가 구현될 수 있도록 하는 메카니즘이다. 가상 FIFO는 두개의 비동기 프로세스간의 데이타를 자동적으로 버퍼링하는 FIFO처럼 사용될 수 있는 캐쉬의 한 섹션이다.
제7도를 참조하면, 2개의 FIFO가 2개의 캐쉬 내에서 제각기 최대 깊이 x로 설정되었다. FIFO는 캐쉬(32)내에 존재하는 원형 버퍼(circular buffer)로 고려 될 수 있다. 입/출력 장치는 FIFO에 또는 FIFO로부터 입/출력하기 위해 올바른 순차 어드레스를 발생시켜야 할 책임이 있다. 예를 들어, FIFO가 100H 어드레스에서 개시하였고 16 바이트인 경우, 입/출력에 대한 어드레스 순서는 l00H, 101H, 102H‥‥‥ 10FH, 100H, l01H‥‥ 이어야 한다. 본 예에서는, 호스트 인터페이스는 데이타를 제 2 프로세서에 대응하는 캐쉬내에 위치된 FIFO에 전송한다. FIFO가 충만 상태(full)이면(원형 버퍼의 모든 위치가 점유된 경우), 캐쉬는 NACK을 호스트 인터페이스에 복귀시킬 것이다. 그러면, 호스트는 데이타가 수용될 때까지 계속 재시도할 것이다. 유사하게, 프로세서는 FIFO로부터 판독할 수 있다. FIFO가 비어 있으면, 프로세서는 데이타가 기록될 때까지 정지할 것이다. 2개의 프로세서가 거의 동일한 속도로 수행한다면, 데이타는 이들 프로세서 사이에서 매우 적은 폴링 지연(polling delay)으로 진행(progress)해 나갈 수 있다.
제7도에는 라인 버스에 대해 반대 방향으로 지시(point)된 FIFO가 도시되어 있다. 제 2프로세서는 제 1프로세서의 캐쉬내에 위치된 FIFO로부터 판독할 수 있다. FIFO내에 데이타가 존재하지 않을 때 판독하려 하면 NACK가 복귀되고, 제 2 프로세서는 재시도가 완료될 때까지 정지할 것이다. 유사하게, 충만 상태의 FIFO에 기록을 시도하는 경우, 제 1 프로세서는 정지할 것이다.
PVP 아키텍처는 통합된 단일 메모리 어드레스 공간으로 구성된다. PVP내의 각 프로세서는 임의의 메모리 장소를 액세스한다. PVP의 개선된 캐쉬 아키텍처는 시스템내의 여러 프로세서 사이에서 데이타 코히어런시(data coherency)를 유지한다.
PVP 인스트럭션 세트는 메모리와 레지스터를 액세스하도록 구축되었다. PVP 모델에서 I/O 공간은 (상위 8 비트에 의해 제공되는 특수 어드레싱 모드를 제외하고는) 구성되지 않는다. 그러나, 호스트 인터페이스는 PVP의 제어 버스를 액세스하여 제어 기능을 수행하기 위해 호스트 I/O사이클을 사용한다. PVP내의 각각의 프로세서는 16MB 어드레스 공간에서 임의의 장소를 액세스하거나 혹은 호스트 메모리 공간에서 물리 메모리의 31 비트까지 호스트 메모리 공간에서 임의의 어드레스를 액세스할 수 있다. PVP는 호스트 마스터일 수 있고, 메모리 또는 I/O 사이클을 개시할 수 있다.
래스터 버퍼(raster buffer)는 프로그램가능한 메모리 위치에 재배치될 수 있다. PVP용 메모리 맵은 사용자 구성(user configuration)에 따라 변한다. 각각의 프로세서 코드 및 데이타 영역은 16MB 어드레스 영역 어디에나 위치될 수 있다. 가장 보편적인 모델은 래스터 버퍼가 어드레스 0에서 시작하도록 하고 이어서 4개의 프로세서에 대한 4개의 어드레스 공간를 갖는 것이다. 각각의 프로세서는 코드를 임의의 주어진 장소에 재배치하는데 사용되는 어드레스 재배치 레지스터(address relocation register:ARR)를 갖는다. 다수의 프로세서는 고유의 로컬 데이타 영역을 갖는 공통 코드 영역(common code area)을 사용할 수 있음에 유의하여야 한다.
PVP의 각각의 프로세서는 32 비트값을 포함하는 어드레스 공간 레지스터를 가지며, 이때 32 비트값은 모든 코드 인출(code fetches)에 대해 오프셋(offset)으로 사용된다. 이 어드레스는 시스템의 모든 코드 인출 및 모든 유효 어드레스 발생에 대해서 가산된다. 이로 인해 각 프로세서의 코드 윈도우(code window)는 매우 용이하게 이동될 수 있다. 모든 데이타 인출은 절대값을 사용하며 재배치 레지스터를 사용하지 않는다. 따라서, 프로그래머가 필요한 데이타 어드레스를 사용하여 계산해야 할 책임이 있다.
프로그래머는 재배치 레지스터를 액세스할 수 있고, 이 레지스터를 사용하여 필요한 데이터 오퍼레이션에 대한 유효 어드레스를 형성할 수 있다.
PVP의 프로세서는 프로세서 장치 내의 여러 위치로부터 인스트럭션 인출을 위한 유효 어드레스를 발생할 수 있다. 이들 위치는 이하의 개시된 것을 포함한다:
1. 룩 어헤드 옵션(look ahead option)이 이네이블되어 있으면 항상 세트되는 프로세서의 인스트럭션 포인터(instruction Pointer: IP).
2. 점프 인스트럭션(jump instruction)이 실행될 때 복귀 어드레스를 포함하는 프로세서의 분기 및 링크 레지스터(Branch and Link register: BAL). 이 BAL은 복귀 인스트럭션(BAL을 IP로 이동)에 의해 사용됨.
3. 인터럽트 벡터 어드레스(Interrupt Vector Address). 이 어드레스 포인터는 여러 예외 루틴(exceptions routine)에 의해 사용됨.
4. 인스트럭션 자체에서 제공되는 직접 어드레스(immediate address). (직접 어드레스로 점프 )
5. IP 레지스터 값에 인스트럭션내의 부호형 오프셋(signed offset)을 가산하여 발생되는 오프셋 어드레스.
6. 인덱스 레지스터에 위치하는 어드레스. (IDX를 IP로 이동)
메모리 어드레스의 상위 8 비트는 물리 어드레스 공간의 하위 24 비트와 결합하여 사용되는 제어 비트를 포함한다. 프로세서 캐쉬, DRAM 인터페이스 및 호스트 인터페이스는 이들 비트를 각종의 특별 기능(various special functions)으로 해석한다. 보통의 메모리 어드레스 공간은 수식자(qualifier)가 모두 0(zero)이다. 인덱스 레지스터가 로드 직접 인스트럭션(load immediate instruction)(24 비트)을 통해 로드될 때, 이들 비트는 제로로 디폴드(default)된다. 편의상 각 인덱스 레지스터의 제어 레지스터는 모든 인덱스 레지스터 메모리 오퍼레이션에 사용되는 상위 8 비트를 포함한다. 이로써 사용자는 인덱스 레지스터를 특별한 동작을 위해 설정할 수 있다.
수식자 비트는 다음과 같이 정의된다
최대 유효 비트(mest significant bit)가 세트되면, 이는 호스트 메모리 공간 오퍼레이션을 나타낸다. 호스트 인터페이스 장치는 호스트 프로세서 측에 마스터 사이클을 발생하므로써 이 어드레스에 응답할 것이다. 나머지 상위 7 비트는 필요에 따라 호스트 메모리 공간에 대한 실제 어드레스 비트로서 사용된다.
이 모드는 메모리 오퍼레이션이 스트림 형태임을 나타내는데 사용된다. 마스터 ID는 어떤 프로세서 또는 장치 캐쉬가 메모리 트랜잭션을 수용할지 그 목적지를 어드레스하는데 사용된다.
이 모드는 메모리 오퍼레이션이 브로드캐스트인지를 나타내는데 사용된다. 각 프로세서의 로컬 D 캐쉬는 메모리/데이타 오퍼레이션을 캐쉬하려 시도할 것이다. 브로드캐스트는 다수의 캐쉬 장치가 동시에 동일한 데이타를 캐쉬하여 장래의 액세스에 대비할 수 있게 해준다.
이 모드는 캐쉬 장치에게 현재의 메모리 어드레스상에서 룩 어헤드를 수행해야 함을 나타내는데 사용된다. 캐쉬 장치는 DRAM으로부터 후속 메모리 라인을 인출할 것이다. DRAM 인터페이스도 또한 DRAM으로부터의 후속 라인을 자신의 로컬 캐쉬로 인출할 것이며, 이로 인해 N+1/N+2 파이프라인이 설정된다.
이 모드는 현재의 오퍼레이션이 I/O 어드레스임을 나타내는데 사용된다. I/O 어드레스는 상기 로컬 비트값에 따라 로컬 I/O 어드레스이거나 혹은 외부 호스트 I/O 사이클일 수 있다. 호스트 인터페이스 장치는 외부 I/O 요구를 선택할 것이며, I/O 공간 어드레스 지정에 필요한 하위 24 비트를 사용하여 호스트 I/O 공간에 마스터 I/O사이클을 발생할 것이다.
로컬 I/O사이클은 PYP의 각 프로세서에 접속된 데이타 포트에 의해 디코딩되고 응답(respond)된다. 비디오 입력 FIFO는 PVP의 데이타 포트중 하나에 접속되는 I/O 장치의 일 예이다. 프로세서는 FIFO로부터의 생 비디오' 데이터(live video data)를 로컬 I/O를 통해 판독하고, 이어서 이 데이타를 처리한다.
이 비트는 하나의 바이트가 캐쉬 장치로부터 판독될 때, 캐쉬 제어기가 유효 비트를 자동적으로 클리어(clear)시켜 라인을 무효화시키도록 한다. 라인이 충만 상태이면(모든 바이트가 사용된 경우), 라인은 DRAM 장치에 자동적으로 기록되고, 라인은 무효화된다.
PVP 프로세서 컴플젝스는 ALU 오퍼레이션 및 로드/저장 오퍼레이션 둘다 단일 클럭으로 동시에 실행될 수 있도록 하는 수퍼 스칼라 아키텍처(super scalar architecture)로 구성된다. 모든 오퍼레이션은 실행시 한 클릭을 소요한다. 그러나, PVP 장치는 비디오 처리를 위해 고유하게 설계되어 있기 때문에, 여러 오퍼레이션을 단일 사이클로 수행할 수 있고, MPEG 및 생비디오 등과 같은 디지탈 데이타 스트림을 처리하도록 설계된다. 인스트럭션은 2가지 형식(format) 즉, 단 형식(short format) 및 장 형식(long format)(로드/저장 오퍼레이션으로 일컬어짐)을 갖는다. 단 형식의 오퍼레이션은 ALU 오퍼레이션이 동시에 수행되도록 한다. 장 형식은 전체 인스트러션 워드를 차지하며 ALU 오퍼레이션이 수행되지 않는다. 단 형식이 가장 일반적인 것으로 ALU 및 로드/저장 장치가 동시에 수행되도록 한다. 장 형식은 로드/저장 장치에 의해 독점적으로 사용되며, 이 인스트럭션에 의해 ALU는 후속 인스트럭션 워드(1 클럭)때 까지 정지된다.
인스트럭션 스트림은 인스트럭션 포인터(IP)를 사용하여 I 캐쉬로부터 인출되며, 이때 인스트럭션 포인터(IP)는 항상 DWORD(32 비트) 엔트리(하위 2 비트=0)를 지정한다. (분기 또는 인터럽트가 발생하지 않는 것으로 가정하면) 각각의 캐쉬 라인은 프로세서에 의해 4개의 클럭 동안 소비되는 4개의 인스트럭션으로 구성된다. 프로세서 컴플렉스가 (인스트럭션을 대기하며) 정지하는 것을 방지하기 위해, 1 캐쉬 제어기는 정밀한 프리페치 및 분기 타겟 알고리즘(sophisticated prefetch and branch target algorithm)을 포함한다.
(제8도에 참조번호(42a)로 도시된) 인스트럭션 디코더는 ALU 및 로드/저장장치의 오퍼레이션을 제어하기 위해 단순한 디코더 및 디멀티플렉서를 사용한다. 클럭 에지 때마다, ALU 및 로드/저장 장치의 결과같은 적절한 레지스터로 래치되고, 새로운 인스트럭션은 디코드 버퍼로 래치되고, 인스트럭션 포인터(IP)는 자동적으로 증분된다. 인스트럭션 포인터(IP)가 (클럭 에지 때) 증분되어 후속 인스트럭션을 지정하고 있더라도, 디코드 버퍼는 항상 현재의 인스트럭션을 보유한다. 따라서, 후속 인스트럭션은 현재의 인스트럭션이 점프 인스트럭션이어서 IP를 변경하더라도 디코드 버퍼로 래치된다. 즉 점프 인스트럭션의 후속 인스트럭션은 언제나 실행된다. 그러나, I 캐쉬는 후속 인스트럭션 어드레스를 조기에 취득하고 요구 데이타를 제공할 시간을 갖게 된다. I 캐쉬에서 사용되는 프리페치 알고리즘으로 인해, 인스트럭션 룩 어헤드의 깊이를 더 이상 깊게할 필요가 없었다.
로드/저장 장치(41a) 및 ALU(40a)는 항상 잠금 단계 방식(lock step fashion)으로 실행한다. 이것은 프로그래머에게 인스트럭션 재배열(instruction reorder)의 부담을 주지만, 칩의 복잡도를 크게 줄일 수 있다.
인스트럭션 캐쉬(31)는 마이크로코드화된 장치의 실행가능한 코드를 저장하는데 사용된다. 프로그램 저장 장소는 코드가 인위적인 제한을 갖지 않도록 하기 위해 고정 어드레스 데이타 RAM이 아닌 캐쉬로 구성된다. 물론 캐쉬의 크기는 고정(1Kb)되지만, 캐쉬는 가장 최근에 실행된 코드를 보유하도록 동적으로 적응할 것이다. 인스트럭션 캐쉬는 단일 포트로도 족하다. 즉, (라인을 요구 마스터에 제공할 수 있지만) 라인을 무효화하기 위해 버스상에서 스누핑(snooping)을 수행할 필요는 없다. 따라서, 호스트 프로세서는 실행가능한 코드가 변경될 때마다 캐쉬를 무효화시킬 책임이 있다. 이 경우, 캐쉬는 DRAM으로부터의 캐쉬 라인을 다시 로드해야 한다.
캐쉬는 자동 룩 어헤드 기능을 갖춘 양방향 세트 연관 캐쉬(two way set associative cache)로서 구성된다. 각각의 인스트럭션 캐쉬 라인은 어드레스 태그(address tag)와 함께 16 데이타 바이트를 보유한다. 16Mb의 물리적 캐쉬 가능성을 갖는 양방향 세트 연관 IKb 캐쉬의 구성에서, 태그는 15개의 어드레스 비트가 필요할 것이다. 유효 비트는 라인이 유효한지의 여부를 나타내는데 사용된다. 호스트는 제어 버스를 사용하여 제어 비트에 기록하므로써 개별 인스트럭션 캐쉬를 플러시(flush)시킬 수 있다. 이는 모든 유효 비트를 동시에 클리어시키는 효과를 가질 수 있다. 이와 달리, 예를 들어 물리적 메모리의 상위 IKb 등 메모리내의 일정 영역이 비-실행 공간으로 유보(reserve)될 수 있다. 따라서, 유효 비트를 사용하지 않고서도, 모든 라인을 항상 유효한 것으로 추정될 것이다. 캐쉬를 플러쉬하면 모든 태그 비트는 1이 될 것이다(유보 어드레스 공간을 지정).
최소 최근 빈도(Least Recently Used: LRU) 비트는 각 세트에 대해 플래그로서 사용되어 캐쉬 실패가 발생할 때 어떤 라인을 방출할 것인가를 나타낸다. LRU비트의 가장 단순한 알고리즘은 다음과 같다:
ㆍ 현재 액세스된 라인이 ''A'' 라인이면, LRU = 0으로 설정.
ㆍ 현재 액세스된 라인이 ''B'' 라인이면, LRU = 1로 설정.
ㆍ 실패가 발생될 때 LRU = 1이면, 라인 ''A''를 교체.
ㆍ 실패가 발생될 때 LRU = 0이면, 라인 ''B''를 교체.
LRU 비트를 약간 상이하게 해석하는 다른 알고리즘이 선택될 수도 있다. 이 알고리즘은 캐쉬가 분기 타겟을 오랫동안 보유하도록 하는 효과가 있다.
ㆍ 캐쉬 실패가 발생될 때 LRU = 1이면, 라인 ''A''를 교체하고, LRU = 0로 설정.
ㆍ 캐쉬 실패가 발생될 때 LRU = 0이면, 라인 ''B''를 교체하고, LRU = 1로 설정.
코드 실행은 매우 순차적인 특성을 갖기 때문에, 인스트럭션 캐쉬는 항상 룩 어헤드 모드 상태이다. 즉, 인스트럭션 라인이 캐쉬로부터 인출될 때마다, 후속 순차 어드레스는 이 어드레스가 사용가능한지(어드레스 태그가 요구 태그와 정합하는지)를 검출하기 위해 비교된다. 후속 순차 어드레스가 사용가능하지 않으면, 룩 어헤드 실패가 발생되고, 코드 인출이 개시된다. 미리 캐쉬하기 위해서 캐쉬의 어드레스 디코더는 항상 현재의 세트 뿐만 아니라 후속 세트도 선택한다. 이것은 어드레스 디코더의 각 출력상에 OR 게이트를 제공하여 달성된다. 양 세트는 현재의 어드레스 적중과 선판독 적중(read ahead hit)을 수행하기 위해 동시에 인출된다.
메모리가 인덱스 레지스터를 통해 참조될 때, 변환 장치(translation unit)(Xlate)(44a)(제9도)는 대응하는 인덱스 제어 레지스터(index control register: ICR)에 포함된 변환 필드에 의해 제어된다. ICR은 N 변환 방안중 하나를 지정한다. 상이한 변환은 상이한 데이타 크기를 가지며, 이들 변환이 액세스하는 레지스터에 소경의 제한을 가한다. 모든 변환은 양방향이며, 로드 또는 저장 오퍼레이션에서 사용될 수 있다. 다음과 같은 변환이 지원된다.
1. 비-변환(디폴트) - 이 모드는 변경을 가하지 않고 데이타를 장치에 전송 로드/저장 장치의 op 코드에는 오퍼레이션의 폭이 제공된다.
2. RGB16 - 이 모드는 16 비트값을 취하며, 5 비트 RGB 값으로 분리하고, 각각의 5 비트값을 벡터 레지스터의 엘리먼트에 저장한다. RGB16의 최대 유효 비트(most significant bit)는 벡터 레지스터의 최대 유효 엘리먼트에 저장된다.
3. YUV 4:2:2 - 이 모드는 32 비트 길이의 YUV 4:2:2 데이타를 취하며, 4:2:2 데이타로부터 2개의 벡터 쌍을 생성한다. 각각의 벡터는 Cr의 값 및 Cb의 값과 함께 조도값(intensity value)을 포함하는 ''펠(pel1)''을 나타낸다. 최대 유효 엘리먼트는 변환에 영향을 받지 않는다. 이러한 변환은 항상 32 비트 데이타 및 이중 레지스터 쌍(double register pairs)에 대해 작동한다. Cr/Cb의 값은 로드 오퍼레이션시 복사(duplicate)되고, 제 2의 Cr/Cb의 값은 저장 오퍼레이션시 무시된다.
4. RGB32 (바이트-워드(Byte to Word)) - 이 모드는 32 비트값을 RGB24+알파(alpha) 형식으로 취하여, 대응하는 바이트를 벡터 레지스터의 엘리먼트에 로드 시킨다. 제 4 바이트는 알파 또는 다른 정보로서 사용될 수 있다. 바이트는 부호 확장(sign extend)되지 않는다.
5. 바이트 스왑(Byte Swap) - 이 모드는 정규 벡터 로드에서 바이트를 스왑(swap)시킨다. 이 변환은 64 비트 로드값에 대해 수행되고, 로드/저장 op 코드는 필요한 데이타를 단일 또는 이중 엘리먼트로 더욱 줄일 수 있다.
6. 워드 스왑(Word Swap) - 이 모드는 바이트 대신 16 비트 워드가 스왑되는 것을 제외하고는 바이트 스왑과 동일하다. 이 변환은 64 비트 로드값에 대해 수행되고, 로드/저장 op 코드는 필요한 데이타를 이중 엘리먼트로 더욱 줄일 수 있다. 엘리먼트 0은 엘리먼트 3이 되는 식으로 행하여 진다.
7. 비트 스왑(Bit Swap) - 이 모드는 로드된 16 비트값에 대해, 최대 유효 비트와 최소 유효 비트를 스왑하여 수행한다. 이 변환은 64 비트 로드값에 대해 수행되고, 로드/저장 op 코드는 필요한 데이타를 단일 또는 이중 엘리먼트로 더욱 줄일 수 있다.
8, 워드-더블 워드(Word to Dword) - 이 모드는 벡터 레지스터 또는 레지스터 쌍에 워드(16 비트)-더블 워드(32 비트) 로드를 수행한다. 이 워드는 부호 확장되지 않는다.
9. 패킹된 바이트(Byte Packed) - 각각의 워드는 교호하는 방식 (alternating fashion)으로 패킹된 바이트로 구성된다. 벡터 엘리먼트는 하나 걸러 하나의 바이트가 부호 확장되어 로드되고, 다른 바이트들은 동일한 방식으로 다른 벡터 레지스터에 로드된다. 이 모드는 색상 데이타와 같은 패킹된 데이타 값에 대해 유용하게 사용된다.
PVP의 복제 장치(replication unit)는 벡터 ALU 장치의 중요한 특징이다. 주 범용 벡터 레지스터(VRO-VR7)는 모두 오퍼레이션의 소스 및 목적지로서 엘리먼트 단위로 액세스될 수 있다. 목적지로 액세스되는 경우, 오퍼레이션은 선택된 벡터 엘리먼트만이 변경되도록 하는 단순한 엘리먼트 이네이블 제어(simple element enable control)로 족하다. 다른 모든 엘리먼트는 변경되지 않은 상태로 유지한다. 오퍼레이션 소스의 경우, 벡터의 지정된 서브 엘리먼트가 벡터의 나머지 엘리먼트로 복사된다. 이로써, 전체가 동일한 값을 갖는 벡터가 벡터 ALU 장치에 입력되는 효과를 가져온다.
레지스터는 액세스 크기 및 레지스터 속성을 기초로 레지스터 뱅크(register banks)의 3개의 논리 그룹으로 분할된다. 3개 레지스터 그룹은 범용 벡터 레지스터, 승산-누적(Multiply-Accumulate: MAC) 벡터 레지스터 및 인덱스/시스템 레지스터이다. 모든 레지스터는 6 비트 절대 레지스터 번호에 의해 액세스될 수 있다.
레지스터 번호(0-7)는 벡터 레지스터에 대해 유보되고, 레지스터 번호(8-15)는 MAC 레지스터에 대해 유보되고, 레지스터 번호(16-31)는 인덱스/시스템 레지스터에 대해 유보되며, 레지스터 번호(32-63)는 시스템/제어 레지스터에 대해 유보된다.
(제9도에 참조번호(45)로 도시된) 벡터 레지스터 화일은 4개의 엘리먼트를 제각기 포함하는 8개의 어드레스가능한 벡터 레지스터로 구성된다. 각각의 엘리먼트는 개별적으로 어드레스될 수 있는 16 비트 레지스터로 구성된다. 레지스터 벡터가 액세스되면, 이 레지스터 벡터는 단일 16 비트 엘리먼트, (각각 16 비트인) 4개의 엘리먼트 벡터 또는 (각각 32 비트인) 2개의 엘리먼트 벡터로서 보여질 수 있다. 또한, 소정의 로드/저장 오퍼레이션에서는 벡터 레지스터 쌍이 액세스될 수 있다.
벡터 레지스터는 3 비트 레지스터 번호로 표시되고, 어드레스 0-7(000-111)로 구성된다. 벡터의 서브 엘리먼트를 액세스하기 위해, 2 비트 서브 엘리먼트 번호(00-11)가 사용된다. 32 비트 오퍼레이션에 대한 서브 엘리먼트 번호는 0 또는 2 (00, 10)로 제한된다.
벡터 레지스터 화일은 복제 장치(Replication Unit) 및 서브 엘리먼트 장치(Sub Element Unit)로 일컬어지는 2개의 특징을 갖는다. 복제 장치는 벡터 레지스터의 단일 엘리먼트를 벡터의 나머지 엘리먼트로 복제하는 기능을 수행한다. 이로써 데이타 버스에는 모든 엘리먼트가 동일한 값을 포함하는 벡터가 제공된다. 복제 장치는 임의의 벡터 레지스터의 임의의 엘리먼트를 복제할 수 있으며 16 비트 엘리먼트와 32 비트 엘리먼트를 지원한다.
서브 엘리먼트 장치는 사용자가 벡터의 특정 엘리먼트에 데이타를 저장할 수 있게 해 준다. 다른 엘리먼트는 영향을 받지 않는다. 선택된 서브 엘리먼트는 ALU 또는 로드/저장 오퍼레이션에 의해 변경된 내용을 갖는다. 서브 엘리먼트 장치는 16 비트 엘리먼트 및 32 비트 엘리먼트 둘다를 지원한다.
PVP의 ALU(40)는 4 엘리먼트 컨디션 코드 레지스터(Condition Code Register: CCR)를 갖는다. 4 엘리먼트 컨디션 코드 레지스터는 산술 인스트럭션, 논리 인스트럭션 및 조건부 인스트럭션 수행시 ALU에 의해 사용된다. CCR의 각 엘리먼트는 이에 대응하는 ALU에 의해 세트되거나 혹은 사용된다. 32 비트 오퍼레이션에 대해서는 CCR(0) 및 CCR(2)이 사동된다. CCR은 통상의 4개의 플래그 즉, 캐리(carry), 제로, 네거티브 및 오버플로우를 포함한다. 또한, CCR은 MAC의 대응하는 엘리먼트로부터의 캐리 플래그와 사용자에 의해 세트/클리어될 수 있는 3개의 사용자 플래그를 포함한다.
PVP의 고유 특징중 하나는 벡터 기반 ALU(vector based ALU)와 이에 대응하는 ''조건부'' 인스트럭션이다. 거의 모든 ALU 오퍼레이션은 조건부 모드를 가지며, 이 조건부 모드에서 ALU 오퍼레이션의 결과값은 각 엘리먼트에 대응하는 컨디션 코드에 기초하여 목적지 벡터에 되저장(store back)될 뿐이다. PVP의 조건부 오퍼레이션은 PVP가 벡터를 매우 효율적으로 처리하도록 해준다.
PVP 프로세서의 분기 및 링크 레지스터(BAL 및 BALI)는 모든 점프 인스트럭션 및 외부 인터럽트로부터의 복귀 어드레스를 저장하는데 사용된다. 모든 점프 (조건부 및 비조건부)는 IP가 BAL 레지스터에 저장되도록 한다. IP 어드레스를 메모리에 저장하여 다수 레벨의 서브루틴 네스팅(subroutine nesting)을 가능하게 하는 것은 타겟 장소(target location)의 임무이다. PVP의 이러한 특징은 필요한 경우 임의의 점프 인스트럭션이 서브루틴 호출(subroutine call)이 되도록 한다. 인터럽트는 현재의 IP가 BALI 레지스터에 저장되도록 하고, 인터립트 처리기가 BALI로부터의 복귀 어드레스를 저장할 때까지 인터럽트가 자동적으로 디스에이블되도록 하고, PCR에 인터럽트가 이네이블되도록 한다.
PVP의 인덱스 레지스터는 매우 강력하다. 각각의 인덱스 레지스터는 이에 대응하는 인덱스 제어 레지스터(ICRO-lCR7)를 구비하며 , 이 제어 레지스터는 인덱스 레지스터가 수행하는 각종 기능을 제어하는데 사용된다. 제10도에는 ICR 레지스터의 제어 비트가 도시되어 있다.
인덱스 레지스터는 로드/저장 장치를 통해 메모리를 액세스할 때마다 워드 크기만큼 자동적으로 증분되거나 혹은 감소된다. ICR의 이네이블/디스에이블 비트는 이러한 기능을 제어하는데 사용된다. 증분/감소 비트는 인덱스 포인터의 방향을 제어하는데 사용된다. 사후(post)/사전(pre) 비트는 자동 증분/감소가 발생되는 시간(오퍼레이션 전 또는 오퍼레이션 후)을 제어하는데 사용된다. 스택 제어 비트는 인덱스 레지스터가 스택과 유사하게 동작하도록 설정한다. 판독 오퍼레이션시, 인덱스 레지스터는 사전 증분되고 그 값은 메모리로부터 판독된다. 기록 오퍼레이션시, 데이타는 메모리에 기록되고 인덱스 레지스터는 사후 감소된다. 인덱스 카운트 이네이블/디스에이블 비트는 이와 연관된 카운트 레지스터도 또한 감소되는지의 여부를 제어하는데 사용된다. 카운트 레지스터는 항상 1씩 감소됨에 유의하여야 한다.
3 비트 원형 버퍼 제어 비트는 인덱스 레지스터를 원형 버퍼로 설정하는데 사용된다. 제로값은 이러한 기능을 디스에이블시킨다. 다른 7가지 상태는 원형 버퍼의 크기(n)를 2의 (n+2)승으로 나타낸다. 그 크기는 4 바이트에서 512 바이트의 범위를 갖는다. 이들 비트는 인덱스 레지스터가 증분/감소할 때 마스크(mask)로서 사용된다. 버퍼는 그 크기에 따라 정렬되어야 한다.
4 비트 Xlate 제어 비트는 이 인덱스 레지스터에 변환 기능을 지정하는데 사용된다. 제로값은 이 기능을 디스에이블시킨다. 다른상태는 로드/저장 장치에 의해 사용되는 변환 방법을 지정한다.
상위 어드레스의 8 비트는 PVP에 의해 지원되는 특수한 어드레스 모드를 제어하는데 사용된다.
PVP의 로드/저장 장치(41)는 메모리로부터 각종 데이타 폭을 로드할 수 있는 스칼라/벡터 로드/저장 장치로 구성된다. 메모리로부터/메모리로의 데이타의 최소폭은 16 비트 또는 2 바이트이다. 데이타 폭은 16, 32, 64 또는 128 비트일 수 있다. 이로써 로드/저장 장치는 각각의 엘리먼트 뿐만 아니라 완전 벡터(complete vectors) 및 이중 벡터(double vectors)를 메모리에 저장할 수 있다. 데이타는 임의의 바이트 경계에 존재할 수 있다. 바이트 정렬 장치는 정렬 문제를 처리할 것이다.
또한, 로드/저장 장치는 이와 연관된 변환 장치를 가지며, 모든 메모리 액세스는 이 변환 장치를 통해 수행된다. 변환 장치는 인덱스 제어 레지스터에 의해 제어된다. 디폴트 모드에서, 변환 장치는 데이타를 통과시킨다. 다른 모드는 변환 장치가 RGB16 또는 YUV 4:2:2와 같은 상이한 데이타 형태로/로부터 변환되도록 한다. 모든 폭의 로드 저장 오퍼레이션이 임의의 워드 경계상에서 발생될 수 있도록 하는 바이트 정렬 장치가 또한 포함된다. 따라서, 64 비트 및 128 비트의 로드 저장 오퍼레이션은 통상적인 어드레스 경계에서 발생할 필요는 없다.
로드/저장 오퍼레이션은 단 형식 및 장 형식으로 일컬어지는 2가지 형식을 갖는다. 단 형식의 로드/저장 오퍼레이션은 ALU 오퍼레이션과 동시에 발생하고, 장 형식의 로드/저장 오퍼레이션은 홀로 실행하고 1 클럭 동안 ALU의 수행을 정지 시킨다.
모든 단 형식의 로드/저장 오퍼레이션은 8개의 인덱스 레지스터중 하나를 거쳐 직접 메모리를 참조한다. 메모리로부터의 모든 단 형식의 로드/저장 오퍼레시션의 소스/목적지는 주 벡터 레지스터 화일 또는 MAC 레지스터 화일이다. 인덱스 값은 메모리로부터 장 형식으로만 직접 로드될 수 있다. 인덱스는 직접값(immediate values)을 통해 로드되거나 혹은 벡터 레지스터중 하나로부터의 이동을 통해 로드되어진다.
비디오 래스터 장치(video rasterizer)(36)(제11도)는 화상을 출력 비디오 장치상에 나타내주는 서브시스템이다. 이 장치는 가장 흔하게는 CRT이며, 이는 출력 스트림의 형식이 수직 및 수평 동기 신호를 수반한 RGB 또는 YUV로 인코딩된 데이타 스트림임을 의미하기도 한다.
래스터 장치는 라인 버스(34)상에서 단지 마스터로서 동작한다. 래스터 장치는 출력 스트림을 발생하기 위해 DRAM의 적절한 부분을 판독할 것이다. 이러한 이유로 인해, 래스터 장치는 마이크로코드화된 장치중 하나와 유사한 데이타 캐쉬(46)를 포함할 것이다. 이 캐쉬의 목적은 단지 캐쉬 코히어런시 프로토콜만을 유지하고, 효율적인 라인 전송 모드를 사용하여 데이타가 판독되도록 하는 것이므로, 캐쉬의 크기는 더욱 작아질 수 있다. 전송을 관리하는 ''장치''(48)는 YUV 또는 RGB 출력 버퍼의 각종 재생 주파수(refresh frequencies)에 대해 데이타를 판독 및 변환할 수 있는 하드코딩된 장치(hardcoded engine)일 것이다. 상기 장치는 스트림 데이타를 FIFO에 기록하고, 기록된 데이타는 DAC에 제공되어 출력될 것이다. 또한, 특별한 출력 프로세싱이 요구되면, FIFO는 범용 장치(30d)(제3도)에 의해 채워질 수 있다. 비디오 데이타는 FIFO로부터 출력 도트 클럭에 동기되어 출력될 것이다. 라인 버스 충돌(line bus contention) 때문에, 출력 장치는 FIFO를 간헐적으로 채울 것이다. FIFO가 거의 공백 상태이면, 래스터 장치는 버스를 잠그고 FIFO를 채울 수 있다. 통상, FIFO는 거의 충만 상태에서 동작하여야 하므로, 통상의 버스 요구가 출력을 래스터하는데 사용될 수 있다.
제12도에는 MPEG2 알고리즘을 PVP상에 매핑하는 방안이 도시되어 있다.
장치(1)는 직렬 입력 FIFO와 물리적으로 접속된다. 따라서, 논리적으로 장치(1)는 가변 길이 디코딩을 수행할 것이고, 다른 3개의 마스터 제어기로서 수행할 것이다. 장치(1)는 64개의 엘리먼트 어레이를 어셈블링하여 역 주사 프로세스(inverse scan process)로 전달할 것이다. 이러한 데이타 전달은 공유 메모리 버퍼를 통해 수행된다. 그렇지만, 캐쉬 구조로 인해, 실제로 데이타는 DRAM에 결코 기록될 수 없음에 유의하여야 한다. 데이타는 오염 상태로 머무를 것이고 필요에 따라 캐쉬간에 이동될 것이다. 2개의 장치(2, 3)는 8× 8 매트릭스를 역 주사하고, 역 양자화(inverse quantization)하고, 역 이산 코사인 변환(IDCT)하도록 제공된 것이다. 이들 두 장치는 초당 100,000개의 비-제로(non zero) 8× 8 매트릭스를 처리할 수 있어야 한다. 움직임 보상(motion compensation)이 최종 장치에 의해 수행된다. 최종 장치는 IDCT의 출력을 수신하고 나서, 기준 블록(reference block(s))을 가산하여 현재의 블럭을 형성한다. 비디오 출력 서브시스템은 현재의 프레임이 구성되는 동안 이전 프레임의 YCrCb 버퍼가 디스플레이되도록 구성되어야 한다.
도면 및 명세서에서, 본 발명의 바람직한 실시예가 개시되었고 특정 용어가 사용되었으나, 개시된 본 발명의 설명은 그 용어를 보편적이고 기술적인 의미로 사용한 것이지, 본 발명을 제한하고자 의도한 것이 아님을 이해하여야 한다.

Claims (17)

  1. 집적회로 장치에 있어서, 기판(a substrate)과, 상기 기판상에 형성되고 제각기 인스트럭션 캐쉬(an instruction cache), 데이타 캐쉬(a data cache), 버스 인터페이스 장치(a bus interface unit) 및 산술논리 연산 장치(an arithmetic logic unit)를 구비하는 다수의 동일한 프로세서(a plurality of identical processors)와; 상기 기판상에 형성되고 상기 다수의 프로세서의 각각과 작동적으로 연관되는 다수의 인덱스 레지스터(a plurality of index registers)-상기 인덱스 레지스터의 각각은 상기 프로세서중 자신과 연관된 프로세서가 액세스할 수 있는 인덱스 데이타를 수신 및 저장하여 상기 연관된 데이타 캐쉬의 내외로(into and out of the associated cache) 데이타 흐름을 지정(direct)함-와; 제각기 상기 기판상에 형성되고 상기 인덱스 레지스터중 대응하는 인덱스 레지스터와 작동적으로 연관되어 상기 인덱스 레지스터의 다수의 기능(a plurality of functions)과 다수의 어드레싱 모드(a plurality of addressing modes)를 제어하는 제어 데이타를 수신 및 저장하는 다수의 인덱스 제어 레지스터-상기 제어 데이타는 적어도 제 1 고정 크기(first fixed size)의 제 1 제어 필드 및 제 2 고정 크기의 제 2 제어 필드를 구비하며, 상기 제 1 필드는 상기 인덱스 레지스터의 어드레싱 모드를 제어하고 상기 제 2 필드는 상기 인덱스 레지스터의 상기 다수의 기능중 적어도 하나의 기능을 제어함-와; 상기 기판상에 형성되고 상기 다수의 프로세서 모두를 상호접속하여 데이타 비트 스트림(data bit streams)을 이들 사이에 전송하는 라인 버스(a line bus)와, 상기 기판상에 형성되고 상기 라인 버스와 접속되어 입력 신호 스트림(an input signal stream)을 수신하는 비디오 입력 인터페이스 장치(a video input interface uni t )와 ; 상기 기판상에 형성되고 상기 라인 버스와 접속되어 상기 집적회로 장치로부터 상기 다수의 프로세서에 의해 처리 결정된 출력 비디오 신호 스트림(an output video signal stream)을 전송(deliver)하는 비디오 출력 인터페이스 장치(a video output interface unit )와 ; 상기 기판상에 형성되고 상기 라인 버스와 접속되어, 상기 다수의 프로세서의 기능을 제어하는 제어 신호를 호스트 프로세서(a host processor)와 교신(exchange)하는 호스트 인터페이스 장치(a host interface unit)와; 상기 기판상에 형성되고 상기 호스트 인터페이스 장치 및 상기 다수의 프로세서를 상호접속되어, 상기 라인 버스상으로 전송되는 데이타 비트 스트림과는 별개로, 제어 신호를 교신하는 제어 버스(a control bus)와; 상기 기판상에 형성되고 상기 라인 버스와 접속되어, 상기 다수의 프로세서에 의해 처리된/처리될 데이타 비트 스트림을 메모리 요소(memory elements)와 교신하는 메모리 인터페이스 장치(a memory interface unit)를 포함하는 집적회로 장치.
  2. 제1항에 있어서, 각각의 상기 프로세서는 로드/저장 장치(a load/store unit)를 더 포함하고, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터가 상기 연관된 로드/저장 장치에 의해 상기 메모리 요소를 액세스할 때마다 변경되는지의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치.
  3. 제1항에 있어서, 각각의 상기 프로세서는 로드/저장 장치를 더 포함하고, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인텍스 레지스터가 상기 연관된 로드/저장 장치에 의해 메모리를 액세스할 때 증가 또는 감소되는지 의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치.
  4. 제1항에 있어서, 각각의 상기 프로세서는 로드/저장 장치를 더 포함하고, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터가 상기 연관된 로드/저장 장치에 의해 메모리를 액세스하기 전에 변경되는지 혹은 메모리를 액세스한 후 변경되는지의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치 .
  5. 제1항에 있어서, 각각의 상기 프로세서는 로드/저장 장치를 더 포함하고, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터가 스택 포인터(a stack pointer)를 에뮬레이트(emulate)하는지의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치.
  6. 제1항에 있어서, 제각기 상기 기판상에 형성되고 상기 인텍스 레지스터중 대응하는 인덱스 레지스터와 작동적으로 연관되는 다수의 인덱스 카운트 레지스터(a plurality of index count registers)를 더 포함하며, 각각의 상기 프로세서는 로드/저장 장치를 더 포함하고 각각의 상기 인텍스 제어 레지스터는 상기 연관된 인덱스 카운트 레지스터가 상기 연관된 인덱스 레지스터의 액세스에 응답하여 자동적으로 감소되는지의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치.
  7. 제1항에 있어서, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터가 원형 버퍼(a circular buffer)로서 기능을 수행하는지의 여부를 나타내는 다수의 데이타 비트를 수신 및 저장하는 집적회로 장치 .
  8. 제1항에 있어서, 각각의 상기 프로세서는 로드/저장 장치를 더 포함하고, 각각의 상기 인덱스 제어 레지스터는 상기 로드/저장 장치의 데이타 변환 활동(a data translation activity)을 나타내는 다수의 데이타 비트를 수신 및 저장하는 집적회로 장치.
  9. 제1항에 있어서, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터의 어드레스 모드를 나타내는 다수의 데이타 비트를 수신 및 저장하는 집적회로 장치.
  10. 제2항에 있어서, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터가 상기 연관된 로드/저장 장치에 의해 메모리를 액세스할 때 증가되는지 또는 감소되는지의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치.
  11. 제2항에 있어서, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터가 상기 연관된 로드/저장 장치에 의해 메모리를 액세스하기 전에 변경되는지 혹은 메모리를 액세스한 후에 변경되는지의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치.
  12. 제2항에 있어서, 각각의 상기 인덱스 제어 레지스터가 상기 연관된 인덱스 레지스터가 스택 포인터를 에뮬레이트하는지의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치.
  13. 제2항에 있어서, 제각기 상기 기판상에 형성되고 상기 인덱스 레지스터중 대응하는 인덱스 레지스터와 작동적으로 연관되는 다수의 인덱스 카운트 레지스터를 더 포함하며, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 카운트 레지스터가 상기 인덱스 레지스터의 액세스에 응답하여 자동적으로 감소되는지의 여부를 나타내는 데이타 비트를 수신 및 저장하는 집적회로 장치 .
  14. 제2항에 있어서, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터가 원형버퍼로서 기능을 수행하는지의 여부를 나타내는 다수의 데이타 비트를 수신 및 저장하는 집적회로 장치.
  15. 제2항에 있어서, 각각의 상기 인덱스 제어 레지스터는 상기 로드/저장 장치의 데이타 변환 작용을 나타내는 다수의 데이타 비트를 수신 및 저장하는 집적회로 장치.
  16. 제2항에 있어서, 각각의 상기 인덱스 제어 레지스터는 상기 연관된 인덱스 레지스터의 어드레스 모드를 나타내는 다수의 데이타 비트를 수신 및 저장하는 집적회로 장치.
  17. 디지탈 데이타를 처리하고, 비디오 디스플레이 신호를 발생하는 시스템에 있어서, ① 중앙 처리 장치(CPU)와; ② 디지탈 데이타를 수신, 저장 및 전송하는 시스템 랜덤 액세스 메모리(system rendom access memory)와 ; ③ 상기 중앙 처리 장치 및 상기 시스템 랜덤 액세스 메모리를 상호접속하여, 상기 디지탈 신호를 전송하는 버스와; ④ 상기 버스에 접속되므로써 상기 중앙 처리 장치 및 상기 시스템 랜덤 액세스 메모리와 작동적으로 접속되고, 상기 중앙 처리 장치의 제어에 따라 비디오 디스플레이 신호를 처리하는 비디오 프로세서 집적회로 장치를 포함하되; 상기 비디오 프로세서 집적회로 장치는, ㉠ 기판(a substrate)과; ㉡ 상기 기판상에 형성되고 제각기 인스트럭션 캐쉬, 데이타 캐쉬, 버스 인터페이스 장치 및 산술논리 연산 장치를 구비하는 다수의 동일한 프로세서와; ㉢ 상기 기판상에 형성되고 상기 다수의 프로세서의 각각과 작동적으로 연관되는 다수의 인덱스 레지스터-상기 인덱스 레지스터의 각각은 상기 프로세서중 자신과 연관된 하나의 프로세서가 액세스할 수 있는 인덱스 데이타를 수신 및 저장하여 상기 연관된 데이타 캐쉬의 내외로 데이타 흐름을 지정함-와; ㉣ 제각기 상기 기판상에 형성되고 상기 인덱스 레지스터중 대응하는 인덱스 레지스터와 작동적으로 연관되어 상기 인덱스 레지스터의 다수의 기능과 다수의 어드레싱 모드를 제어하는 제어 데이타를 수신 및 저장하는 다수의 인덱스 제어 레지스터-상기 제어 데이타는 적어도 제 1 고정 크기의 제 1 제어 필드 및 제 2 고정 크기의 제 2 제어 필드를 구비하며, 상기 제 1 필드는 상기 인덱스 레지스터의 어드레싱 모드를 제어하고 상기 제 2 필드는 상기 인덱스 레지스터의 상기 다수의 기능중 적어도 하나의 기능을 제어함-와; ㉤ 상기 기판상에 형성되고 상기 다수의 프로세서 모두를 상호접속하여 데이타 비트 스트림을 이들 사이에 전송하는 라인 버스와: ㉥ 상기 기판상에 형성되고 상기 라인 버스와 접속되어 입력 신호 스트림을 수신하는 비디오 입력 인터페이스 장치와; ㉦ 상기 기판상에 형성되고 상기 라인 버스와 접속되어 상기 집적회로 장치로부터 상기 다수의 프로세서에 의해 처리 결정된 출력 비디오 신호 스트림을 전송하는 비디오 출력 인터페이스 장치와; ㉧ 상기 기판상에 형성되고 상기 라인 버스와 접속되어, 상기 다수의 프로세서의 기능을 제어하는 제어 신호를 호스트 프로세서와 교신하는 호스트 인터페이스 장치와; ㉤ 상기 기판상에 형성되고 상기 호스트 인터페이스 장치 및 상기 다수의 프로세서를 상호접속되어, 상기 라인 버스상으로 전송되는 데이타 비트 스트림과는 별개로, 제어 신호를 교신하는 제어 버스와; ㉤ 상기 기판상에 형성되고 상기 라인 버스와 접속되어, 상기 다수의 프로세서에 의해 처리된/처리될 데이타 비트 스트림을 메모리 요소와 교신하는 메모리 인터페이스 장치를 구비하는 디지탈 데이타 처리 및 비디오 디스플레이 신호 발생 시스템.
KR1019960017792A 1995-06-07 1996-05-23 집적회로 장치와 디지탈 데이타 처리 및 비디오 디스플레이 신호 발생 시스템 KR100246067B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US47220895A 1995-06-07 1995-06-07
US8/472,208 1995-06-07
US08/472,208 1995-06-07

Publications (2)

Publication Number Publication Date
KR970002590A KR970002590A (ko) 1997-01-28
KR100246067B1 true KR100246067B1 (ko) 2000-03-15

Family

ID=23874584

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960017792A KR100246067B1 (ko) 1995-06-07 1996-05-23 집적회로 장치와 디지탈 데이타 처리 및 비디오 디스플레이 신호 발생 시스템

Country Status (5)

Country Link
US (1) US5875463A (ko)
EP (1) EP0747872B1 (ko)
JP (1) JP3026756B2 (ko)
KR (1) KR100246067B1 (ko)
DE (1) DE69601599T2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6118462A (en) * 1997-07-01 2000-09-12 Memtrax Llc Computer system controller having internal memory and external memory control
GB2332344A (en) * 1997-12-09 1999-06-16 Sony Uk Ltd Set top box integrated circuit
US6347363B1 (en) * 1998-02-17 2002-02-12 International Business Machines Corporation Merged vertical cache controller mechanism with combined cache controller and snoop queries for in-line caches
FR2777370B1 (fr) * 1998-04-09 2000-06-23 Sgs Thomson Microelectronics Architecture de dsp optimisee pour les acces memoire
TW360798B (en) * 1998-05-15 1999-06-11 Chung Shan Inst Of Science Monolithic radar signal processing chip
US20030142107A1 (en) * 1999-07-16 2003-07-31 Intel Corporation Pixel engine
US6873658B2 (en) * 1999-12-20 2005-03-29 Texas Instruments Incorporated Digital still camera system and method
US7227589B1 (en) * 1999-12-22 2007-06-05 Intel Corporation Method and apparatus for video decoding on a multiprocessor system
US6847365B1 (en) * 2000-01-03 2005-01-25 Genesis Microchip Inc. Systems and methods for efficient processing of multimedia data
US6715089B2 (en) * 2001-01-22 2004-03-30 Ati International Srl Reducing power consumption by estimating engine load and reducing engine clock speed
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US7143264B2 (en) * 2002-10-10 2006-11-28 Intel Corporation Apparatus and method for performing data access in accordance with memory access patterns
US7098868B2 (en) * 2003-04-08 2006-08-29 Microsoft Corporation Display source divider
US7034776B1 (en) 2003-04-08 2006-04-25 Microsoft Corporation Video division detection methods and systems
US7737985B2 (en) * 2006-11-09 2010-06-15 Qualcomm Incorporated Pixel cache for 3D graphics circuitry
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8650337B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8639858B2 (en) 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
KR101104447B1 (ko) * 2011-01-31 2012-01-12 고려대학교 산학협력단 자궁외임신 치료 카테터, 카테터 가이드 및 이들을 구비하는 자궁외임신 치료 카테터 유니트
GB2552153B (en) * 2016-07-08 2019-07-24 Advanced Risc Mach Ltd An apparatus and method for performing a rearrangement operation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5239654A (en) * 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4606066A (en) * 1982-09-09 1986-08-12 Hitachi, Ltd. Programmable image processor
DE68928980T2 (de) * 1989-11-17 1999-08-19 Texas Instruments Inc Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
US5058065A (en) * 1990-02-26 1991-10-15 Eastman Kodak Company Memory based line-delay architecture
US5390304A (en) * 1990-09-28 1995-02-14 Texas Instruments, Incorporated Method and apparatus for processing block instructions in a data processor
US5479166A (en) * 1993-11-30 1995-12-26 Texas Instruments Incorporated Huffman decoding method, circuit and system employing conditional subtraction for conversion of negative numbers
US5394519A (en) * 1994-01-03 1995-02-28 International Business Machines Corp. Data processing apparatus for high resolution display in multiple virtual dos applications

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5239654A (en) * 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode

Also Published As

Publication number Publication date
JPH0954832A (ja) 1997-02-25
DE69601599T2 (de) 1999-10-14
US5875463A (en) 1999-02-23
JP3026756B2 (ja) 2000-03-27
EP0747872B1 (en) 1999-03-03
KR970002590A (ko) 1997-01-28
EP0747872A1 (en) 1996-12-11
DE69601599D1 (de) 1999-04-08

Similar Documents

Publication Publication Date Title
KR100246067B1 (ko) 집적회로 장치와 디지탈 데이타 처리 및 비디오 디스플레이 신호 발생 시스템
US5860086A (en) Video processor with serialization FIFO
US5638531A (en) Multiprocessor integrated circuit with video refresh logic employing instruction/data caching and associated timing synchronization
KR100218620B1 (ko) 집적회로 장치, 디지탈 데이타 처리 및 영상 디스플레이 신호 발생 장치, 프로세서 컴플렉스
KR100227278B1 (ko) 캐쉬 제어 유닛
US6185629B1 (en) Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US7546444B1 (en) Register set used in multithreaded parallel processor architecture
US5560030A (en) Transfer processor with transparency
US5359715A (en) Architectures for computer systems having multiple processors, multiple system buses and multiple I/O buses interfaced via multiple ported interfaces
JP3285644B2 (ja) キャッシュメモリを有するデータプロセッサ
CA1325285C (en) Method and apparatus for ordering and queueing multiple memory requests
US5524265A (en) Architecture of transfer processor
JP3431626B2 (ja) データ処理装置
US5784076A (en) Video processor implementing various data translations using control registers
KR100218619B1 (ko) 집적회로 장치와, 디지탈 데이타 처리 및 비디오 디스플레이신호발생시스템
US5893921A (en) Method for maintaining memory coherency in a computer system having a cache utilizing snoop address injection during a read transaction by a dual memory bus controller
US5269005A (en) Method and apparatus for transferring data within a computer system
EP0671718B1 (en) Data processor for guided transfer line drawing
US5724599A (en) Message passing and blast interrupt from processor
US5651127A (en) Guided transfers with variable stepping
US5493646A (en) Pixel block transfer with transparency
EP0671719A1 (en) Transfer processor with transparency
EP0726524A2 (en) Protocol and system for performing line-fill addressing during copy-back operation

Legal Events

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

Payment date: 20051109

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee