KR100372061B1 - 데이터전송에의해제어되는가이드테이블을갖는데이터프로세싱장치 - Google Patents

데이터전송에의해제어되는가이드테이블을갖는데이터프로세싱장치 Download PDF

Info

Publication number
KR100372061B1
KR100372061B1 KR1019950005074A KR19950005074A KR100372061B1 KR 100372061 B1 KR100372061 B1 KR 100372061B1 KR 1019950005074 A KR1019950005074 A KR 1019950005074A KR 19950005074 A KR19950005074 A KR 19950005074A KR 100372061 B1 KR100372061 B1 KR 100372061B1
Authority
KR
South Korea
Prior art keywords
address
memory
packet
destination
bit
Prior art date
Application number
KR1019950005074A
Other languages
English (en)
Other versions
KR950033816A (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
Priority claimed from US08/209,124 external-priority patent/US5487146A/en
Priority claimed from US08/209,123 external-priority patent/US5651127A/en
Application filed by 텍사스 인스트루먼츠 인코포레이티드 filed Critical 텍사스 인스트루먼츠 인코포레이티드
Publication of KR950033816A publication Critical patent/KR950033816A/ko
Application granted granted Critical
Publication of KR100372061B1 publication Critical patent/KR100372061B1/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
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped 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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

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)
  • Image Processing (AREA)
  • Bus Control (AREA)
  • Image Input (AREA)
  • Memory System (AREA)

Abstract

본 발명은 메모리 엑세스의 어드레스 제어 방식이다. 본 발명의 데이타 프로세싱 장치는 메모리, 제어 회로, 가이드 테이블 및 어드레스 발생 회로를 포함한다. 제어 회로는 패킷 전송 요구 및 패킷 전송 파라메타를 포함한다. 패킷 전송 파라메타는 스타트 어드레스, 가이드 테이블 엔트리의 수 및 테이블 포인터를 포함한다. 가이드 테이블은 각각이 어드레스 값 및 어드레스 블럭을 정의하는 차원 값을 갖는 가이드 테이블 엔트리들을 포함한다. 테이블 포인터 초기에 가이드 테이블 내의 제1 가이드 테이블 엔트리를 지정한다. 어드레스 발생 회로는 스타트 어드레스 및 가이드 테이블 엔트리의 어드레스 값의 선정된 조합으로부터의 스타트 어드레스를 갖는, 각각의 가이드 테이블 엔트리에 대응하는 메모리 엑세스 용의 어드레스 블럭 셋트를 형성한다. 어드레스 블럭은 차원 값으로부터 형성된다. 메모리 엑세스 이후에, 어그레스 발생 회로는 가이드 테이블 내의 다음 엔트리를 지정하도록 테이블 포인터를 갱신한다. 어드레스 발생 회로는 어드레스 값을 이전의 블럭 스타팅 어드레스에 가산함으로써 또는 가이드 테이블 값을 스타팅 어드레스에 가산함으로써 스타트 어드레스와 가이드 테이블 엔트리의 어드레스 값의 선정된 조합을 선택적으로 형성할 수 있다. 메모리 엑세스는 어드레스 블럭으로부터의 메모리 판독 또는 어드레스 블럭으로의 메모리 기입이다. 양호한 실시예에서, 메모리, 데이타 프로세서 및 상기 메모리 엑세스를 수행하는 데이타 전송 제어기는 단일 반도체 칩내에 구성된다. 데이타 전송 제어기는 온-칩 메모리와 동일한 방식으로 외부 메모리에 엑세스할 수 있다.

Description

데이터 전송에 의해 제어되는 가이드 테이블을 갖는 데이터 프로세싱 장치
본 발명의 분야는 디지탈 데이타 프로세싱의 분야이고 구체적으로 특히 디지탈 영상/그래픽 프로세싱과 같은 디지탈 데이타 프로세싱을 위한 멀티프로세서 회로, 아키텍처 및 방법의 분야이다.
본 발명의 실시예는 몇가지는 예시적인 배경으로서 본 명세서에 설명된 컴퓨터 그래픽의 분야에 관한 여러가지 응용을 갖고 있다. 비트 맵 그래픽으로서 공지된 컴퓨터 그래픽 분야에 있어서, 컴퓨터 메모리는 각각의 개별적인 화상 요소 또는 영상의 화소에 대한 데이타를 영상 내의 그 픽셀의 위치에 대응하는 메모리 위치에 저장한다. 이 영상은 디스플레이될 영상이거나 또는 조작, 저장, 디스플레이 또는 재전송될 영상일 수 있다. 비트 맵 컴퓨터 그래픽의 분야는 다이너믹 랜덤 엑세스 메모리(DRAM)의 낮추어진 가격 및 증가된 용량과 마이크로프로세서의 낮추어진 가격 및 증가된 프로세싱으로부터 상당히 이익을 얻고 있다. 소자 부품의 가격 및 성능에서의 이러한 유리한 변화는 보다 크고 복잡한 컴퓨터 영상 시스템을 경제적으로 이용가능하게 하였다.
비트 맵 그래픽의 분야는 영상 데이타 조작에 사용된 프로세싱 형태의 진전에서 여러 단계를 거쳐 왔다. 처음에 컴퓨터 시스템 지원 비트 맵 그래픽은 모든 비트 맵 동작을 위해 시스템 프로세서를 이용하였다. 이런 형태의 시스템은 몇가지 단점을 갖고 있다. 첫째 컴퓨터 시스템 프로세서는 비트 맵 그래픽을 다루기 위해 특별히 설계되지 않았다. 범용 컴퓨팅을 위해 매우 합당한 설계 선택은 비트 맵 그래픽 시스템에 적합하지 않다. 결과적으로 몇가지 루틴한 그래픽 타스크는 느리게 동작하였다. 또한, 비트 맵 그래픽의 영상 조작에 필요한 프로세싱은 다른 동작이 또한 늦게 되도록 시스템 프로세서의 계산 용량에 부담이 되었다는 것이 빨리 발견되었다.
비트 맵 그래픽 프로세싱의 발전의 다음 단계는 전용 하드웨어 그래픽 제어기였다. 이들 장치는 시스템 프로세서의 제어하에서 선, 타원 및 원과 같은 간단한 그림을 그릴 수 있다. 이들 장치의 몇개는 또한 픽셀 블럭 전송(PixBlt)을 할 수 있다. 픽셀 블럭 전송은 메모리의 한 부분으로부터 다른 부분까지의 영상 데이타의 메모리 이동 동작이다. 픽셀 블럭 전송은 비디스플레이 메모리에서부터 비트 맵 디스플레이 메모리로의 전송에 의해 디스플레이내의 특정한 형태의 폰트의 알파뉴메릭(alphanumeric) 문자와 같이 표준 영상 요소를 제공하는데 유용하다. 이 기능은 또한 동일한 작은 영상을 비트 맵 디스플레이 메모리의 전체에 전송함으로써 타일링(tiling)하는데 사용될 수 있다. 가장 빈번하게 사용되는 그래픽 기능들 중 몇가지 기능을 수행하기 위한 내장(built-in) 알고리즘은 시스템 성능을 개선시키는 방법을 제공한다. 또한 그래픽 컴퓨터 시스템은 이러한 하드웨어 그래픽 제어기에서 구현된 몇가지 것들 이외의 다른 기능들을 바람직하게 포함할 수 있다. 이들 부가적인 기능들은 시스템 프로세서에 의해 소프트웨어에서 구현될 수 있다. 이들 하드웨어 그래픽 제어기는 전형적으로 시스템 프로세서로 하여금 비트 맵 메모리 제한된 엑세스만을 허용한다. 이것은 시스템 소프트웨어가 하드웨어 그래픽 제어기의 고정된 셋트의 함수를 증대시킬 수 있는 정도를 제한시킨다.
그래픽 시스템 프로세서는 비트 맵 그래픽 프로세싱의 발전의 또 다른 단계를 나타낸다. 그래픽 시스템 프로세서는 마이크로프로세서의 모든 어트리뷰트(attributes)를 갖고 비트 맵 그래픽을 위한 특별한 기능을 또한 포함하는 프로그래머블 장치이다. 텍사스 인스트루먼츠 인코포레이트에 의해 제조된 TMS34010 및 TMS34020 그래픽 시스템 프로세서는 이 부류의 장치를 대표한다. 이들 그래픽 시스템 프로세서는 마이크로프로세서와 동일한 방식으로 저장된 프로그램에 응답하고 산술 논리 유닛, 레지스터 파일 내의 데이타 저장 및 프로그램 플로우와 외부 데이타 메모리의 제어를 통한 데이타 조작의 능력을 포함한다. 또한, 이들 장치는 프로그램 제어하에 동작하는 특수 목적 그래픽 조작 하드웨어를 포함한다. 이들 그래픽 시스템 프로세서의 명령 셋트내의 부수적 명령들은 특수 목적 그래픽 하드웨어를 제어한다. 이들 명령과 이들 명령을 지원하는 하드웨어는 많은 콘텍스트에 유용한 베이스 레벨 그래픽 기능을 수행하는데 사용된다. 그러므로 그래픽 시스템 프로세서는 특정한 문제를 위해 선택된 알고리즘을 사용하는 여러가지 다른 그래픽 응용을 위해 프로그램될 수 있다. 이것은 하드웨어 제어기로부터 프로그램된 마이크로프로세서로 변경시킴으로써 제공된 것과 유사한 유용성의 증가를 제공한다. 이러한 그래픽 시스템 프로세서들은 마이크로프로세서와 동일한 방식으로 프로그램 가능한 장치이기 때문에, 이들은 스탠드 얼론(stand alone) 그래픽 프로세서, 시스템 프로세서에 슬레이브 되거나 또는 그래픽 제어기에 강하게 결합된 코프로세서로서 동작할 수 있다.
여러가지 분야가 경제적으로 이용가능할 가격면에서 보다 효과적이고, 강력한 그래픽 동작을 바람직하게 사용할 것이다. 이들은 다른 예들 중에서 비디오 컨퍼런싱(Conferencing), 풀 모우션(full motion) 비디오를 갖는 멀티 미디어 컴퓨팅, 고품위 텔레비젼, 컬러 팩시밀리, 스마트 포토카피어(smart photocopier), 영상 인식 시스템 및 디지탈 포토그래픽을 포함한다. 각각의 이들 분야는 독특한 문제를 나타낸다. 영상 데이타 컴프레션(compression) 및 디컴프레션(decompression)은 몇가지 이들 응용에서 공통 테마이다. 송신 대역폭의 양 및 영상 및 특정한 풀 모우션 비디오에 요구되는 저장 용량의 양은 막대하다. 허용가능한 최종 영상 품질을 발생시키는 효율적인 비디오 컴프레션 및 디컴프레션이 없다면, 이들 응용은 송신 대역폭 및 저장 용량과 관련한 가격에 의해 제약 받을 것이다. 또한 본 기술에서 영상 인식과 같은 영상 프로세싱 기능과 디스플레이 제어와 같은 그래픽 기능 모두를 지원할 수 있는 단일 시스템이 필요하다.
본 발명은 메모리 엑세스의 어드레스의 제어 방식이다. 본 발명의 데이타 프로세싱 장치는 메모리, 제어 회로, 가이드 테이블 및 어드레스 발생 회로를 포함한다. 제어 회로는 패킷 전송 요구 및 패킷 전송 파라메타를 수신한다. 패킷 전송 파라메타는 스타트 어드레스, 다수의 가이드 테이블 엔트리 및 테이블 포인터를 포함한다. 가이드 테이블은 각각 어드레스의 블럭을 정해주는 어드레스 값 및 차원 값을 갖는 가이드 테이블 엔트리들을 포함한다. 테이블 포인터는 초기에 가이드 테이블내의 제1 가이드 테이블 엔트리를 지정한다. 어드레스 발생 회로는 각각의 가이드 테이블 엔트리에 대응하는 메모리 엑세스를 하기 위한 어드레스 블럭의 셋트를 형성한다. 어드레스 발생 회로는 스타트 어드레스와 테이블 포인터에 의해 지정된가이드 테이블 엔트리의 어드레스 값의 선정된 조합으로부터 블럭 스타트 어드레스를 형성한다. 제1블럭 스타트 어드레스는 스타트 어드레스이다. 어드레스 발생 회로는 블럭 스타트 어드레스와 테이블 포인터에 의해 지정된 가이드 테이블 엔트리의 차원 값으로부터 어드레스 블럭을 형성한다. 어드레스 발생 회로는 블럭 스타트 어드레스와 가이드 테이블 엔트리의 차원 값으로부터 어드레스의 블럭을 형성한다. 데이타 프로세싱 장치는 어드레스 블럭에 대한 메모리 엑세스를 수행한다. 메모리 엑세스 이후에, 어드레스 발생회로는 가이드 테이블내의 다음 엔트리를 지정하기 위해 테이블 포인터를 업데이트한다.
어드레스 발생 회로는 어드레스 값을 이전의 블럭 스타팅 어드레스에 더함으로써 스타팅 어드레스와 가이드 테이블 엔트리의 어드레스 값의 선정된 조합을 형성할 수 있다. 이것은 델타 가이드 어드레싱이라고 공지되어 있다. 어드레스 발생회로는 가이드 테이블 값을 스타팅 어드레스에 더함으로써 스타팅 어드레스와 가이드 테이블 엔트리의 어드레스 값의 선정된 조합을 임의로 형성할 수 있다. 이것은 오프셋 가이드 어드레싱이라고 공지되어 있다.
각각의 가이드 테이블 엔트리의 차원 값들은 픽셀 어레이의 수평 차원 값과 수직 차원 값으로 구성된다.
메모리 엑세스는 어드레스 블럭으로부터의 메모리 판독일 수 있다. 메모리 엑세스는 어드레스 블랙으로의 메모리 기입일 수 있다.
양호한 실시예에서, 메모리, 데이타 프로세서 및 상기 메모리 엑세스를 수행하는 데이타 전송 제어기는 단일 반도체 칩내에 구성된다.
데이타 전송 제어기는 온-칩 메모리와 동일한 방식으로 외부 메모리에 엑세스할 수 있다.
본 발명의 실시예의 이러한 특징 및 다른 특징은 첨부 도면과 함께 다음에 설명될 것이다.
제1도는 본 발명에 따라 영상 및 그래픽 프로세싱을 위해 구성된 멀티프로세서 집적 회로를 포함하는 영상 데이타 프로세싱 시스템의 블럭도이다. 이 데이타 프로세싱 시스템은 호스트 프로세싱 시스템(1)을 포함한다. 호스트 프로세싱 시스템(1)은 제1도의 데이타 프로세싱 시스템의 호스트 시스템을 위한 데이타 프로세싱을 제공한다, 호스트 프로세싱 시스템(1) 내에는 프로세서, 최소한 하나의 입력 장치, 장기(long term) 저장 장치, 리드 온리 메모리, 랜덤 엑세스 메모리 및 호스트 시스템 버스에 결합된 최소한 하나의 호스트 주변(2)가 포함되어 있다. 그 프로세싱 기능으로 인해, 호스트 프로세싱 시스템(1)은 영상 데이타 프로세싱 시스템의 기능을 제어한다.
멀티 프로세서 집적 회로(100)은 제1도의 영상 데이타 프로세싱 시스템의 영상 동작을 위한 데이타 조작 및 계산을 포함하는 대부분의 데이타 프로세싱을 제공한다. 멀티프로세서 집적 회로(100)은 영상 시스템 버스에 양방향 결합되고 이 영상 시스템 버스에 의해 호스트 프로세싱 시스템(1)과 통신한다. 제1도의 구성에서, 멀티프로세서 집적 회로(100)은 호스트 프로세싱 시스템(1)와 독립적으로 동작한다. 그러나, 멀티프로세서 집적 회로(100)은 호스트 프로세싱 시스템(1)에 응답한다.
제1도의 2개의 영상 시스템을 도시한다. 영상 장치(3)은 영상 입력 장치로서 기능하는 도큐먼트 스캐너, 전하 결합 장치 스캐너 또는 비디오 카메라를 나타낸다. 영상 장치(3)은 영상을 디지타이즈하여 이것을 라스터 스캔 프레임으로 형성하는 기능을 하는 영상 포착 제어기(4)에 이 영상을 공급한다. 이 프레임 포착 프로세스는 멀티프로세서 집적 회로(100)으로부터의 신호에 의해 제어된다. 이렇게 형성된 영상 프레임은 비디오 랜덤 엑세스 메모리(5) 내에 저장된다. 비디오 랜덤 억세스 메모리(5)는 멀티프로세서 집적 회로(100) 의해 영상 프로세싱을 위한 데이타 전송을 허용하는 영상 시스템 버스를 경유하여 엑세스될 수 있다.
제2 영상 시스템은 비디오 디스플레이를 구동시킨다. 멀티프로세서 집적회로(100)은 픽셀 맵을 경유하여 디스플레이된 영상의 특정화를 위해 비디오 랜덤 엑세스 메모리(6)과 통신한다. 멀티프로세서 집적 회로(100)은 영상 시스템 버스를 경유하여 비디오 랜덤 엑세스 메모리 내에 저장된 영상 데이타를 제어한다. 이 영상에 대응하는 데이타는 비디오 랜덤 엑세스 메모리(6)으로부터 리콜(recall)되어 비디오 팰럿(7)에 공급된다. 비디오 팰럿(7)은 이 리콜된 데이타를 다른 컬러 공간으로 변형시켜 픽셀당 비트수 등을 확장할 수 있다. 이러한 변환은 룩업 테이블을 통해 달성될 수 있다. 비디오 팰럿(7)은 비디오 디스플레이(8)을 구동시키기 위해 적절한 비디오 신호를 발생시킨다. 이러한 비디오 신호가 아날로그 신호이면, 비디오 팰럿(7)은 적합한 디지털-아날로그 변환을 포함한다. 비디오 팰럿(7)로부터 출력된 비디오 레벨 신호는 컬러, 포화도 및 휘도 정보를 포함할 수 있다. 멀티프로세서 집적 회로(100)은 비디오 팰럿(7) 내에 저장된 데이타를 제어하여, 데이타변형 프로세스 및 영상 프레임의 타이밍을 제어한다. 멀티프로세서 집적회로(100)은 비디오 팰럿(7)의 제어에 의해 비디오 디스플레이 영상의 프레임당 라인 길이 및 라인수, 동기화 리트레이스, 및 블랭킹 신호를 제어할 수 있다. 중요하게, 멀티프로세서 집적 회로(100)은 그래픽 디스플레이 정보가 비디오 랜덤 엑세스 메모리(6) 어디에 저장되는지를 결정하고 제어한다. 후속적으로, 비디오 랜덤 엑세스 메모리(6)으로부터 독출중에는, 멀티프로세서 집적 회로(100)은 비디오 랜덤 엑세스 메모리(6)으로부터의 독출 시퀀스, 엑세스될 어드레스, 및 비디오 디스플레이(8) 상에 원하는 그래픽 영상을 발생시키는데 필요한 제어 정보를 결정한다.
비디오 디스플레이(8)은 사용자가 볼 수 있도록 특정된 비디오 디스플레이를 발생시킨다. 2가지의 광범위하게 사용되는 기술이 있다. 첫번째 기술은 각 픽셀의 컬러, 색조(hue), 휘도 및 포화도에 관련하여 비디오 데이타를 특정화한다. 두번째 기술에서는, 적, 청 및 녹의 컬러 레벨이 각 픽셀에 대해 특정화된다. 비디오 팰럿(7)과 비디오 디스플레이(8)은 선택된 기술과 호환성이 있도록 설계되어 제조된다.
제1도는 영상 시스템 버스에 결합된 부가 메모리(9)를 도시한다. 이 부가 메모리는 부가 비디오 랜덤 엑세스 메모리, 다이너믹 랜덤 엑세스 메모리, 스태틱 랜덤 엑세스 메모리 또는 리드 온리 메모리를 포함할 수 있다. 멀티프로세서 집적회로(100)은 메모리(9) 내에 저장된 프로그램에 의해 전체적으로 또는 부분적으로 제어될 수 있다. 이 메모리(9)는 또한 여러가지 형태의 그래픽 영상 데이타를 저장할수 있다. 또한, 멀티프로세서 집적 회로(100)은 양호하게는 비디오 랜덤 엑세스 메모리, 다이너믹 랜덤 엑세스 메모리 및 스태틱 랜덤 엑세스 메모리용 메모리 인터페이스 회로를 포함한다. 그러므로, 시스템은 어떤 비디오 랜덤 엑세스 메모리(5 또는 6)이 없이도 멀티프로세서 집적 회로(100)을 사용하여 구성될 수 있다.
제1도는 송수신기(16)을 도시한다. 송수신기(16)은 영상 시스템 버스와 통신 채널사이의 트랜슬레이션 및 양방향 통신을 제공한다. 송수신기(16)을 이용하는 시스템의 한 예는 비디오 컨퍼런싱이다. 제1도에 도시된 영상 데이타 프로세싱 시스템은 제1 위치에 사람의 비디오 영상을 형성하기 위해 영상 장치(3) 및 영상 포착 제어기(4)를 사용한다. 멀티프로세서 집적 회로(100)은 비디오 컴프레션을 제공하고 컴프레스된 비디오 신호를 송수신기(16) 및 통신 채널을 통해 다른 위치에 있는 유사한 영상 데이타 프로세싱 시스템에 송신한다. 송수신기(16)은 유사하게 컴프레스된 비디오 신호를 통신 채널을 통해 원격 영상 데이타 프로세싱 시스템으로부터 수신한다. 멀티프로세서 집적 회로(100)은 이 수신된 신호를 디컴프레스하여 비디오 디스플레이(8)에 대응하는 디컴프레스된 비디오 신호를 디스플레이하기 위해 비디오 랜덤 엑세스 메모리(6) 및 비디오 팰럿(7)을 제어한다. 이것은 영상 데이타 프로세싱 시스템이 송수신기(6)을 이용하는 유일한 예가 아니다. 또한, 양방향 통신은 동일한 형태의 신호일 필요는 없다. 예를 들어, 상호작용 케이블 텔레비젼 신호에 있어서 케이블 시스템 헤드인은 통신 채널을 통해 컴프레스된 비디오 신호를 영상 데이타 프로세싱 시스템에 전송한다. 영상 데이타 프로세싱 시스템은 송수신기(16) 및 통신 채널을 통해 제어 및 데이타 신호를 케이블 시스템 헤드인에 역 전송할 수 있다.
제1도는 호스트 프로세싱 시스템(1)을 포함하는 시스템으로 실시된 멀티프로세서 집적 회로(100)을 도시한다. 본 기술에 숙련된 자들은 멀티프로세서 집적 회로(100)이 또한 유용한 시스템의 유일한 프로세서로서 사용될 수 있는 본 발명의 양호한 실시예를 본 개시로부터 실현할 것이다. 이러한 시스템에서 멀티프로세서 집적 회로(100)은 시스템의 모든 기능을 수행하도록 프로그램된다.
이 멀티프로세서 집적 회로(100)은 영상 프로세싱용으로 사용되는 시스템에 특히 유용하다. 멀티프로세서 집적 회로(100)은 양호하게는 복수의 동일 프로세서를 포함한다. 각각의 이들 프로세서는 디지탈 영상/그래픽 프로세서라고 부를 것이다. 이런 명명은 단지 설명의 편의상 이루어진 것이다. 본 발명을 실시하는 프로세서는 단일 칩 회로 또는 다수의 집적 회로 상에 분리되게 제조된 프로세서일 수 있다. 단일 집적 회로 상에 실시된다면, 이 단일 집적 회로는 또한 디지탈 영상/그래픽 프로세서에 의해 사용된 리드 온리 메모리 및 랜덤 엑세스 메모리를 임의로 포함할 수 있다.
제2도는 마이크로프로세서 집적 회로(100)의 아키텍처를 도시한다. 멀티프로세서 집적 회로는 각각이 복수의 섹션으로 나누어진 2개의 랜덤 엑세스 메모리(10 및 20); 크로스바(50); 마스터 프로세서(60); 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74); 및 개개의 제1 및 제2 영상 메모리에의 엑세스를 제어할 수 있는 프레임 제어기(90)을 포함한다. 멀티프로세서 집적 회로(100)은 멀티미디어 컴퓨팅에서와 같이, 영상 프로세싱 및 그래픽 동작에 유용한 고등급의 동작패러랠리즘(parallelism)을 제공한다. 이들 프로세서가 유용한 영상 및 그래픽 프로세싱 이외의 컴퓨팅 응용이 있기 때문에 영상/그래픽 프로세서는 설명의 편의를 위해 프로세서(71, 72, 73 및 74)라고 한다.
멀티프로세서 집적 회로(100)은 2개의 랜덤 엑세스 메모리를 포함한다. 랜덤 엑세스 메모리(10)은 주로 마스터 프로세서(60)에 전용된다. 이것은 2개의 명령 캐시 메모리(11과 12), 2개의 데이타 캐시 메모리(13과 14) 및 파라메타 메모리(15)를 포함한다. 이들 메모리 섹션은 물리적으로는 동일하나 다르게 접속되어 사용된다. 랜덤 엑세스 메모리(20)은 마스터 프로세서(60) 및 각각의 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에 의해 엑세스될 수 있다. 각각의 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 5개의 대응하는 메모리 섹션을 갖고 있다. 이들은 명령 캐시 메모리, 3개의 데이타 메모리 및 하나의 파라메타 메모리를 포함한다. 그러므로, 디지탈 영상/그래픽 프로세서(71)은 대응하는 명령 캐시 메모리(21), 데이타 메모리(22, 23,24) 및 파라메타 메모리(25)를 가지며, 디지탈 영상 그래픽 프로세서(72)는 대응하는 명령 캐시 메모리(26), 데이타 메모리(27, 28, 29) 및 파라메타 메모리(30)을 가지고, 디지탈 영상 그래픽 프로세서(73)은 대응하는 명령 캐시 메모리(31), 데이타 메모리(32, 33, 34) 및 파라메타 메모리(35)를 가지며, 디지탈 영상/그래픽 프로세서(74)는 대응하는 명령 캐시 메모리(36), 데이타 메모리(37, 38, 39) 및 파라메타 메모리(40)을 가진다. 랜덤 엑세스 메모리(10)의 섹션과 마찬가지로, 이들 메모리 섹션은 물리적으로 동일하나 다르게 접속되어 사용된다. 메모리(10과 20)의 이들 메모리 섹션의 각각은 예를 들어 2K 바이트를 포함하며 전체 메모리가 5K 바이트의 멀티프로세서 집적 회로(100)가 된다.
멀티프로세서 집적 회로(100)은 복수의 개별적인 병렬 데이타 전송을 사용하여 프로세서와 메모리 사이의 높은 속도의 데이타 전송을 제공하도록 구성된다. 크로스바(50)은 이들 데이타 전송을 인에이블한다. 각각의 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 매 주기마다 동시에 동작할 수 있는 3개의 메모리 포트를 갖는다. 명령 포트(1)는 대응하는 명령 캐시로부터 64 비트 데이타 워드를 페치할 수 있다. 로컬 데이타 포트(L)은 32 비트 데이타 워드를 그 디지탈 영상/그래픽 프로세서에 대응하는 데이타 메모리 또는 파라메타 메모리로부터 판독하거나 거기에 기입한다. 글로벌 데이타 포트(G)는 32비트 데이타 워드를 데이타 메모리 또는 파라메타 메모리 또는 랜덤 엑세스 메모리(20)중 어느것으로부터 판독하고 또는 32 비트 데이타 워드를 거기에 기입한다. 마스터 프로세서(60)은 2개의 메모리 포트를 포함한다. 명령 포트(1)는 명령 캐시(11과 12) 중 어느 하나로부터 32 비트 명령 워드를 페치할 수 있다. 데이타 포트(C)는 랜덤 엑세스 메모리(10)의 명령 캐시(13 또는 14), 파라메타 메모리(15) 또는 데이타 메모리, 파라메타 메모리 또는 랜덤 엑세스 메모리(20) 중 어느것으로부터 32 비트 데이타 워드를 판독하고 또는 32 비트 데이타 워드를 기입한다. 전송 제어기(80)은 데이타 포트(C)를 경유하여 랜덤 엑세스 메모리(10 도는 20)의 섹션들 중 어느것에 엑세스할 수 있다. 그러므로 15개의 명렬 메모리 엑세스가 어떤 단일 메모리 주기에서 요구될 수 있다. 랜덤 엑세스 메모리(10과 20)은 많은 병렬 엑세스를 지원하기 위해 25개의 메모리로 나누어진다.
크로스바(50)은 마스터 프로세서(60), 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 및 전송 제어기(80)의 메모리(10과 20)과의 접속을 제어한다. 크로스바(50)은 행과 열 내에 배치된 다수의 크로스포인트(51)을 포함한다. 크로스포인트(51)의 각각의 컬럼은 단일 메모리 섹션과 대응하는 범위의 어드레스에 대응한다. 프로세서는 이 프로세서에 의해 출력되는 어드레스의 최상위 비트를 통하여 메모리 섹션들 중의 하나에의 엑세스를 요구한다. 프로세서에 의해 출력된 이 어드레스는 행을 따라 이동한다. 그 어드레스를 갖는 메모리 섹션에 대응하는 크로스포인트(51)은 메모리 섹션에의 엑세스를 승인 또는 부인함으로써 응답한다. 다른 프로세서가 현재의 메모리 중에 그 메모리 섹션에의 엑세스를 요구하지 않았다면, 크로스 포인트(51)은 행과 열을 결합시킴으로써 엑세스를 승인한다. 이것은 어드레스를 메모리 섹션에 공급한다. 메모리 섹션은 그 어드레스에서의 데이타 엑세스를 허용함으로써 응답한다. 이 데이타 엑세스는 데이타 판독 동작 또는 데이타 기입 동작일 수 있다.
한개 이상의 프로세서가 동일한 메모리 섹션에의 엑세스를 동시에 요구하면, 크로스바(50)은 요구하는 프로세서들 중의 하나에 대한 엑세스를 승인한다. 크로스바(50)의 각 컬럼 내의 크로스포인트(51)은 우선 순위 계층에 기초하여 통신하고 엑세스를 승인한다. 동일한 랭크를 갖는 엑세스에 대한 2개의 요구가 동시에 일어난다면, 라운드 로빈에 기초하여 엑세스를 승인하는데, 마지막에 승인된 엑세스를 갖는 프로세서가 가장 낮은 우선 순위를 갖는다. 각각 승인된 엑세스는 요구를 지원하는데 필요로 되는 한 지속된다. 프로세서는 매 메모리 주기마다 그 어드레스를변경하여, 크로스바(50)은 매 주기마다 프로세서와 메모리 섹션간의 상호접속을 변화시킬 수 있다.
마스터 프로세서(60)은 양호하게는 멀티프로세서 집적 회로(100)을 위한 주 제어 기능을 수행한다. 마스터 프로세서(60)은 양호하게는 하드웨어 플로우팅 포인트 계산 유닛을 포함하는 32 비트 감소 명령 셋트 컴퓨터(RISC)이다. RISC 아키텍처에 따르면 메모리에 대한 모든 엑세스는 로드 및 저장 명령으로 수행되고 대부분의 정수 및 논리 동작은 단일 주기에서 레지스터 상에서 수행된다. 그러나 플로우팅 포인트 계산 유닛은 정수 및 논리 유닛에 의해 사용된 것과 동일한 레지스터 파일을 이용할 때 동작을 수행하는데 일반적으로 몇개의 주기를 취할것이다. 레지스터 스코어 보드는 올바른 레지스터 엑세스 시퀀스가 유지되는 것을 보장한다. RISC 아키텍처는 영상 프로세싱에서의 제어 기능에 적합하다. 플로우팅 포인트 계산 유닛은 영상 프로세싱에 중요한 영상 로테이션 기능의 신속한 계산을 허용한다.
마스터 프로세서(60)은 명령 캐시 메모리(11) 또는 명령 캐시 메모리(12)로부터 명령 워드를 페치한다. 이와 마찬가지로, 마스터 프로세서(60)은 데이타 캐시(13) 또는 데이타 캐시(14)로부터 데이타를 페치한다. 각각의 메모리 섹션이 2K 바이트의 메모리를 포함하기 때문에 4K 바이트의 명령 캐시 및 4K 바이트의 데이타 캐시가 있다. 캐시 제어는 마스터 프로세서(60)의 통합 기능이다. 앞서 언급된 바와 같이, 마스터 프로세서(60)은 또한 크로스바(50)을 경유하여 다른 메모리 섹션들에 엑세스할 수 있다.
4개의 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 각각 고도의 병렬디지탈 신호 프로세서(DSP) 아키텍처를 갖고 있다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 데이타 유닛, 어드레스 유닛, 및 프로그램 흐름 제어 유닛인 3개의 분리된 유닛을 사용하여 고도의 동작 패러랠리즘을 달성시킨다. 이들 3개의 유닛은 명령 파이프라인 내의 서로 다른 명령에 기초하여 동시에 동작한다. 또한 이들 유닛 각각은 내부 패러랠리즘을 포함한다.
디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 다중 명령 다중 데이타 모드(MIMD)에서 독립적인 명령 스트림을 실행할 수 있다. MIMD 모드에서, 각각의 디지탈 영상/그래픽 프로세서는 독립적이거나 또는 상호 협력할 수 있는 그것의 대응하는 명령 캐시로부터 개별적인 프로그램을 실행한다. 후자의 경우에서 크로스바(50)은 공유된 메모리와 조합하여 인터-프로세서 통신을 인에이블한다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 또한 동기된 MIMD 모드에서 동작할 수 있다. 동기된 MIMD 모드에서, 각각의 디지탈 영상/그래픽 프로세서의 프로그램 제어 플로우 유니트(130)은 모든 동기된 프로세서가 진행할 준비가 되어 있을 때까지 다음 명령을 패칭하는 것을 금지한다. 이 동기된 MIMD 모드는 디지탈 영상/그래픽 프로세서의 별도의 프로그램이 긴밀하게 결합된 동작에서 록크 단계로 실행되도록 한다.
디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 단일 명령 다중 데이타 모드(SIMD)에서 다른 데이타상에서 동일한 명령을 실행할 수 있다. 이 모드에서 4개의 디지탈 영상/그래픽 프로세서를 위한 단일 명령 스트림은 명령 캐시 메모리(21)로부터 나온다. 디지탈 영상/그래픽 프로세서(71)은 패칭 및 브랜칭 동작을 제어하고 크로스바(50)은 동일한 명령을 다른 디지탈 영상/그래픽 프로세서(72, 73 및 74)에 공급한다. 디지탈 영상/그래픽 프로세서(71)은 모든 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에 대한 명령 페치를 제어하기 때문에, 디지탈 영상/그래픽 프로세서는 SIMD 모드에서 고유하게 동기된다.
전송 제어기(80)은 조합된 다이렉트 메모리 엑세스(DMA) 머신 및 멀티프로세서 집적 회로(100)용 메모리 인터페이스이다. 전송 제어기(80)은 지능적으로 큐(queue)하고, 우선순위를 설정하며 5개의 프로그래머블 프로세서의 데이타 요구 및 캐시 미스를 서비스한다. 마스터 프로세서(60) 및 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 전송 제어기(80)을 경유하여 멀티프로세서 집적 회로(100) 외부에 있는 메모리 및 시스템에 엑세스한다. 데이타 캐시 또는 명령 캐시 미스는 전송 제어기(80)에 의해 자동적으로 조종된다. 캐시 서비스(S) 포트는 이러한 캐시 미스를 전송 제어기(80)에 전송한다. 캐시 서비스 포트(S)는 프로세서로부터 정보를 판독하지만 메모리로부터는 판독하지 않는다. 마스터 프로세서(60) 및 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 링크 리스트 패킷 전송으로서 전송 제어기(80)으로부터 데이타 전송을 요구할 수 있다. 이러한 링크 리스트 패킷 전송은 다차원 블럭의 정보를 멀티프로세서 집적 회로(100) 내에 있거나 멀티프로세서 집적 회로(100) 외부에 있을 수 있는, 소스와 데스티네이션 사이에 전송되게 할 수 있다. 전송 제어기(80)은 양호하게는 또한 그 데이타를 보유하도록 주기적 리프레시를 요구하는 다이너믹 랜덤 엑세스 메모리(DRAM)을 위한 리프레시 제어기를 포함한다.
프레임 제어기(90)은 멀티프로세서 집적 회로(100)과 외부 영상 포착 및 디스플레이 시스템 사이의 인터페이스이다. 프레임 제어기(90)은 포착 및 디스플레이 장치를 통해 제어하고 이 장치들과 메모리 사이의 데이타의 이동을 자동적으로 관리한다. 이 목적을 위해, 프레임 제어기(90)은 2개의 독립적인 영상 시스템에 대해 동시 제어를 한다. 프레임 제어기(90)의 응용은 사용자에 의해 제어되지만, 이들은 전형적으로 영상 포착용 제1 영상 시스템 및 영상 디스플레이용 제2 영상 시스템을 포함한다. 이들 영상 시스템은 통상적으로 프레임 그래버(grabber) 또는 프레임 버퍼 저장을 위해 사용된 독립적인 프레임 메모리들을 포함할 것이다. 프레임 제어기(90)은 양호하게는 리프레시 및 시프트 레지스터 제어를 통해 비디오 다이너믹 랜덤 엑세스 메모리(VRAM)을 제어하도록 동작한다.
멀티프로세서 집적 회로(100)은 대규모 영상 프로세싱용으로 설계된다. 마스터 프로세서(60)은 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)의 작동을 오케스트레이팅(orchestrating)하고, 이들이 생성한 결과를 인터프리팅(interpreting)하는 내장 제어를 제공한다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 픽셀 분석 및 조작에 잘 맞는다. 픽셀이 데이타에 있어 높지만 정보에 있어 낮은 것으로 간주되면, 전형적인 응용에 있어 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 픽셀을 잘 조사하여 원(raw) 데이타를 정보로 전환시킨다. 다음에 이 정보는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에 의해 또는 마스터 프로세서(60)에 의해 분석될 수 있다. 크로스바(50)은 인터-프로세서 통신을 중재한다. 크로스바(50)은 멀티 프로세서 집적 회로(100)이 공유 메모리 시스템으로서 구현될 수 있도록 한다. 메시지 통과는 이 아키텍처에서 통신의 주 형태로 될 필요는 없다. 그러나, 메시지는 공유 메모리를 통해 통과될 수 있다. 각각의 디지탈 영상/그래픽 프로세서, 크로스바(50)의 대응하는 섹션 및 메모리(20)의 대응하는 섹션은 이 실시예에서 동일한 폭을 가진다. 이것은 동일 핀 아웃을 유지하면서 디지탈 영상/그래픽 프로세서 및 대응하는 메모리의 부가 및 제거를 모듈러하게(modularly) 수용함으로써 아키텍처 신축성을 허용한다.
한 실시예에서, 멀티프로세서 집적 회로(100)의 모든 부분은 0.6 ㎛의 형상 크기를 사용하여 상보적 금속 산화물 반도체(CMOS) 내에 형성되는 단일 집적 회로 상에 배치된다. 멀티프로세서 집적 회로(100)은 256개의 핀을 갖는 핀 그리드 어레이 팩키지 내에 적합하게 구성된다. 입력들 및 출력들은 예를 들어 트랜지스터-트랜지스터 로직(TTL) 로직과 호환성이 있다. 멀티프로세서 집적 회로(100)은 약 300 만개의 트랜지스터를 포함하고, 50 MHz의 클럭 속도를 이용한다.
제3도는 인터럽트 인에이블 레지스터 INTEN(110)과 인터럽트 플래그 레지스터(INTELG)의 필드 정의를 도시한다. "γ"로 표시된 비트는 장래 사용을 위해 보류되고 "-"로 표시된 비트는 본 양호한 실시예에서는 구현되지 않지만 다른 실시예들에서 사용될 수 있다. 인터럽트는 좌측에서 우측으로 우선순위가 매겨진다. 각각의 인터럽트 소스는 인터럽트 인에이블 레지스터 INTEN(110)의 대응하는 인에이블(E) 비트에 "1"을 셋팅함으로써 개별적으로 인에이블될 수 있다. 인터럽트 플래그 레지스터 INTFLG(115)의 인터럽트 소스 비트는 우측에서 좌측으로 우선 순위가 내려가는 순서로 이루어진다. 즉, 항상 인에이블되는 어뮬레이션 인터럽트 ETRAP; XY 패치 언터럽트; 타스크 인터럽트; 패킷 전송 비지 인터럽트 PT13; 패킷 전송 에러 인터럽트 PTERROR; 패킷 전송 성공 인터럽트 PTEND; 마스터 프로세서(60) 메시지 인터럽트 MPMSG; 디지탈 영상/그래픽 프로세서(71) 메시지 인터럽트 DIGPOMSG; 디지탈 영상/그래픽 프로세서(72) 메시지 인터럽트 DIGPIMSG; 디지탈 영상/그래픽 프로세서(73) 메시지 인터럽트 DIGP2MSG; 디지탈 영상/그래픽 프로세서(74) 메시지 인터럽트 DIGP3MSG. 비트 31-28은 8개의 디지탈 영상/그래픽 프로세서를 포함하는 멀티프로세서 집적 회로(100)의 구현에서의 4개의 부가적인 디지탈 영상 그래픽 프로세서로부터 메시지 인터럽트용으로 보류된다.
인터럽트 인에이블 레지스터 INTEN(110)의 "W" 비트(비트 0)은 인터럽트 플래그 레지스터 INTFLG(115)로의 기입을 제어한다. 이 비트는 통상적으로 어뮬레이션 인터럽트가 인에이블되는지 여부를 제어한다. 양호한 실시예에서 에뮬레이션 인터럽트가 디세이블될 수 없기 때문에 인터럽트 인에이블 레지스터 INTEN(10)에 이 인터럽트용의 인에이블 비트가 있을 필요는 없다. 인터럽트 인에이블 레지스터 INTEN(110)의 비트 0은 인터럽트 플래그 레지스터 INTFLG(115)의 수행을 수정한다. 인터럽트 인에이블 레지스터 INTEN(110)의 "W" 비트가 "1"일 때, 인터럽트 플래그 레지스터 INTFLG(115)로의 소프트웨어 기입은 단지 비트 "1"로 셋트할 수 있다. 이러한 상황하에서, 인터럽트 플래그 레지스터 INTFLG(115)의 임의의 비트에 "0"을 기입하고자 하는 시도는 효과를 갖지 못한다. 이 "W" 비트가 "0"일때, 인터럽트 플래그 레지스터 INTFLG(115)의 임의의 비트에 "1"을 기입하는 것은 그 비트를 "0" 클리어시키게 된다. 인터럽트 플래그 레지스터 레지스터 INTFLG(115)의 임의의 비트에 "0"을 기입하고자 하는 시도는 효과를 갖지 못한다. 이것은 인터럽트 플래그 레지스터 INTFLG(115) 내의 개개의 인터럽트 플래그가 다른 것들의 상태에 영향을 주지 않고 클리어되게 한다. 이들 플래그는 양호한 실시예에서 하드웨어에 의해 클리어되지 않기 때문에 각각의 인터럽트 서비스 루틴은 그것의 대응하는 인터럽트 플래그를 적절히 클리어시킨다. 이에 대한 한가지 예외로서, 에뮬레이션 인터럽트 ETRAP은 이 인터럽트가 항상 인에이블되어 있기 때문에 하드웨어에 의해 클리어된다. 특정한 인터럽트 소스가 소프트웨어 기입 동작이 이것을 클리어하는 것을 시도할 때 동시에 인터럽트 플래그 레지스터 INTFLG(115) 내에 비트를 셋트하고자 시도하면, 로직은 비트를 셋트되게 한다.
ETRAP 인터럽트 플래그(인터럽트 플래그 레지스터(115)의 비트 0)은 분석 로직 또는 ETRAP 명령으로부터 셋트된다. 이 인터럽트는 디세이블될 수 없기 때문에 정상적으로는 즉시 서비스되지 않으나, 인터럽트 서비싱은 크로스바(50)을 통한 메모리 경합과 같은 파이프라인 스톨 상황이 해결될 때까지 대기한다. ENTRAP 인터럽트 플래그는 인터럽트가 서비스될 때 하드웨어에 의해 클리어된 인터럽트 플래그 레지스터 INTFLG(115) 내의 유일한 인터럽트 비트이다.
XY PATCH 인터럽트 플래그(인터럽트 플래그 레지스터 INTFLG(115)의 비트 11)은 글로벌 어드레스 유닛(610) 및 로컬 어드레스 유닛(620)이 XY 어드레싱을 수행하도록 조합한 것을 이용할 때 소정의 상황하에서 셋트된다. XY 패치 어드레싱은 소정의 상황에서 인터럽트를 발생시킬 수 있다. XY 패치 어드레싱을 요구하는 명령 워드는 이러한 인터럽트가 발생될 수 있는지 여부와 허용된 인터럽트가 지정된 패치 내부 또는 외부의 어드레스에 대해 이루어지는 지의 여부를 표시한다.
TASK 인터럽트 플래그(인터럽트 플래그 레지스터 INTFLG(115)의 비트 14)는 마스터 프로세서(60)으로부터 커맨드 워드를 받을 때 셋트된다. 이 인터럽트는 디지탈 영상/그래픽 프로세서(71)이 그것의 TASK 인터럽트 벡터를 로드하게 한다. 이 인터럽트는 선택된 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)가 예를들어 마스터 프로세서(70)의 제어하에서 타스크를 스위치하게 한다.
패킷 전송 비지 인터럽트 플래그 PTB(인터럽트 플래그 레지스터 INTFLG 115)의 비트 17)은 소프트웨어가 큐 활성 비트가 "1"일 때 통신 레지스터 COMM(120)의 패킷 전송 비트에 1을 기입하는 경우 셋트된다. 이것은 패킷 전송이 이전의 전송이 종료하였다는 것을 체킹하지 않고서 이루어지게 한 이전의 패킷 전송이 아직 큐 되어 있으면 이 인터럽트 비트는 셋트된다. 이것은 통신 레지스터 COMM(120)의 설명과 관련하여 이하 더 설명될 것이다.
패킷 전송 에러 인터럽트 플래그 PTERROR(인터럽트 플래그 레지스터 INFLG(115)의 비트 (18)은 만일 전송 제어기(80)이 디지탈 영상/그래픽 프로세서에 의해 제출된 패킷 전송을 수행하는 동안 오류 상태를 만났다면 셋트된다. 패킷 전송 종료 인터럽트 플래그 DTEND(인터럽트 플래그 레지스터 INTFLG 115DML QLXM 19)는 이것이 디지탈 영상/그래픽 프로세서의 링크 리스트의 종료를 만날때, 또는 패킷 제어기(80)이 전송 제어기(80)에 종료시 요구하는 디지탈 영상/그래픽 프로세서를 인터럽트하라고 지시하는 패킷 전송을 종료할 때 전송 제어기(80)에 의해 셋트된다.
마스터 프로세서 메시지 인터럽트 플래그 MPMSG(인터럽트 플래그 레지스터 INTFLG(15)의 비트 20)은 마스터 프로세서(60)이 그 영상/그래픽 프로세서에 메시지-인터럽트를 보낼 때 셋트된다.
인터럽트 플래그 레지스터 INTFLG(115)의 비트 27-24는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)로부터 메시지 인터럽트를 로그(log)한다. 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)는 메시지를 자신에 보낼 수 있고 인터럽트 플래그 레지스터 INTFLG(115)의 대응하는 비트를 통해 인터럽트 자신을 보낼 수 있다. 디지탈 영상 그래픽 프로세서 0 메시지 인터럽트 플래그 DIGPOMSG(인터럽트 플래그 레지스터 INTFLG(115)의 비트 24)는 디지탈 영상/그래픽 프로세서(71)이 디지탈 영상/그래픽 프로세서에 메시지 인터럽트를 보낼때 셋트된다. 유사한 방식으로, 디지탈 영상/그래픽 프로세서 메시지 인터럽트 플래그 DIGP/MSG(인터럽트 플래그 레지스터 iNTFLG(115)의 비트 25)는 디지탈 영상/그래픽 프로세서(72)가 메시지 인터럽트를 송신할 때 셋트되고, 디지탈 영상 그래픽 프로세서 2 메시지 인터럽트 플래그 DIGP2MSG(인터럽트 플래그 레지스터 INTFLG(115)의 비트 26)은 디지탈 영상/그래픽 프로세서(73)이 메시지 인터럽트를 보낼 때 셋트되며, 디지탈 영상/그래픽 프로세서 3 메시지 인터럽트 플래그 DIGP3MSG(인터럽트 플래그 레지스터 INTFLG(115)의 비트 27)은 디지탈 영상/그래픽 프로세서가 메시지 인터럽트를 보낼 때 셋트된다. 앞서 설명한 바와 같이, 인터럽트 플래그 레지스터 INTFLG(115)의 비트 31-28은 8개의 디지탈 영상/그래픽 프로세서를 포함하는 멀티프로세서 집적 회로(100)의 구현에서의 4개의 부가적인 디지탈 영상/그래픽 프로세서로부터의 메시지 인터럽트용으로 보류된다.
인에이블된 인터럽트가 발생할 때, 작은 상태 머신으로 될 수 있는 인터럽트 의사-명령(pseudo-instruction) 유닛은 명령 레지스터-어드레스 단계에서 다음의 의사 명령 셋트를 주입한다.
*(A14 - =16) = SR
*(A14 + 12) = PC
BR =*vectadd; vectadd의 2개의 LS 비트 = "11", S, G 및 L을 로드
*(A14 + 8) = IPA
*(A14 + 4) = IPE
이들 의사 명령은 각각 PS1, PS2, PS3, PS4 및 PS5로서 참조된다. 서브루틴 IPRS로부터의 명령 포인터-리턴은 이 시퀀스에 의해 세이브되지 않는다. 인터럽트 서비스 루틴이 어떤 브랜치를 수행한다면, 서브루틴 IPRS로부터의 명령 포인터-리턴은 먼저 인터럽트 서비스 루틴에 의해 푸시되어야 하고 다음에 리터닝하기 전에 리스토어되어야 한다. 벡터 페치는 전체 프로그램 카운터 PC(701)의 로드이고 서턴루틴 IPRS로부터의 명령 포인터-리턴은 보호된다. 이것은 프로그램 카운터 PC(701)의 S, G 및 L 비트가 로드되게 하기 때문에, 모든 인터럽트 벡터의 3개의 최하위 비트는 "0"으로 된다. 이 설명의 한가지 예외는 리셋 이후에 페치된 타스크 벡터는 루핑을 디세이블하기 위해 "L"비트(프로그램 카운터 PC(701))의 "L" 비트)를 셋트시켜야 한다.
인터럽트 플래그 레지스터 INTFLG(115)에서 대표되는 어떤 인터럽트에 대한 인터럽트 서비스 루틴의 스타팅 포인트의 각각의 어드레스를 디지탈 영상/그래픽 프로세서 인터럽트 벡터라고 한다. 이들 어드레스는 소프트웨어에 의해 발생되고 표 1에 나타낸 고정 어드레스에서의 각각의 인터럽트 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에 대응하는 파라메타 메모리(25, 30, 35 및 40)에 데이타로서 로드된다. 인터럽트 의사-명령 PS3는 대응하는 파라메타 메모리(25, 30, 35 또는 40) 내의 표시된 어드레스에 저장된 32비트 어드레스를 취하여 이것을 프로그램 카운터 PC(701)에 저장시킨다. 인터럽트 의사-명령 유닛(770)은 인터럽트 인에이블 레지스터를 통해 인에이블된 가장 높은 우선 순위 인터럽트에 기초하여 대응하는 파라메타 메모리에 대한 어드레스를 계산한다. 인터럽트 의사-명령 유닛(770)은 각각의 디지탈 영상/그래픽 프로세서에 대한 특정 어드레스를 발생시키기 위해 통신 레지스터 COMM(120)으로부터의 디지탈 영상/그래픽 프로세서 번호를 포함시키도록 동작한다. 인터럽트 의사-명령(PS4 및 PS5)는 이 브랜치를 인터럽트 서비스 루틴에 이어주는 지연 슬롯이다.
(표 1)
각각의 어드레스에서 "#"은 통신 레지스터 COMM 120으로부터 얻어진 디지탈영상/그래픽 프로세서 번호로 대체된다.
인터럽트 서비스루틴의 최종 4개의 명령은 다음의 (32비트 데이타, 시프트되지 않은 인덱스) 연산을 포함하여야 한다.
SR=*(A14 ++ = 4)
BR=*(A14 ++ = 7)
BR=*(A14 ++ = 5)
BR=*(A14 ++ = 5)
이들 명령은 RETI 1, RETI 2, RETI 3 및 RETI 4로 각각 참조된다. 다른 연산들은 원한다면 이것들과 병렬로 코드화되나 이들 동작의 어느 것도 상태 레지스터(211)을 수정하여야 한다.
인터럽트 상태는 새로운 타스크가 디지탈 영상/그래픽 프로세서 상에서 실행될 것이라면 세이블되어 새로운 타스크를 완료한 후에 원래 상태로 리스토어된다. 인터럽트 인에이블 레지스터 INTEN(10)에 의해 제어되는 기입 모드는 이것이 세이빙 또는 리스토어링 동작 중에 어떤 인터럽트를 미싱함이 없이 수행되게 한다. 이것은 다음의 명령 시퀀스에 의해 달성될 수 있다. 첫째 DINT 명령을 통한 인터럽트를 디세이블한다. 다음에는 인터럽트 인에이블 레지스터 INTEN(110) 및 인터럽트 플래그 레지스터 INTFLG(115)를 세이브한다. 인터럽트 인에이블 레지스터 INTEN(110)의 "W" 비트(비트 0)를 "0"으로 셋트하여 Hex "FFFFFFFF"를 인터럽트 플래그 레지스터 INTFLG(115)에 기입한다. 인에이블링 인터럽트를 포함할 수 있는 새로운 타스크를 실행한다. 새로운 타스크의 종료후에 원래의 타스크를 리커버한다. 첫째, 인터럽트 인에이블 레지스터 INTEN(110)의 "W" 비트를 "1"로 셋트한다. 메모리로부터의 인터럽트 플래그 레지스터 INTFLG(115)의 상태를 리스토어한다. 다음에, 메모리로부터의 인터럽트 인에이블 레지스터 INTFLG(10)의 상태를 리스토어한다. 다음에, 메모리로부터의 인터럽트 인에이블 레지스터 INTEN(110)의 상태를 리스토어한다. 최종적으로, EINT 명령을 통한 인터럽트를 인에이블한다.
각각의 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 다른 디지탈 영상/그래픽 프로세서와 마스터 프로세서(60)에 명령 워드를 전송할 수 있다. 레지스터는 레지스터 A15의 데스티네이션으로 이동하고, 글로벌 어드레스 유닛의 제로 값 어드레스 레지스터는 지정된 프로세서로의 명령 워드 전송을 초기화한다. 이러한 레지스터간 전송은 아래에 설명되는 바와 같이, 데이타 유닛(110)의 동작과 로컬 데이타 포트(144)를 통한 엑세스에 의해 단일 명령으로 조합될 수 있다. 이러한 명령 워드는 특별 명령 워드 신호가 수반되는 글로벌 데이타 포트(148)을 통해 크로스바(50)으로 전송된다. 이것은 마스터 프로세서(60) 및 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)가 멀티/프로세서 집적 회로(100)의 다른 프로세서들과 통신하게 한다.
제4도는 이들 명령 워드의 필드 정의를 개략적으로 도시한다. 양호한 실시예에서 커맨드 워드는 글로벌 데이타 포트(148)을 통해 전송된 데이타와 동일한 32 비트 길이를 갖는다. 각각의 커맨드 워드의 최하위 비트는 커맨드 워드가 어드레스되는 한개 이상의 프로세서와 다른 회로를 정해준다. 이들 비트가 커맨드 워드는 그 회로에 지정된다는 것을 표시한 경우에만 각각의 수신 회로는 수신된 커맨드 워드에 응답한다. 각각의 커맨드 워드의 비트 3-0는 각각 디지탈 영상/그래픽 프로세서(74, 73, 72 및 71)을 지정한다. 비트 7-4는 양호한 실시예에서 사용되지 않지만, 8개의 디지탈 영상/그래픽 프로세서를 갖는 멀티프로세서 집적 회로(100)에 사용하기 위해 보류된다. 비트 8은 명령 워드가 마스터 프로세서(60)에 어드레스된다는 것을 표시한다. 비트 9는 커맨드 워드가 전송 제어기(80)에 지정된다는 것을 표시한다. 비트 10은 커맨드 워드가 프레임 제어기(90)에 지정된다는 것을 표시한다. 모든 회로는 모든 커맨드 워드를 모든 다른 회로에 보내는 것이 허용되지 않는다. 예를 들어, 시스템 레벨 커맨드 워드는 디지탈 영상/그래픽 프로세서로부터 다른 디지탈 영상/그래픽 프로세서 또는 마스터 프로세서(60)에 보내질 수 있다. 마스터 프로세서(60) 만이 커맨드 워드를 전송 제어기(80) 또는 프레임 제어기(90)에 보낼 수 있다. 회로가 어느 커맨드 워드를 어느 다른 회로에 보낼 수 있는지에 대한 제한은 각각의 커맨드 워드 필드의 설명과 관련하여 아래에 설명될 것이다.
커맨드 워드의 "R" 비트(비트 31)은 리셋 비트이다. 마스터 프로세서(60)은 이 커맨드 워드를 임의의 디지탈 영상/그래픽 프로세서에 발생할 수 있고, 또는 디지탈 영상/그래픽 프로세서에 발생할 수 있고, 또는 디지탈 영상/그래픽 프로세서는 이 커맨드 워드를 자신에 발생할 수 있다. 양호한 실시예에서, 디지탈 영상/그래픽 프로세서는 다른 디지탈 영상/그래픽 프로세서를 리셋할 수 없다. 리셋 시퀀스의 다음의 설명을 통하여 어드레스내의 각 디지트 "#"는 커맨드 레지스터COMM(120)의 비트 1-0 내에 저장된 디지탈 영상/그래픽 프로세서 수로 대체된다. 지정된 디지탈 영상/그래픽 프로세서가 리셋 커맨드 워드를 수신할 때, 이것은 먼저 이것의 홀트 래치를 셋트하고 리셋 요구 신호를 전송 제어기(80)에 보낸다. 전송 제어기(80)은 리셋 승인 신호를 디지탈 영상 그래픽 프로세서에 보낸다. 리셋팅 디지탈 영상/그래픽 프로세서는 이 리셋 승인 신호를 전송 프로세서(80)으로부터 수신할 때까지 더 이상의 동작을 수행하지 않는다. 리셋 승인 신호의 수신시에, 디지탈 영상/그래픽 프로세서는 다음의 동작 시퀀스를 초기화한다. 즉, 이미 셋트되지 않은 경우 홀트 래치를 셋트하고, 통신 레지스터 COMM(120)의 "F", "P", "Q" 및 "S" 비트를 "0"으로 클리어하며(이들 비트의 사용은 이하 설명됨), 어드레스 유닛(20)에 의해 임의의 펜딩중인 메모리 엑세스를 클리어하고, 임의의 명령 캐시 서비스 요구를 리셋하며,
명령
BR = [u, ncvz] A14 << 1
││A14 = Hex "0100#7FO"
을 명령 레지스터-실행 스테이지 IRE(752)에 로드하는데, 좌측으로 1비트 시프트된 스택 포인터 A14의 내용을 변경이 방지된 네가티브, 캐리, 오버플로우 및 제조상태 비트와 스택 포인터 A14의 로드와 병렬로 스택 포인터 A14를 리셋하도록 셋트된 "R" 비트로 프로그램 카운터 PC(701)에 무조건적으로 로드하며,
*(PBA + Hex "PC") = PC
인 명령을 명령 레지스터-어드레스 스테이지 IRA로 로드하는데, 이 명령은 어드레스 PBA 및 Hex "FC"의 합의로 표시된 어드레스에 프로그램 카운터 PC(701)의 내용을 저장하며, 인터럽트 의사-명령 유닛(770)을 다음의 로드 인터럽트 의사-명령 PS3로 셋트하며, 타스크 인터럽트를 표시하는 인터럽트 플래그 레지스터 INTF2G(115)의 비트 14를 셋트하고, 인터럽트 플래그 레지스터 INTFLG(115)의 비트 0을 클리어시켜 에뮬레이터 트랩 인터럽트 ETRAP를 클리어하며, 루프 제어 레지스터 LCTL의 비트 11, 7 및 3을 클리어하여 모든 3개의 루프를 디세이블한다.
디지탈 영상/그래픽 프로세서에 의한 실행은 마스터 프로세서(60)이 언홀트커맨드 워드를 전송할 때 시작한다. 실행이 시작될 때 디지탈 영상/그래픽 프로세스는 어드레스 Hex "0100#7FC"로 프로그램 카운터 PC(701) 내에 저장된 어드레스를 세이브하고, 이것은 한자리 만큼 좌측 시프트된 스택 포인터 A14의 이전 내용과 프로그램 카운터 PC(701)의 제어 비트(비트 2-0)의 현재 값을 세이브하며, 어드레스 Hex "0100#7FO"을 스택 포인터 A14에 로드하고, 타스크 인터럽트 벡터로 프로그램 카운터 PC(701)을 로드하며 여기서, 제어 비트 2-0는 "000"이고, 어드레스 Hex "0100#7FO"에 제어 비트 2-0을 포함하는 명령 레지스터-어드레스 스테이지 IPA의 내용을 저장하고, 어드레스 Hex "0100#7FO"에 제어 비트 2-0을 포함하는 명령 레지스터-실행 스테이지 IPE의 내용을 저장하며, 타스크 인터럽트에 의해 주어진 어드레스에서 프로그램 실행을 시작한다. 리셋 이후의 스택 상태는 표 2에 표시되어 있다.
표 2
명령 레지스터-어드레스 스테이지 IRA 및 명령 레지스터 실행 스테이지 IRE 의 이전 상태는 제어 비트 2-0을 포함한다. 스택 포인터 A14는 이제 어드레서 Hex "0100#7FO"을 포함한다.
커맨드 워드의 "H" 비트(비트 30)은 홀트 비트이다. 마스터 프로세서(60)은 임의의 디지탈 영상/그래픽 프로세서에 이 커맨드 워드를 발생할 수 있고 또는 디지탈 영상/그래픽 프로세서는 이 커맨드 워드를 자신에 발생할 수 있다. 양호한 실시예에서 디지탈 영상/그래픽 프로세서는 다른 디지탈 영상/그래픽 프로세서를 홀트할 수 없다. 지정된 디지탈 영상/그래픽 프로세서가 이 커맨드 워드를 수신할 때, 디지탈 영상/그래픽 프로세서는 그후 무한 크로스바 메모리 경합에서와 같이 수행한다. 아무것도 리셋되지 않으며 인터럽트가 발생하지 않거나 인식되지 않는다. 디지탈 영상/그래픽 프로세서가 커맨드 워드를 보냄으로써 그 자체를 홀트할 때, 홀트 커맨드 워드를 보내는 명령 이후의 2개의 명령은 그것의 명령 파이프라인내에 있다. 홀트 커맨드 워드를 발생하는 명령 이후의 제1 명령의 어드레스 파이프라인 스테이지는 명령 파이프라인의 성질로 인해 그 어드레스 스테이지를 이미 실행했을 것이다. 이러한 홀트 상태는 마스터 프로세서(60)으로부터 언 홀트 커맨드 워드를 수신함으로써만 보류될 수 있다.
홀트 조건은 그 상태가 변경되지 않기 때문에 디지탈 영상/그래픽 프로세서 내의 전력 소비를 감소시킨다. 더욱 감소된 전력은 디지탈 영상/그래픽 프로세서가 이 모드에 있는 동안 클럭을 중지시킴으로써 달성된다.
커맨드 워드의 "U" 비트(비트 29)는 언홀트 비트이다. 이 커맨드 워드는 마스터 프로세서(60)에 의해서만 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 중 하나는 그 이상에 발생될 수 있다. 언홀트 커맨드 워드는 데스티네이션 디지탈 영상/그래픽 프로세서의 홀트 래치를 클리어시킨다. 디지탈 영상/그래픽 프로세서는 다음에 아무것도 발생하지 않은 것처럼 홀트 이후의 코드 실행을 다시 시작한다. 이것은 하드웨어 또는 커맨드 워드 리셋 이후에 디지탈 영상/그래픽 프로세서를 시작하기 위한 양호한 방식이다. 언홀트 커맨드 워드의 실행시에, 데스티네이션 디지탈 영상/그래픽 프로세서는 타스크 인터럽트 벡터에 의해 주어진 어드레스에서 코드 실행을 시작한다. "U" 비트는 단일 커맨드 워드의 "H" 비트에 보다 우선순위를 갖는다. 그러므로, "H" 비트 셋트와 "U" 비트 셋트를 갖는 단일 커맨드 워드의 수신은 언홀트 커맨드의 실행을 하게 한다. 마스터 프로세서(60)으로부터의 언홀트 커맨드 및 디지탈 영상/그래픽 프로세서 자체에 의해 전송된 홀트 커맨드 워드의 수신은 마스터 프로세서(60)의 언홀트 커맨드 워드에 대한 우선 순위를 승인한다."R" 비트는 "U" 비트보다 우선 순위를 갖는다. 그러므로 "R" 비트와 "U" 비트 셋트를 갖는 마스터 프로세서(60)으로부터의 단일 커맨드 워드의 수신은 디지탈 영상/그래픽 프로세서를 홀트된 조건으로 리셋되게 한다.
커맨드 워드의 "I" 비트(비트 28)은 명령 캐시 플러시(flush) 비트이다. 마스터 프로세서(60)은 이 커맨드 워드를 임의의 영상/그래픽 프로세서에 발생시킬 수 있고, 또는 디지탈 영상/그래픽 프로세서는 이러한 커맨드를 그 자신에 발생시킬 수 있다. 양호한 실시예에서 디지탈 영상/그래픽 프로세서는 다른 디지탈 영상/그래픽 프로세서에 의해 명령 캐시 플러시를 명령할 수 있다. 이 커맨드 워드를 수신하는 지정된 디지탈 영상/그래픽 프로세서는 그 명령 캐시를 플러시한다. 명령 캐시 플러시는 캐시 태그 값 필드를 태그 레지스터의 자체 수로 셋트시키고, 모든 이들의 현재 비트를 클리어하며, LRU 비트를 태그 레지스터의 자체 수로 셋트시킨다.
커맨드 워드의 "D" 비트(비트 27)은 데이타 캐시 플러시를 표시한다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 데이타 캐시를 이용하지 않으므로, 이 커맨드 워드는 디지탈 영상/그래픽 프로세서에 가해지지 않고 그들에 의해 무시된다. 마스터 프로세서(60)은 그 데이타 캐시 메모리(13 및 14)를 플러시하기 위해 이 커맨드 워드를 자신에게 보낼 수 있다.
커맨드 워드의 "K" 비트(비트 14)는 타스크 인터럽트를 표시한다. 마스터 프로세서(60)은 이 커맨드 워드를 임의의 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)에 보낼 수 있지만, 디지탈 영상 그래픽 프로세서는 이 커맨드 워드를 다른 디지탈 영상/그래픽 프로세서 또는 마스터 프로세서(60)에 보낼수 없다. 타스크 커맨드 워드의 수신시에, 커맨드 워드로 지정된 임의의 디지탈 영상/그래픽 프로세서는 인터럽트 인에이블 레지스터 INTEN(110)에 의해 인에이블된 경우 타스크 인터럽트를 취한다.
커맨드 워드의 "G" 비트(비트 13)은 메시지 인터럽트를 표시한다. 임의의 디지탈 영상/그래픽 프로세서는 이 메시지 인터럽트를 임의의 다른 디지탈 영상/그래픽 프로세서 또는 마스터 프로세서(60)에 보낼 수 있다. 이러한 커맨드 워드로 지정된 임의의 디지탈 영상/그래픽 프로세서는 그것의 메시지 인터럽트 플래그를 셋트할 것이고, 메시지 인터럽트가 인터럽트 인에이블 레지스터 INTEN(110)의 비트 20을 통해 인에이블된 경우 메시지 인터럽트를 취한다. 양호한 실시예에서, 이 커맨드는 워드를 전송 제어기(80)에 보내지지 않는다.
디지탈 영상/그래픽 프로세서는 "H" 비트를 통해 그 자체를 홀트하고 "I" 비트를 통해 그 명령 캐시를 플러시하기 위해 커맨드 워드를 그 자체에 발생할 때, 이 커맨드 워드는 커맨드를 실행하기 위해, 대응하는 디지탈 영상/그래픽 프로세서 지정 비트를 셋트시켜야 한다. 이것은 일관성을 위한 것이고, 커맨드 워드 기능의 앞으로의 확장을 허용하기 위한 것이다.
제5도는 통신 레지스터 COMM의 필드 정의를 개략적으로 도시한다. "F", "S", "Q" 및 "P" 비트(비트 31-28)은 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74) 및 전송 제어기(80)으로부터의 패킷 전송의 통신에 이용된다. "F" 및 "S" 비트는 정상적인 판독/기입 비트이다. "P" 비트는 "S" 비트가 "0"인 경우 또는 동시에 "0"으로 클리어되는 경우에만 기입될 수 있다. 패킷 전송은 디지탈 제어기(80)에 의한 데이타 이동을 위해 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)에 의한 요구이다. 이들 데이타 이동은 멀티프로세서 집적 회로(100) 내부에 있는 메모리(11-14 및 21-40) 만을 포함할 수 있고 내부 메모리 및 외부 메모리 둘다를 포함할 수 있다. 패킷 전송은 링크-리스트 구조로서 저장되고 단일 패킷 전송만이 각각의 디지탈 영상/그래픽 프로세서에 대해 한번에 액티브될 수 있다. 요구하는 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)에 대응하는 파라메타 메모리(25, 30, 35 또는 40) 내의 전용 어드레스에서의 링크-리스트 포인터는 액티브 링크-리스트의 시작을 지적한다. 링크-리스트내의 각각의 엔트리는 다음 리스트 엔트리에 대한 포인터를 포함한다.
패킷 전송을 초기화하는 것은 다음의 단계를 포함한다. 먼저, 디지탈 영상/그래픽 프로세서는 그것의 대응하는 파라메타 메모리 내로 원하는 패킷 전송 파라메타를 셋트한다. 다음에, 디지탈 영상/그래픽 프로세서는 그것의 대응하는 파라메타 메모리 내의 선정된 어드레스 Hex "0100#0FC"에서의 링크-리스트의 제1 링크의 어드레스를 저장하는데, 여기서, "#"은 디지탈 영상/그래픽 프로세서 수로 대체된다. "P" 비트(비트 28)을 "1"로 셋팅하는 것은 패킷 전송의 전송 제어기(80)를 경보시킨다. 디지탈 영상/그래픽 프로세서는 "F" 비트9비트 31)을 "1"로 셋팅시킴으로써 높은 우선 순위를 요구하거나 "F" 비트를 "0"으로 클리어시킴으로써 낮은 우선 순위를 요구할 수 있다.
전송 제어기(80)은 "P" 비트가 셋트될 때를 인식하여 "F" 비트의 상태에 기초하여 패킷 전송에 우선 순위를 할당한다. 전송 제어기(80)은 "F" 비트 및 "Q" 비트를 클리어하여 패킷 전송이 큐중에 있다는 것을 표시한다. 다음에 전송 제어기(80)은 대응하는 파라메타 메모리 내의 선정된 어드레스 Hex "0100#0FC"에 엑세스하여 링크 리스트에 기초하여 패킷 전송을 서비스한다. 패킷 전송의 종료시에, 전송 제어기(80)은 "Q" 비트를 "0"으로 클리어하여 큐가 더 이상 액티브하지 않다는 것을 표시한다. 디지탈 영상/그래픽 프로세서는 패킷 전송이 완료됐다는 것을 표시하기 위해 이 비트를 주기적으로 판독할 수 있다. 다르게는, 패킷 전송 자체는 전송 제어기(80)에 패킷 전송이 완료될 때 요구하는 디지탈 영상/그래픽 프로세서를 인터럽트하라고 명령할 수 있다. 이 경우에, 패킷 제어기(80)은 인터럽트 플래그 레지스터 INTFLG(115)에서, 패킷 전송 종료 인터럽트 비트 PTEND를 비트 19로 셋팅시킴으로써 디지탈 영상/그래픽 프로세서에 인터럽트를 보낸다. 전송 제어기(80)에서 패킷 전송을 서비스하는데 있어서 에러가 발견되면 전송 제어기(80)은 인터럽트 플래그 레지스터 INTFLG(115) 내의 패킷 전송 에러 인터럽트 비트 PTERROR을 비트 18로 셋팅함으로써 디지탈 영상/그래픽 프로세서에 인터럽트를 보낸다. 디지탈 영상/그래픽 프로세서는 표 1에 명시된 위치에 저장된 적절한 인터럽트 벡터와 적절한 인터럽트 서비스 루틴을 갖는다.
디지탈 영상/그래픽 프로세서는 전송 제어기(80)이 이전이 요구를 서비스하는 동안에 다른 패킷을 요구할 수 있다. 이 경우에 디지탈 영상/그래픽 프로세서는 "P" 비트를 "1"로 셋트하고 "Q" 비트를 "1"로 된다. 이것이 발생하는 경우, 전송 제어기(80)은 인터럽트 플래그 레지스터 INTFLG(115)를 비트 17로 셋팅시킴으로써디지탈 영상/그래픽 프로세서에 패킷 전송 비지 인터럽트 PTB를 보낸다. 전송 제어기(80)은 다음에 "P" 비트를 "0"으로 클리어시킨다. 요구하는 디지탈 영상/그래픽 프로세서의 인터럽트 서비스 루틴은 제1 패킷 전송이 큐중에 있는 동안 제2 패킷 전송을 중지할 수 있고 패킷 전송을 취소하고 또는 소정의 다른 정정 동작을 취한다. 이러한 특징은 디지탈 영상/그래픽 프로세서가 통신 레지스터 COMM(120)의 "Q" 비트를 먼저 체크하지 않고서 패킷 전송을 제출하게 할 수 있다.
디지탈 영상/그래픽 프로세서는 "S" 비트를 "1"로 셋팅시킴으로써 패킷 전송의 서비스를 중지할 수 있다. 전송 제어기(80)은 "S" 비트가 "1"일때를 검출한다. 패킷 전송이 큐중에 있는 동안 이것이 발생하면, 전송 제어기(80)은 "Q" 비트를 "P" 비트내로 카피하고 "Q" 비트를 클리어한다. 이것은 일반적으로 "P" 비트를 "1"로 셋트할 것이다. 요구하는 디지탈 영상/그래픽 프로세서 내의 소프트웨어는 다음에 "S" 및 "P" 비트의 상태를 변경시킬 수 있다. 전송 제어기(80)은 중지된 패킷 전송의 링크-리스트 내의 그 위치를 메모리 내에 보유한다. 전송 제어기(80)이 "S" 비트가 "0"이고 "P" 비트가 동시에 "1"이라는 것을 결정하면, 중지된 패킷 전송은 재개된다.
통신 레지스터 COMM(120)의 "동기 비트" 필드 (비트 15-8)은 동기된 다중 명령, 다중 데이타 모드에서 사용된다. 이것은 동기된 다중 명령, 다중 데이타 모드를 인에이블하는 록크 명령 LCK 및 이 모드를 디세이블하는 언록크 명령 UNLCK에 의해 한정된 임의의 명령에 대해 동작한다. 비트 11-8은 명령 패칭이 디지탈 영상/그래픽 프로세서(74, 73, 72 및 71)과 각각 동기되는지를 표시한다. 이들 비트들중 임의의 비트내의 "1"은 대응하는 디지탈 영상/그래픽 프로세서가 이전의 명령의 실행을 종료하였다는 것을 표시할 때까지 디지탈 영상/그래픽 프로세서가 명령 페치를 지연한 것을 표시한다. 이 디지탈 영상/그래픽 프로세서가 동기될 다른 디지탈 영상/그래픽 프로세서는 그들의 통신 레지스터 COMM(120) 내의 대응하는 비트를 유사하게 셋트할 것이다. 자체에 대응하는 "동기 비트"는 디지탈 영상/그래픽 프로세서가 동기된 다중 명령, 다중 데이타 모드에 있을 때 셋트될 필요는 없지만, 이것은 해를 주지 않는다. 비트 15-12는 8개의 디지탈 영상/그래픽 프로세서로의 가능한 확장을 위해 보류된다.
통신 레지스터 COMM(120)의 "DIGP#" 필드 (비트 2-0)는 멀티프로세서 집적 회로(100) 상의 각각의 특정한 디지탈 영상/그래픽 프로세서에 특정된다. 이들 비트는 판독만 되고 이들 비트에 기입하고자 하는 어떤 시도는 실패한다. 이것은 동일하지 않은 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)의 부분만이다. 비트 1-0는 표 3에 표시된 특정한 디지탈 영상/그래픽 프로세서를 식별하는 2개의 비트코드와 하드와이어 된다.
표 3
비트 2는 8개의 디지탈 영상/그래픽 프로세서를 갖는 멀티 프로세서 집적 회로(100)에 사용하기 위해 보류된다. 현재의 양호한 실시예에서 이 비트는 모든 4개의 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에 대해 "0"으로 하드와이어 된다.
통신 레지스터 COMM(120)의 이 부분은 특정한 디지탈 영상/그래픽 프로세서를 식별하는 기능을 한다. 디지탈 영상/그래픽 프로세서의 식별수는 통신 레지스터 COMM(120)을 7(Hex "0000007")과 AND 함으로써 추출될 수 있다. 명령 "DO=COMM87"은 예를 들어 이것을 행한다. 이 명령은 통신 레지스터 COMM(120)의 비트 2-0 내의 데이타 만을 복귀시킨다. 이 명령은 8개의 디지탈 영상/그래픽 프로세서를 갖는 실시예에 적합하다. 각각의 디지탈 영상/그래픽 프로세서에 대응하는 데이타 메모리 및 파라메타 메모리의 어드레스는 그 디지탈 영상/그래픽 프로세서의 식별에 의존하기 때문에, 식별수는 소프트웨어가 이들 대응하는 메모리에 대한 어드레스를 계산하는 것을 허용한다. 이러한 식별수를 사용함으로써 프로그램을 실행하는 특정한 디지탈 영상/그래픽 프로세서에 독립하는 소프트웨어를 기입하게 하여준다. 디지탈 영상/그래픽 프로세서 독립 프로그램은 또한 대응하는 파라메타 메모리 베이스 어드레스 및 데이타 메모리 베이스 어드레스에 대해 레지스터 PBA 및 DBA를 사용할 수 있다.
멀티프로세서 집적 회로(100)은 리틀 엔디언 또는 빅 엔디언 데이타 포맷으로 동작할 수 있다. 다르게 명시되지 않는다면, 도면과 표는 빅 엔디언 포맷의 동작을 나타낸다. 내부 레지스터와 외부 데이타 버스에 대한 빅 넘버링은 항상 우측 상의 비트 0를 갖는 리틀 엔디언 관례를 따를 것이다. 64 비트 더블 워드내의 바이트 리틀 엔디언 모드에서는 우측에서부터 어드레스되고, 빅 엔디언 모드에서는 좌측에서부터 어드레스된다. 32 비트 동작을 이용하여 내부 레지스터에 항상 억세싱함으로써 혼동을 피할 수 있다. 다른 실시예에서, 보다 넓고 또는 보다 좋은 버스 폭이 고려된다. 16 비트의 정수배인 버스폭이 꽤 유용한 것으로 여겨진다.
전송 제어기(80)은 멀티프로세서 집적 회로(100)의 마스터 프로세서(60) 및 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)와 비디오 RAM(5 및 6) 및 메모리(9)와 같은 외부 메모리 사이의 인터페이스를 제공한다. 전송 제어기(80)은 프로세서에 의해 요구된 메모리 동작 뿐만 아니라 몇가지 자체 메모리 동작을 수행한다. 이들은 아래에 실명될 것이다. 전송 제어기(80)은 모든 메모리(11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 및 40)에 엑세스하는 크로스바(50)과 64 비트 버스 접속을 한다. 그러므로 전송 제어기(80)은 모든 명령 캐시, 데이타 메모리 및 파라메타 메모리에 엑세스할 수 있다. 두번째 64 비트 버스는 영상 시스템 버스에 접속하고 오프-칩(off-chip) 엑세스를 제공한다.
전송 제어기(80)은 외부 호스트가 그것의 홀드/홀드-승인 메카니즘을 사용함으로써 영상 시스템 버스를 통해 외부 메모리에의 엑세스를 허용한다. 전송 제어기(80)은 캐시 미스와 패킷 전송 요구를 서비스하고 외부 DRAM/VRAM의 리프레시를 수행하며 VRAM 기초 디스플레이/포착 버퍼를 업데이트 하기 위해 프레임 제어기(90)에 의해 요구된 직렬 레지스터 전송 주기를 수행한다. 메모리(22, 23, 24, 27, 28, 29, 32, 33, 34, 37, 38 및 39)에 관련한 전송 제어기(80)의 메모리 동작은 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 또는 마스터 프로세서(60)으로부터의 패킷 전송 요구에 응답하여 발생한다. 패킷 전송은 온-칩 및/또는 오프-칩 메모리 사이에 데이타를 전송하는 매우 융통성 있는 방법을 제공한다. 전송 제어기(80)은 또한 직접 외부 엑세스(DEA) 주기를 사용하여 프로세서들에 직접 데이타를 제공할 수 있다. 직접 외부 엑세스 주기는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)가 오프-칩 메모리에 엑세스하게 하고 마스터 프로세서(60)이 외부 메모리에 엑세스할 때 그것의 데이타 캐시 메모리를 바이-패스(by-pass)하게 한다. 전송 제어기(80)은 다양한 요구를 우선 순위화 하고, 필요할 때 패킷 전송 요구 사이에서 외부 메모리 인터페이스를 시간-분배한다. 마스터 프로세서(60), 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74), 프레임 제어기(90) 및 호스트 프로세싱 시스템(1)로부터의 모든 요구는 전송 제어기(80)에 의해 평가되고 다음에 고정된 우선 순위화 방식에 기초하여 서비스된다. 동일한 우선 순위의 다중 요구가 펜딩중일 때, 전송 제어기(80)은 라운드 로빈 방식으로 이들을 서비스한다.
전송 제어기(80)은 프로세서들로부터의 여러가지 다른 형태의 요구를 취급하여야 한다. 최적 시스템 성능을 보증하기 위해, 이들 요구는 그들의 긴급성 및 중요성에 의해 우선 순위가 매겨진다. 전송 제어기(80)은 다른 우선 순위에서 동작하기 때문에, 크로스바(50)에 대한 그 자신의 우선 순위는 주기마다 변화할 수 있다.
제6도는 영상 시스템 버스 상의 전송 제어기(80)의 동작의 우선 순위를 도시한다. 다중 요구가 동일한 우선 순위로 수신될 때, 전송 제어기(80)은 이들 사이에서 라운드 로빈할 것이다. 이것은 제6도에 도시되어 있다. 어떤 프로세서는 그 패킷 전송에 대해 하나만의 실제 우선 순위를 가질 수 있다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 높고 낮은 우선 순위 패킷 전송으로 한정되고, 마스터 프로세서(60)은 긴급한 높고 낮은 우선 순위의 패킷 전송 요구를 제기할 수 있다.
가장 높은 우선 순위(201)은 호스트 프로세싱 시스템 1(HREQ)에 의한 외부 버스 요구의 서비스이다. 전송 프로세서(80)은 영상 시스템의 제어를 호스트 프로세싱 시스템(1)에 넘겨주기 위해 호스트 요구 라인상의 신호에 응답한다.
다음으로 낮은 우선 순위(202)는 프레임 제어기(90)으로부터의 메모리 요구의 서비스이다. 다음으로 낮은 우선 순위(203)은 긴급한 다이너믹 랜덤 엑세스 메모리(DRAM) 리스레시 요구의 서비스이다. 이후 더 설명되는 바와 같이, 이들 긴급한 DRAM 리프레시 요구는 DRAM 리프레시 요구의 선정된 백록(backlog)가 형성될 때 일어난다.
다음의 우선 순위(204)는 마스터 프로세서(60) 명령 캐시 메모리(11 및 12), 데이타 캐시 메모리(12 및 13) 및 인터럽트가 디세이블될 때 마스터 프로세서(60)의 긴급한 패킷 전송 요구의 서비스이다. 캐시에 관련한 전송 제어기(80)의 모든 동작은 각 프로세서내에 포함된 관련된 캐시 로직에 의해 자동적으로 요구된다. 요구된 데이타는 그것의 외부 메모리 위치로부터 요구하는 프로세서의 데이타 캐시 메모리 내의 적절한 서브-블럭으로 이동된다. 전송 제어기(80)은 또한 마스터 프로세서(60)에 의해 요구될 때 마스터 프로세서(60)에 대한 데이타 캐시 메모리(13 및 14)의 더티(dirty) 서브 블럭을 세이브한다. 긴급한 패킷 전송 요구는 마스터 프로세서(60)에 의해서만 요구될 수 있고 패킷 전송 요구내의 특정 비트의 셋팅을 포함한다. 이것은 이하 더 설명될 것이다. 이들 데이타 전송은 마스터 프로세서(60)이 인터럽트를 인에이블한다면 보다 낮은 우선 순위를 갖는다.
다음으로 낮은 레벨의 우선 순위는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 또는 마스터 프로세서(60)의 명령 캐시 메모리(11 및 12)의 명령 캐시 요구 또는 직접 외부 엑세스(DEA) 요구 및 인터럽트가 인에이블될 때 마스터 프로세서(60)의 긴급한 패킷 전송 요구의 서비스를 요구한다. 이 레벨에서의 동시의 엑세스 요구는 요구하는 프로세서에 따라 라운드 로빈 방식으로 취급된다. 캐시서비스 요구 및 동일한 프로세서에 대한 집적 외부 엑세스 요구는 토큰을 다음 프로세서로 통과시키기 전에 서비스된다.
다음 레벨의 우선 순위(206)은 높은 우선 순위의 패킷 전송이다. 제6도에 도시된 바와 같이, 여러가지 프로세서로부터 비롯된 패킷 전송은 라운드 로빈 방식으로 처리된다. 마스터 프로세서(60) 또는 디지탈 영상/그래픽 프로세서들(71, 72, 73 또는 74) 중의 하나는 그 프로세서가 요구된 데이타를 대기하는 경우 통상적으로 높은 우선 순위 패킷 전송을 이용한다. 전송 제어기(80)은 다음 레벨의 우선 순위(207)을 형성하는 낮은 우선순위 패킷 전송에 대해 유사한 라운드 로빈을 이용한다. 마스터 프로세서(60) 또는 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74) 중의 하나는 통상적으로 그 프로세서가 요구된 데이타를 대기하지 않는 경우 낮은 우선순위 패킷 전송을 이용한다. 이하 더 설명되는 바와 같이, 요구하는 프로세서는 패킷 전송이 긴급한 높거나 낮은 우선순위로 되는 지를 표시한다.
각각의 요구의 우선 순위에 대한 원리가 이하 설명된다. 호스트 프로세싱 시스템(1)과 같은 외부 장치는 그것이 원한다면 즉각적인 엑세스를 할 수 있어야 한다. 외부 장치는 아래에 더 설명되는 REQ[1:0] 핀을 모니터함으로써 요구되는 경우에 높은 우선 순위 요구를 위해 전송 제어기(80)에 다시 영상 시스템 버스를 내줄 수 있다. 프레임 제어기(90) 요구는 시간이 임박한 VRAM 전송 주기가 비디오 디스플레이 또는 포착에 대해 중단없이 일어날 수 있도록 두번째 가장 높은 우선 순위를 받는다. 호스트 요구 주기 및 프레임 제어기(90) 요구는 단속적으로만 발생하기 때문에, 높은 우선 순위를 요구하는 긴급한 DRAM 리프레시는 그들 아래로 우선 순위가 매겨진다. 다음의 우선 순위 레벨은 마스터 프로세서(60)의 인터럽트가 디세이블될 때 발생하는 마스터 프로세서(60)의 캐시 서비스, 직접 외부 엑세스 및 긴급 우선 순위 전송 주기에 대한 것이다. 이것은 정상적으로 인터럽트를 디세이블하는 마스터 프로세서(60)의 인터럽트 서비스 루틴이 시스템 성능을 최대화 하기 위해 가능한 한 빠르게 수행되게 한다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 캐시 서비스 및 직접 외부 엑세스 요구는 우선 순위에 있어서 다음이다. 프로세서는 요구가 서비스될 때까지 아이들이기 때문에 이들이 빨리 서비스되어야 함이 중요하다. 마스터 프로세서(60) 캐시 서비스, 및 직접 외부 엑세스 요구 및 긴급한 패킷 전송은 인터럽트가 엔에블되는 경우 역시 이 우선 순위에 있게 되는데, 왜냐 하면 마스터 프로세서(60)은 시스템 내의 다른 어디로부터 인터럽트 요구를 서비스 받지 않기 때문이다. 높은 우선 순위 패킷 전송은 요구하는 프로세서가 전송을 종료하도록 데이타를 대기하거나 또는 그 전승 제어기(80)이 외부 버스 대역폭을 최적화 하기 위해 크로스바 엑세스를 위한 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에 대해 우선 순위를 취할 필요가 있다는 것을 함축한다. 낮은 우선 순위 패킷 전송은 그들에게 매우 낮은 우선 순위가 주어지도록 프로세서가 데이타를 대기히지 않는다는 것을 함축한다. 고려된 실시예에서 가장 낮은 우선 순위는 리프레시 주기를 트리클(trickle) 하도록 주어진다. 이들은 외부 버스가 아이들이고 이프레시 백록이 0이 아닌 때에만 수행된다. 이것을 백록을 낮추어 주고 높은 우선 순위의 긴급한 리프레시가 나중에 요구될 가능성을 줄인다.
전송 제어기(80)이 동일한 우선 순위의 서로 다른 프로세서들로부터 다중 요구를 수신할 때마다, 전송 제어기는 그들 사이에서 라운드 로빈을 형성할 것이다. 라운드 로빈은 고정 주기의 우선 순위 방식이다. 이것은 프로세서가 라운드 로빈으로부터 제거되지 않거나 도는 주기내의 프로세서의 순서가 변경되지 않는다는 것을 의미한다. 특정한 프로세서의 요구가 완료될 때, 라운드 로빈 토큰은 항상 연쇄된 펜딩 요구로 다음 프로세서로 통과될 것이다. 이것은 다른프로세서로부터 동일한 우선 순위의 요구가 서비스될 필요가 있을 때 어느 한 프로세서가 전송 제어기(80)을 독점하는 것을 방지한다.
전송 제어기(80)의 크로스바 우선 순위는 전송 제어기(80)이 서비스하는 요구의 레벨에 따라 동적으로 변화한다. 이것은 제7도에 도시된 계층(210)에 도시되어 있다. 전송 제어기(80)은 다음과 같은 우선 순위가 할당된다. 전송 제어기(80)은 긴급한 우선 순위 패킷 전송 요구, 캐시 서비스 요구, 직접 외부 엑세스 요구를 서비스할 때, 또는 그것의 파이프라인을 플러시할 때 마스터 프로세서(60)의 우선 순위(212)보다 높은 우선 순위(211)을 가지고 동작한다. 전송 제어기(80)은 긴급한 DRAM 리프레시 요구, 프레임 제어기(90)으로부터의 요구, 호스트 인터페이스 요구 또는 소프트 리셋을 받을 때마다 그것의 파이프라인을 플러시한다. 이것은 외부 주기 대기가 완료된 상태에서 시작할 수 있다. 파이프라인 플러싱은 경우에 따라서만 발생하고 짧은 시간 주기 동안만 마스터 프로세서(60)을 록 아웃(lock out) 한다.
전송 제어기(80)에는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)의 우선 순위(214) 보다 높은 우선 순위(213)이 주어지나, 높은 우선순위 패킷 전송에 대해서는 마스터 프로세서(60)의 아래 순위가 된다. 이것은 마스터 프로세서(60)을록 아웃하지 않고 전송 제어기(80)에 최대로 가능한 우선 순위를 준다. 마스터 프로세서(60)은 일반적으로 제어기로서 사용될 것이기 때문에, 연장된 주기 동안 이것을 록크 아웃한다는 것은 바람직하지 못한 시스템 관련을 가질 수 있다.
전송 제어기(80)은 낮은 우선 순위 패킷 전송을 수행하고 있는 경우 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 라운드 로빈의 우선 순위(214)보다 낮은 우선 순위(214)를 갖는다. 이것은 패킷 전송이 낮은 우선 순위를 가질 때 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)로부터 크로스바 대역폭을 스틸링(stealing) 하는 것을 방지한다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)의 로컬 메모리 엑세스는 서로 다른 메모리에 지향되고 인터페이스 할 수 없다. 그러므로, 이들 로컬 메모리 엑세스는 라운드 로빈에서 동일한 스테이지를 갖는다.
보다 높은 우선 순위 요구가 전송 제어기(80)에 의해 받아들여질 때마다, 이것은 새로운 요구의 크로스바 우선 순위에 있는 현재의 동작을 완료하거나 중지할 것이다. 이것은 시스템 차단이 일어나지 않게 한다. 그러므로, 예를들어, 낮은 우순 순위 패킷 전송 중지는 높은 우선 순위 패킷 전송 요구가 받아들여질 때 높은 우선 순위 레벨에서 발생할 것이다.
전송 제어기(80)은 자동적으로 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 명령 캐시 미스 및 마스터 프로세서(60) 명령 및 데이타 캐시 미스를 자동적으로 서비스한다. 다중 캐시 서비스 요구가 받아들여질 때, 전송 제어기(80)은 제6도에 도시한 바와 같이 라운드 로빈 방식으로 이들에 우선 순위를 매긴다. 전송 제어기(80)은 그것의 캐시 미스가 서비스되었을 때 요구하는 프로세서에 신호한다. 마스터 프로세서(60)이 라운드 로빈 상의 회전(turn) 내에서 서비스된 그것의 명령과 데이타 캐시 모두를 가지게 될 것이다.
디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)의 디지탈 캐시는 4개의 128 바이트(16-명령) 서브-블럭을 각각 갖는 4개의 블럭으로 구성된 일방향 셋트 연합(완전 연합)이다. 다중 방향 셋트 연합 캐시는 다른 실시예들에서 고려된다. 디지탈 영상/그래픽 프로세서가 캐시 미스를 받을 때, 그것의 프로그램 플로우 제어 유닛은 전송 제어기(80)에 신호하여, 캐시 미스 서비스를 요구한다. 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)는 명령이 배치되어야 하는 캐시 블럭을 결정하고 어드레스 뿐만 아니라 이 정보를 전송 제어기(80)에 통과시킨다. 다음에 전송 제어기(80)은 외부 메모리로부터 완전한 서브-블럭(128 블럭)을 페치하고 요구하는 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)의 적절한 캐시 서브-블럭 내에 그것을 배치한다. 다음에 제어기(80)은 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)에 요구가 서비스되어 프로세서가 프로그램 실행을 계속할 수 있다는 것을 알린다.
마스터 프로세서(60) 캐시는 각각 4 블럭으로 구성된 4 방향 셋트 연합이다. 각각의 블럭은 4개의 64 바이트 서브-블럭을 포함한다. 마스터 프로세서(60)은 그것의 명령 캐시 또는 데이타 캐시 또는 둘다에 서비스를 요구할 수 있다. 마스터 프로세서(60) 명령 캐시 서비스 요구는 전송 제어기(80)에 의해 페치된 서브-블럭의 크기가 단지 64 바이트인 것만을 제외하고 디지탈 영상/그래픽 프로세서(71,72, 73 및 74)에 의해 동일하게 처리된다.
마스티 프로세서(60)의 데이타 캐시 메모리(13 및 14)는 전송 제어기(80)이 그 내용을 외부 메모리에 다시 기입하도록 요구될 수 있다는 점에서 명령 캐시(11 및 12)와는 다르다. 마스터 프로세서(60)의 데이타 캐시 미스에 있어서, 전송 제어기(80)은 마스터 프로세서(60)의 명령 캐시와 같이 64 바이트 서브-블럭을 페치한다. 그러나, 마스터 프로세서(60)이 블럭 미스를 받으면, 매칭 태그 어드레스가 발견되지 않고 모든 블럭이 사용되었기 때문에, 이것은 먼저 전송 제어기(80)에 그 블럭이 대체되기 전에 "최소의 최근에 사용된" 블럭 내에 다시 임의의 더티 서브-블럭을 기입하라고 요구할 것이다. 더티 서브 블럭 재 기입은 모두 라운드 로빈 우선 순위의 단일 마스터 프로세서(60) "턴(turn)" 내에서 일어날 수 있다. 전송 제어기(80)은 또한 특별한 캐시 명령에 응답하여 더티 서브-블럭을 다시 기입하라고 요구될 수 있다.
전송 제어기(80)은 마스터 프로세서(60) 및 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)로부터 모든 직접 외부 엑세스(DEA) 요구를 처리하는 것을 담당한다. 직접 외부 엑세스 주기는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)가 외부 메모리 내의 데이타에 직접 엑세스하게 하고 마스터 프로세서(60)이 그것의 데이타 캐시를 바이 패스하게 한다. 직접 외부 엑세스의 엑세스는 높은 우선순위로 주어지기 때문에, 이 엑세스는 길이가 바이트, 하프-워드(16 비트), 워드(32 비트), 또는 더블-워드(64 비트)인 단일 엑세스로 제한된다. 이것은 단일 프로세서가 다중 직접 외부 엑세스 주기를 갖는 외부 버스를 독접하는 것을 바아지하고 직접 외부 엑세스 요구 및 다른 프로세서들의 캐시 미스가 서비스되는 것을 방지한다. 직접 외부 엑세스 주기는 프로그램 가변 또는 오프-칩 레지스터와 같은 단일 오프-칩 메모리 위치에 대한 빠른 엑세스가 요구될 때 사용될 예정이다.
디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)는 그들의 파라메타 메모리(25, 30, 35 및 40), 및 그들의 데이타 메모리(22, 23, 24, 26, 28, 29, 32, 33, 34, 37, 38 및 39)에 정상적으로 엑세스할 수 있다, Hex "02000000"과 그 이상의 어드레스에 대한 엑세스는 자동적으로 직접 외부 엑세스 요구가 전송 제어기(80)에 보내지게 한다. 이 요구는 캐시/직접 외부 엑세스 라운드 로빈의 요구하는 디지탈 영상/그래픽 프로세서 턴이 도달될 때 서비스될 것이다. 캐시 미스와 직접 외부 엑세스 요구는 2개의 요구가 펜딩중인 경우 한번의 턴으로 서비스될 수 있다. 마스터 프로세서(60)의 파라메타 메모리(15)와 같은 크로스바를 통해 엑세스될 수 없는 온-칩 메모리 영역에 대한 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74) 엑세스는 전송 제어기(80)에 대한 직접 외부 엑세스 요구로 변환될 것이다. 그러나 이 직접 외부 엑세스는 오류를 발생시킬 것이다. 오류를 발생시키는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)의 직접 외부 엑세스는 오류가 있는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 캐시 주기와 동일하게 처리된다.
마스터 프로세서(60)은 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)와 약간 다른 방식으로 직접 외부 엑세스를 사용한다. 마스터 프로세서(60)은 정상적으로 데이타 캐시 메모리(13 및 14)를 통해 외부 메모리에 엑세스한다. 마스터 프로세서(60)은 데이타 캐시 메모리(13 및 14)를 바이 패스하고 엑세스 메모리에 직접 엑세스 하가 위해 직접 외부 엑세스를 사용한다. 직접 외부 엑세스 주기는 특별한 메모리 로드 또는 저장 명령을 사용하여 명백하게 특정된다. 마스터 프로세서(60)이 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 명령 캐시 메모리(21, 26, 31 및 36)과 같은 마스터 프로세서(60)에 엑세스할 수 없는 온-칩 어드레스에 대한 이러한 특별한 로드 및 저장 명령을 수행하기를 시도한다면, 동작은 전송 제어기(80)으로 폴트될 직접 외부 엑세스 요구로 변환될 것이다. 온-칩 레지스터 또는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 데이타 메모리 22, 23, 24, 27, 28, 29, 32, 33, 34, 37, 38 및 39)와 같은 엑세스 가능한 온-칩 메모리 영역에 대한 특별한 메모리 로드 또는 저장 동작은 정상 로드 또는 저장 동작으로 변환될 것이고 직접 외부 엑세스 요구는 전송 제어기(80)을 통해 발생할 것이다.
제8도는 전송 제어기(80)의 고 레벨 블럭도를 도시한다. 각각의 주 블럭에 대한 설명이 아래에 제공된다. 전송 제어기(80)은 내부 메모리 인터페이스(301), 외부 메모리 인터페이스(302), 요구 큐잉 및 우선 순위화 회로(303), 캐시, VRAM 및 리프레시 제어기(310), 패킷 전송 선입 선출(FIFO) 버퍼(311), 캐시 버퍼(312), 소스 레지스터(321) 및 소스 제어 로직(322)로 이루어진 소스 머신(320), 소스 멀티플렉서 및 정렬 로직(330), 데스티네이션 레지스터(341) 및 데스티네이션 제어 로직(342)으로 이루어진 데스티네이션 머신(340), 및 데스티네이션 멀티플렉서 및 정렬 로직(302)를 포함한다.
전송 제어기(80)은 멀티 프로세서 집적 회로(100)에 의해 외부 메모리에 대한 모든 엑세스를 관할한다. 외부 메모리 인터페이스는 여러가지 다른 형태 및 크기의 메모리 장치 및 주변을 수용하도록 설계된다. 엑세스되는 메모리의 형태는 동적으로 결정되어, 각각의 메모리 주기의 타이밍이 엑세스되는 장치에 대해 최적화될 수 있다.
다음은 외부 메모리 인터페이스(302)를 통해 외부 데이타 엑세스용으로 사용되는 멀티프로세서 집적 회로(100)의 리스트이다.
어드레스 버스 A[31:0], 이것은 멀티프로세서 집적 회로(100)으로부터의 32 비트 바이트 어드레스를 외부 메모리에 제공한다. 이 어드레스는 DRAM 엑세스용으로 멀티플렉스될 수 있다.
어드레스 시프트 선택 AS[2:0], 이들 입력은 전송 프로세서(80)에 의해 컬럼 어드레스에 주어지는 시프트의 양을 결정한다. 아무것도 포함하지 않는 8개의 시프트 양은 표 4a 및 4b에 표시된 바와 같이 지원된다. 표 4a는 어드레스 버스 비트 a[31:16] 상의 출력을 나타내고 표 4b는 어드레스 버스 비트 A[15:0] 상의 출력을 나타낸다.
A[31: 16]
표 4a
A[15:0]
표 4b
로우 어드레스 시간 동안, 어드레스 버스 A[31:0]은 정상 어드레스 값을 출력시킨다. 칼럼 어드레스 시간 동안, 어드레스 버스 A[31:0]은 표4a와 4b에 도시한 대로 어드레스 시프트 선택 AS[2:0]에 따라 시프트된 어드레스 값을 출력시킨다. "X"라고 표기된 어드레스 라인 출력이 구동되지 않고, 고 임피던스 상태에 놓여있는 것을 주의하라.
버스 크기 선택 BS[1:0]은 64비트 너비보다 작은 데이타 버스에 대해 다이내믹 버스 사이징을 허용해 준다. 이 입력들의 인코딩은 표5에 도시되어 있다.
표 5
출력 클록 CLKOUT. 이 클록 출력은 외부 로직이 멀티 프로세서 집적 회로(100)의 작동과 동기화되도록 허용해 준다.
칼럼 타이밍 선택 CT[1:0]. 이 입력은 전송 컨트롤러(80)이 부여한 현재 메모리 주기 타이밍을 결정해 준다. 이 입력의 인코딩을 표6에 도시되어 있다.
표 6
칼럼 어드레스 스트로브 /CAS[7:0]. 이런 출력은 DRAMs/VRAMs의 /CAS 입력을 구동한다. 여덟가지 스트로브가 개별적 바이트 엑세스를 허용해 주기 위해 제공된다.
엔디언 모드에 관계없이 CAS[0]는 D[7:0] 상의 데이터 전송에 상응하고, /CAS[1]은 D[15:8] 상의 전송에 상응하고 등등. 투과 전송할 때, 이런 신호들은 바이트 기입 스트로브로 사용된다.
데이타 버스 D[63:0]. 이 입력/출력 버스는 메모리 사이클당 최대 64 비트가 멀티 프로세서 집적 회로(100)의 안으로 또는 바깥으로 엑세스하도록 만들어 준다.
데이터 버퍼 출력 인에이불 /DREN. 이 출력은 데이터 송수신기를 켜는데 사용된다.
데이터 방향 인디케이터 /DDIN. 이 출력은 데이터 송수신기에 방향 인디케이터를 제공한다.
특수 함수 핀 DSF1과 DSF2. 이 출력들은 특수 VRAM 함수를 선택하는 데에 사용된다.
폴트 /FAULT. 이 입력은 멀티 프로세서 회로(100)에게 메모리 폴트가 일어났다고 알려준다.
페이지 크기 선택 PS[2:0]. 이 입력은 멀티 프로세서 집적 회로(100)에게 현재 엑세스되는 메모리의 페이지 크기를 표지해 준다. 이런 입력의 이용은 아래에 더 자세히 설명된다.
로우 어드레스 스트로브 /RAS. 이 입력은 DRAMs/VRAMs의 /RAS 입력을 구동한다.
레디(READY). 이 입력은 메모리 사이클이 종료되도록 외부 디바이스가 준비 되었다는 것을 표지한다.
이는 대기 상태(wate states)를 메모리 사이클에 삽입하기 위해 전송 컨트롤러 (80)이 사용한다.
재시도 /RETRY. 이 입력은 멀티 프로세서 집적 회로(100)에게 메모리가 여유가 없어, 전송 컨트롤러(80)이 메모리 주기를 다시 시작해야만 한다는 것을 표지해 준다.
로우 래치 /RL. 이 출력은 유효한 32 비트 어드레스가 어드레스 버스에 존재한다는 것을 표지해 준다.
상태 코드 STATUS[4:0]. 이 출력은 현재 전송 컨트롤러 메모리 주기의 타입과 기원에 대한 자세한 정보를 제공한다.
로우 엑세스의 출발에서, 칼럼 엑세스 STATUS[4:0]의 출발에 이르기까지, 출력은 표7에 도시된 대로 인코드되어 있다. 이 인코딩은 아래에 설명된 /UTIME과 함께, 외부 디바이스가 다른 프로세서 집적 회로(100)의 메모리 타이밍을 발생하도록 허용해 준다.
로우 시간 상태 코드의 상세한 설명은 다음과 같다. 정상 판독 코드는 패킷 전송, 캐시 미스, 직접 외부 접근 요구가 발생시키는 임의의 판독 주기에 대한 출력이다. 정상 판독 코드는 패킷 전송, 데이터 캐시 재기입 또는 직접 외부 엑세스 명령이 발생시키는 임의의 정상 기입 사이클에 대한 출력이다. 리프레스 코드는 트리클 리프레시 사이클 동안의 그리고 리프레스 제어기에서 오는 긴급 리프레시 명령이 발생시키는 버스트 리프레시 사이클 동안의 출력이다.
주변 장치 패킷 판독과 기입은 아래에 더 설명될 것이다. 주변 장치 패킷 전송 판독 코드는 주변 장치 패킷 전송의 결과로 일어나는 메모리 판독 사이클 동안의 출력이다. 이는 차순(次順)의 칼럼 엑세스에 관한 메모리로부터의 데이타 판독가 그 전송을 시발시킨 주변 장치에 의해 래치되어야 한다는 것을 표지한다. 주변 장치 패킷 전송 기입 코드를 위한 출력이다. 이는 멀티 프로세서 집적 회로(100)이 차순의 칼럼 엑세스 동안 데이타 버스를 고 임피던스 상태에 놓이게 하며 따라서, 주변 장치가 메모리에 저장될 데이타와 함께 버스를 구동할 수 있게 해 준다는 것을 표지한다. 블록 기입는 특별 VRAM 사이클이다. 블록 기입 코드는 블록 기입 사이클 동안 블록 기입 엑세스 모드와 함께 패킷 전송이 발생시킨 VRAMS에 대한 출력이다. 로드 칼라 레지스터 코드는 엑세스 모드로서 특정화된 블록 기입를 소유한 패킷 전송의 칼라 레지스터 부분 동안의 출력이다. 이 사이클은 시스템 VRAMS의 칼라 레지스터 안에 데이타를 저장하기 위해 사용된다. 이 칼라 레지스터 데이타는 블록 기입 사이클 동안에 메모리하기 위해 쓰여진다.
패킷 전송 이동 레지스터 판독 코드는 직렬 레지스터 전송 엑세스 모드를 사용하는 패킷 전송의 소스 사이클 동안의 출력이다. 이 사이클은 판독 메모리가 시스템 VRAMS에서 전송을 레지스터하도록 만들어 준다. 패킷 전송 이동 레지스터 기입 코드는 직렬 레지스터 전송 엑세스 모드를 특정화 시켜주는 패킷 전송의 방향 사이클 동안의 출력이다. 이 사이클은 기입 레지스터가 시스템 VRAMS에서 전송을 기억하도록 만들어 준다. 프레임 사이클은 프레임 제어기(90)이 요구하는 메모리 엑세스이다. 이동 레지스터 판독와 기입는 특별 직렬 레지스터 VRAM 사이클이다. 1 판독 전송 코드의 프레임 0은 프레임 제어기(90)이 요구하는 각각의 완전 판독 전송 사이클 동안의 출력이다. 이 사이클은 시스템 VRAMS에 대한 완전 판독 전송 사이클을 수행한다.
STATUS[2] 신호는 프레임 명령 사이클 동안 "0"이며, 프레임 1 명령 사이클 동안 "1"이다. 프레임 0 또는 1 기입 전송 코드는 프레임 제어기 90이 요구하는 완전 기입 전송 사이클 동안의 출력이다. 이 사이클은 시스템 VRAMS에 대해 완전 기입 전송 사이클을 수행한다. STATUS[2] 신호는 프레임 0 요구 사이클 동안 "0"이며, 프레임 1 요구 사이클 동안 "1"이다. 프레임 0 또는 1 분할 판독 전송 코드는 프레임 제어기(90)이 분할 판독 전송 사이클을 요구할 때의 출력이다. 이 사이클은 VRAM 메모리의 행으로부터, 직렬 레지스터의 중간으로 전송한다. STATUS[2] 신호는 프레임 0 요구 사이클 동안 "0"이며, 프레임 1 요구 사이클 동안 "1"이다.
칼럼 엑세스의 시작에서, 로우 엑세스 STATUS[4:0]의 시작에 이르기까지, 출력은 표8에 도시된 대로 인코드된다. 이 정보는 메모리 사이클을 요구하는 모듈을 표지해주는 전송 제어기(80)을 통해 멀티 프로세서 직접 회로(100)이 내는 출력이다. 이 신호들은 시스템 분석과 디버그 작업을 위해 제공되며, 외부 메모리 시스템에는 필요치 않다.
표 8
전송/출력 인에이블 /TR. 전송 제어기(80)으로부터의 이 출력은 DRAM 출력 드라이버와 VRAM 이동 레지스터 전송 사이클을 인에이블시킨다.
사용자-타이밍 선택 /UTIME. 이 출력은 전송 제어기가 /RAS와 /CAS[7:0]의 타이밍을 변조시켜서, 사용자가 그들 자신의 메모리 타이밍을 만들어낼 수 있도록 하여 준다. 이 입력은 또한, 멀티 프로세서 집적 회로(100)이 작동하는 엔디언 모드를 결정하기 위해서 리셋 상태에서 사용된다. 기입 인에이블 /WE. /WE는 정상적으로는 메모리에서, 기입 또는 기입 전송 사이클이 진행되고 있다는 것을 표시해 주는 출력이다. 내부 메모리 테스트 모드 안에서, /WE는 내부 메모리에 기입 위해 외부 디바이스가 구동하는 입력이다.
멀티 프로세서 집적 회로(100)이 발생시키는 각각의 외부 메모리 사이클은 페이지-모드 사이클을 제외하고 최소한 5 머신 상태 동안 지속된다. 머신 상태는 한 클록 주기만큼 길고, CLKOUT의 폴링 에지에서 시작한다. 각각의 메모리 사이클은 두 부분을 갖는다; 어드레스 서브 사이클, 그리고 데이타 서브 사이클. 페이지 모드 사이클은, 엑세스가 한 어드레스 서브 사이클과 멀티 데이타 서브 사이클을 갖는 형식의 확장이 된다.
어드레스 서브 사이클은 외부 메모리 사이클의 첫째 머신 상태와 함께 시작하고, 넷 이상의 머신 상태 길이가 된다. 엑세스를 위한 어드레스와 상태 코드는 이 시각에서는 출력이 된다. 이 사이클의 이 부분은, VRAMS와 DRAMS의 로우 어드레스가 이 시각에서 래치되기 때문에, 로우 어드레스 시각이라고 부른다.
어드레스 버스 A[31:0]은 현재 엑세스되는 64 비트 워드의 시작 바이트로 포인트하는 32 비트 어드레스를 출력시킨다. 엑세스는 시작 바이트와 전송될 데이타량에 따라 1에서부터 8 바이트까지의 어떤 값도 가능하다. 이 어드레스는 멀티 프로세서 집적 회로(100)을 외부 메모리 공간으로 디코드하기 위해 사용된다. 외부 디코드 조직은 디바이스의 또는 엑세스되는 디바이스의 어드레스 이동 선택 AS[2:0]을 통해 타입을, 칼럼 타이밍 선택 CT[1:0]를 통해 속도를, 페이지 크기 선택 PS[2:0]를 통해 페이지 크기를, 버스 크기 선택 BS[1:0]를 통해 데이터 버스 폭을 표지해주기 위해 멀티 프로세서 집적 회로(100)에게 다수의 신호를 반송해 준다.
이 정보는 어드레스 서브 사이클의 길이 뿐만아니라, 데이타 서브 사이클의 길이, 어드레싱, 갯수를 결정하는 데에 사용된다. 어드레스와 상태는 /RL 또는 /RAS로 래치될 것이다.
어드레스 서브 사이클은 수행되는 엑세스 타입이 요구하는 바대로, 네가지 머신 상태를 넘어서서, 머신 상태의 정수배 갯수만큼 자동적으로 확장될 것이다. 또한 휴지 상태 삽입에 따라 확장될 수도 있다. 이 서브 사이클은 최소한 한 머신 상태만큼 길며, 즉각적으로 어드레스 서브 사이클을 따라간다. DRAMS과 VRAMS을 위한 칼럼 어드레스는 이 시각에 출력이 되며, 데이타는 멀티 프로세서 집적 회로(100)과 외부 메모리 사이에서 전송된다. 이런 메모리 사이클 부분은 보통 칼럼 어드레스 시각이라고 부른다.
데이타 버스 D[63:0]은 멀티 프로세서 집적 회로(100)과 외부 메모리 사이의 데이타를 전송한다. 데이타는 기입 사이클 동안 구동 아웃되거나, 판독 사이클 동안 래치인된다. 버스 상의 유효 데이타 위치는 멀티 프로세서 집적 회로(100)의 엔디언 모드, 전송되는 데이타의 양, 그리고 메모리 폭에 의해 결정된다.
이 시간 동안의 칼럼 어드레스 출력은 32 비트 바이트 어드레스의 시프트된 판이 된다. 어드레스 버스 A[31:0] 상의 어드레스 정렬은, 어드레스 서브 사이클 동안에 멀티 프로세서 집적 회로(100)에 대한 어드레스 시프트 선택 버스 A[31:0] 값 입력에 의해 결정된다.
데이터 서브 사이클의 길이는 정규적으로는, 어드레스 서브 사이클 동안에 멀티 프로세서 집적 회로(100)에 대한 칼럼 타이밍 선택 CT[1:0] 입력에 의해 결정되는 1, 2, 또는 3 머신 상태가 된다. 더 긴 엑세스 시간을 요구하는 디바이스는 어드레스나 데이타 서브 사이클 어느 하나안의 대기 상태를 삽입하게 될 것이다.
현재 메모리 엑세스가 같은 방향일 때 그리고 로우 시간에서 페이지 크기 선택 PS[2:0] 입력에 기초한 이전 엑세스와 동일한 메모리 페이지 안에 있을 때는 언제든지, 전송 제어기(80)은 페이지-모드 사이클을 이용할 것이다. 페이지-모드 사이클은 멀티 데이타 서브 사이클이 따라가는 하나의 어드레스 서브 사이클로 구성된다. 데이타는 단순히 동일 메모리 페이지 내에서는 인접할 필요는 없다. 어드레스와 데이타 서브 사이클 모두의 동안에, 멀티 프로세서 집적 회로(100)은 STATUS[4:0] 핀에 대한 상태 코드를 출력시킨다. 이 상태 코드들은 수행되는 외부 사이클에 관한 정보를 제공한다. 어드레스 서브 사이클의 로우 시간 동안, STATUS[4:0] 핀은 수행되는 사이클 타입을 표지해 주기위해 표7에 도시된 대로 코드를 출력시킨다. 로우 시간 상태 코드는 /RL 또는 /RAS에 의해 래치될 수 있으며,메모리-뱅크 디코딩을 수행하거나, 특별 하드웨어 특성을 발휘하도록 만들기 위해 사용된다. 데이타 서브 사이클의 칼럼 시간 동안, STATUS[4:0] 핀 상의 정보는 사이클과 요구하는 프로세서에 관한 상세한 점을 제공하기 위해 변화한다. 이런 활동 코드는 표8에 도시되었다. 이 코드들은 사이클 자체에 대해서는 어떤 정보도 제공하지 않으며 따라서 주로 시스템 디버그를 촉진시키는 데에 사용된다.
전송 제어기(80)이 외부 메모리와 적절히 통신하기 위해서는 전송 제어기가 엑세스하는 메모리 타입이 무엇인지 알아야만 한다. 이는, 멀티 프로세서 집적 회로(100) 어드레스 시프트 선택 AS[2:0], 버스 크기 선택 BS[1:0], 칼럼 시간 선택 CT[1:0], 그리고 페이지 크기 선택 PS[2:0] 입력을 이용하여 로우 시간에서 메모리 타입을 식별함으로써 성취된다. 멀티 프로세서 집적 회로(100)은 외부 메모리 어드레스와 로우 시간 상태 코드들을 출력시키고, 메모리 타입을 결정하기 위해 이런 입력을 샘플한다. 이는 외부 로직 시간이 어드레스를 디코드할 수 있게 해주며 메모리 식별 신호를 그들의 적절한 레벨에 있게끔 구동한다. 선택된 메모리 타입은 다음 어드레스 서브 사이클까지 유효하게 유지된다.
멀티 프로세서 집적 회로(100)이 DRAM과 SRAM을 지원하기 때문에, 반드시 어드레스 버스 상에서 멀티 행과 열을 제공해야 한다. 멀티 프로세서 집적 회로(100)은 언제나 로우 시간에서 완전 32 비트 바이트 어드레스를 출력시킨다. 칼럼 시각일 때, 칼럼 어드레스를 이미 DRAMS에 의해 래치된 로우 어드레스에게 정렬시키기 위해 버스 상의 어드레스를 시프트해야만 한다. 적절히 칼럼 어드레스를 정렬하기 위해서는, 배열 크기가 디바이스의 로우/칼럼 어드레스 비트의 수를 결정해 주기때문에, 멀티 프로세서 집적 회로(100)은 반드시 자신이 엑세스하는 DRAM의 배열 크기를 알아야만 한다. 이는 어드레스 시프트 선택 AS[2:0] 입력을 이용하여 이뤄진다. 외부 조직은 로우 시간에서 멀티 프로세서 집적 회로(100)에 의한 어드레스 출력을 디코드하며, 어드레스 시프트 선택 AS[2:0] 입력에 대한 3 비트 시프트 코드를 제공해 준다. 전송 제어기(80)은 이 값을 샘플하고 래치하며 만약 어드레스가 동적 메모리에서 요구되는 것처럼 멀티화되어야 하거나 정적 메모리와 주변기기와 함께 사응되기 위해 멀티화되지 않고 유지되도록 해야 할지를 결정하기 위해 이 값을 사용한다. 표4a와 4b는 샘플된 어드레스 시프트 선택 AS[2:0] 값이 칼럼 시간에서 어드레스 출력에 어떻게 영향을 끼치는 지를 도시해 준다. 이 값이 "000"이라면, 시프트 안된 32 비트 어드레스는 각각의 차순 "칼럼" 엑세스에 대한 출력이 된다. 이 값이 비영(non-zero)이라면, 차순의 칼럼 어드레스는 표4a와 4b가 도시한 대로 시프트될 것이다. 시프트 값은 8에서 14 비트까지의 범위를 가지고 변화하며 이는, N으로 64K에 N 배열 크기로 256M에 상응하는, 8에서 14 어드레스 핀을 가진 동적 메모리가 지원된다는 것을 의미한다. 어드레스 버스 A[2:0]은 언제나 시프트된 양에 관계없이 바이트 어드레스 비트 0에서 2까지를 출력시킨다는 것을 주의하라. 이는 동적 버스 사이징을 지원하기 위해 수행된다.
예를 들어, 4 DRAMS에 의한 1M가 64 비트 크기 상황 설정안의 데이타 버스에 연결되었다고 하자. 메모리는 로우와 칼럼 어드레스 각각 10 비트를 요구한다. 멀티 프로세서 집적 회로(100)이 갖는 어드레스 비트의 어드레스 시프트 선택 AS[2:0]은 바이트 어드레스를 대표하고, 메모리 은행이 64 비트 너비이고 개별 바이트가 /CAS[7:0] 스트로브에 의해 제어되기 때문에 AS[2:0]은 무시된다. 이는 메모리가 비트 A[3]으로 시작하는 20개의 인접 어드레스 비트를 필요로 한다는 것을 의미한다. 표4a와 4b를 보면 "011"의 어드레스 시프트 선택 AS[1:0] 값이 멀티화된 주소 10 비트를 제공한다는 것을 알 수 있다. 시작 어드레스 비트 A[3]이 칼럼 시간에서 어드레스 핀 A[13]에 상응하기 때문에, DRAMS 어드레스 핀은 A[13]과 같이 시작하는 10개의 멀티 프로세서 집적 회로(100) 어드레스 핀과 연결된다.
전송 제어기(80)은 가능할 때는 언제든지 페이지-모드 사이클을 수행하기 때문에, 전송 제어기가 페이지 또는 메모리의 로우 경계를 건너갈 때에는 새 페이지에서 로우 엑세스를 수행할 수 있도록 지금 엑세스 중인 상태이어야 한다는 것을 알아둘 필요가 있다. 현재 엑세스에 관한 페이지 크기는 페이지 크기 선택 PS[2:0] 핀 상에 외부 로직이 위치시켜준 3 비트 값에 의해 표지된다. 전송 제어기(80)은 로우 시간에 이 핀들을 샘플하며, 표지할 지를 결정하기 위해 샘플된 값을 사용한다. 변화하는 어드레스 비트 중 어느 것이 페이지 교체 를 표지하는 지를 결정하기 위해 샘플 값을 사용한다. 샘플값은 다음 로우 엑세스 때까지 전송 제어기(80)이 보존한다. 페이지 크기 선택 PS[2:0] 상에 표지된 페이지 크기는 멀티 뱅크가 포개질 수 있기 때문에 반드시 어드레스 시프트 선택 AS[2:0]에 표지된 시프트 양과 상응하지는 않는다.
외부 메모리 엑세스가 일어날 때는 언제나, 전송 제어기(80)은 내부 LAST PAGE 레지스터(360) 안에 있는 21개의 중요한 어드레스 비트를 기록한다. 각각의 차순 칼럼 엑세스 어드레스는 그 다음 이 값과 비교된다. 이 점이 제9도에 다이어그램되었다. 페이지 크기 선택 PS[2:0]에서 입력이 되는 값은 비교 하는 동안, LASTPAGE 레지스터(360)의 하위 비트를 선택적으로 무시하는 데에 사용된다. 페이지 크기 선택 PS[2:0]-1의 값과 동일한, 비트수 아래의 LASTPAGE 레지스터 비트는 비교에서 무시되었다. 가장 중요한 15 bit는 항상 비교되고 다음 어드레스의 중요하지 않은 11 비트는 항상 무시된다. 인에이블된 LASTPAGE의 레지스터(360)의 비트와 다음 메모리 어드레스 사이에서 어떤 정합도 발견되지 않으면, 페이지는 변화되고 다음 메모리 엑세스는 로우 어드레스 사이클과 더불어 시작할 것이다. 만약 페이지 크기 선택 PS[2:0] = "000"이라면, 페이지 모드는 디스에이블되며 임의의 차순 사이클도 다음 로우 엑세스와 함께 시작할 것이다.
예를 들어, 엑세스되는 메모리가 다른 뱅크과 전혀 포개짐이 없이 64 비트 데이타 버스와 연결되는 4 DRAMS의 16 1M로 구성되었다고 하자. 각각의 메모리 디바이스는 210비트의 로우 크기를 갖고 있다.
단 하나의 로우 안의 임의 위치는 DRAM의 페이지 모드 사이클 동안 엑세스될 수 있으므로, 이 환경의 페이지 크기는 다음처럼 될 것이다; 210위치/페이지 ×8 바이트/위치 = 8K 바이트/페이지. 제9도가 보여 주듯이, 이는 페이지 크기 선택 PS[2:0] 값 "011"에 상응한다.
전송 제어기(80)이 로우 시간에서 페이지 크기 선택 PS[2:0] = "011"을 샘플할 때, 페이지 경계가 넘어갔는지를 결정하기 위해, 차순의 엑세스의 31-13 비트만을 점검할 것이다. 이는 이 특별 환경 DRAMS의 로우 어드레스 비트와 이 특별환경의 뱅크 디코드 비트에 상응하는 것을 주의하라.
8개의 가능한 페이지 크기 선택 PS[2:0] 값을 위한 비교된 어드레스 비트와 페이지 크기가 표9에 도시되어 있다.
(표 9)
LASTPAGE 레지스터(360)은 연관된 유효 비트(361)을 가진다. 이 유효 비트(361)은 LASTPAGE 레지스터(360)에 저장된 데이타가 유효하게 또는 유효하지 않게 취급되었는지 표지해 준다. LASTPAGE 레지스터(360)은 리셋 후의 비유효, 호스트 엑세스, 폴트, 그리고 재시도 후에, 또는 엑세스의 방향 변화 즉 판독 대 기입 후에 비유효한 것으로 취급된다. 이는 로우 엑세스가 차순의 엑세스 전에 언제나 일어나도록 강제한다. 또한 LASTPAGE 레지스터(360)은 리프레시 사이클, 프레임 제어기(90)이 요구하는 사이클 패킷 전송으로 발생된 직렬레지스터 전송 사이클 전과 후 모두 비유효한 것으로 취급되어 이런 것들이 언제나 단일 비페이지 모드 사이클로 일어나도록 만들어 준다. 주변 장치 패킷 트랜0스퍼의 특별한 경우, 전송은 주변 장치 전송 상태 코드가 출력이 되도록 보장해주기 위해 로우 엑세스와 함께 항상 시작한다. LASTPAGE 레지스터(360) 내의 데이타는 새로운 상태 코드가 출력이 되도록, 전송이 끝날 때 비유효한 것으로 취급된다. 그러나 전송하는 동안, LASTPAGE 레지스터(360)은 주변 장치 전송이 가능할 때는 언제든지 페이지-모드 사이클을 이용할 수 있도록 정규적으로 작동할 것이다.
버스 크기 선택 BS[1:0] 핀은 현재 엑세스의 버스 크기를 결정해주기 위해 로우 시간에서 샘플된다. 전송 제어기(80)은 표5에 도시된 대로 8, 16, 32, 또는 64 비트의 버스 크기를 지원한다. 버스 크기를 세팅하는 것은 전송 제어기(80)이 각각의 칼럼 엑세스 동안 전송할 수 있는 최대 바이트 갯수를 결정해 준다.
만약 요구되는 바이트 갯수가 버스 크기를 초과하면, 전송 제어기(80)은 전송을 끝내기 위해 자동적으로 멀티 엑세스를 수행할 것이다. 선택된 버스 크기는 또한 어느 부분의 데이타가 전송할 때 이용될 지를 결정해 준다. 64 비트 메모리에 대해, 전체 버스가 전송에 유용하다. 32 bit 메모리에 대해서는, 데이타 버스 D[63:32] 핀은 거대 엔디언 모드에서 사용되며, 데이타 버스 D[31:0] 핀은 소규모 엔디언 모드에서 사용된다. 16 비트에 대해서는 버스가 거대와 소규모 엔디언 각각에 대해서 데이타 버스 D[63:48] 핀과 데이타 버스 D[15:0] 핀을 사용하고, 8 비트버스는 데이타 버스 D[63:56] 핀과 데이타 버스 D[7:0] 핀을 사용한다. 어떤 크기의 버스가 사용되든 상관없이, 전송 제어기(80)은 언제나 버스의 적합한 부분에 데이타를 정렬시키며, 적합한 /CAS 스트로브가 유효한 바이트만이 전송되도록 보장하는 작용을 하게 스트로브를 활성화시킨다.
전송 제어기(80)은 네개의 기초 메모리 타이밍 집합을 지원한다. 이는 대기 상태를 사용할 필요없이 칼럼 엑세스당 하나, 둘 또는 세개의 클록 사이클을 갖는 선택을 이뤄준다. 모든 타입이 그 본질상 DRAM과 유사하지만, 각각의 타입은 DRAM 또는 SRAM의 특정 타입과 적합하게 만들어져 있다. 사용되는 타이밍은 표6에 도시된 대로 칼럼 타이밍 선택 CT[1:0] 입력이 결정해 준다. 외부 디코드 조직은 현재 엑세스되는 메모리 타입을 결정하기 위해 어드레스를 디코드한 후 이 핀들을 적합한 레벨로 구동해 준다. 비-파이프라인된 1 사이클/칼럼 타이밍은 아주 빠른 엑세스 시간을 갖는 디바이스에 사용되도록 디자인된다. 파이프라인된 1 사이클/칼럼 타이밍은 엑세스가 파이프라인되었다는00 것을 제외하고, 1 사이클/칼럼 타이밍과 유사하다. 한 어드레스는 일 사이클 동안의 출력이며 이 어드레스에 상응하는 데이타는 다음 사이클 동안 엑세스 된다. 이 타이밍은 파이프라인된 페이지 모드 사이클을 지원하는 DRAMS/VRAMS와 함께 사용되나, 동기화된 SRAM 디바이스와 같이 사용되기도 한다. 비파이프라인된 두개의 사이클/칼럼 타이밍 사이클은 SRAMS과 신속 DRAM 장치에 대한 칼럼 엑세스 시간의 두 클록 사이클을 제공한다. 이는 로우 어드레스 시간에 1 사이클을 부가해 준다. 비파이프라인된 세개의 사이클/칼럼 사이클은 DRAM과 다른 느린 디바이스와 함께 사용된다.
칼럼 엑세스 시간의 세개 클록 사이클을 제공하는 데에 부가하여, 로우 엑세스 시간에 두 클록 사이클을 부가한다. 선택된 칼럼 타이밍은 전체 페이지에 대해 유효하게 유지되며, 이는 다음 로우 엑세스가 일어날 때까지 유지된다. 이는 발생된 어드레스에 기초하여 적합한 칼럼 타이밍 선택 CT[1:0]을 제공해 주는 외부 디바이스의 책임이다. 블록 기입과 로드 칼러 레지스터 사이클 동안, 버스 크기 선택 BS[1:0] 핀은 다른 목적으로 사용된다. 블록 기입은 64 비트 버스를 위해서만 지원되기 때문에 버스 크기 정보는 필요없게 된다. 대신, 버스 크기 선택 BS[1:0]는 어드레스된 메모리가 지원하는 블록 기입 타입을 표지하는 데에 사용된다. 이 사이클 동안의 BS[1:0] 값은 표23에 도시되어 있다. 블록 기입은 아래에 자세히 논의된다. 제8도에 예시된 숙고 실시예에서, 멀티 프로세서 집적 회로(100) 외부 메모리 사이클은 전송 제어기(80)의 외부 메모리 인터페이스(302)가 발생시킨다. 외부 메모리 인터페이스(302)는 메모리 인터페이스 신호 천이를 제어하는 상태 계열을 발생시키는 복합 상태 머신을 포함한다. 발생된 상태와 그들의 계열은 수행되는 사이클의 형태, 엑세스되는 메모리의 칼럼 타이밍, 수행될 다음 엑세스, 폴트와 같은 내부 또는 외부 사건, 등등에 의해 변화한다. 숙고 실시예가 상태 머신을 포함하지만, 이 분야 기술에 익숙한 자는 이 기능이 ROM 안에 고정 프로그램을 갖는 마이크로 컨트롤러 또는 프로그램 가능한 마이크로 프로세서가 수행할 수도 있다는 것을 깨달을 것이다.
제10도는 외부 메모리 인터페이스(302)에 대한 방법 실시예를 정의하는 완전 상태 다이어그램을 보여준다. 아주 큰 갯수의 상태 천이가 존재하나, 그들의 계열은 기본적으로 수행되는 메모리 엑세스를 위해 선택된 칼럼 타이밍에 의존한다. 부가적으로 상태는 로우 시간 상태와 칼럼 시간 상태의 두 군으로 갈라진다.
로우 시간 상태는 각각의 메모리 엑세스의 어드레스 서브 사이클 또는 "로우 시간"을 구성한다. 외부 메모리 인터페이스(302)는 새 페이지 엑세스가 시작될 때는 언제든지, 이 상태들로 들어가게 된다. 어드레스되는 메모리 타입이 결정되는 것은 이 상태들 동안이 된다. 최소한 네개의 로우 상태가 매로우 엑세스 마다 일어난다. 그들은 다음과 같이 정의된다.
모든 메모리 엑세스에 대한 시작 상태는 r1 상태(370)이 된다. 상태(370) 동안 전송 제어기(80)은 로우 어드레스 A[31:0]과 사이클 타입 STATUS[920]을 출력시키고, 제어 신호를 그들의 비활성 상태로 구동한다.
모든 메모리 엑세스에 공통적인 다음 상태는 r2 상태(371)이다. 상태(371) 동안, 전송 제어기(80)은 /RL을 확인하고 데이타 전송 방향에 따라 /DDZN을 구동한다. 상태(371) 동안 전송 제어기(80)은 어드레스 시프트 칼럼 타이밍 선택 CT[1:0], 페이지 크기 선택 PA[2:0]과 /UTIME 입력을 샘플한다. 외부 메모리 인터페이스(302)는 블록 기입과 로드 칼라 레지스터를 포함하는 판독과 기입을 위해 r3 상태(372)를 들어가게 한다. 상태(373) 동안 전송 제어기(80)은 /DBEN, DSF1, DSF2, /TRG, 그리고 /WE를 그들의 활성 로우 시간 레벨로 구동하며, /FAULT, READY 그리고 /RETRY 입력을 샘플한다.
외부 메모리 인터페이스(302)는 리프레시만을 위해 rt3 상태(373)를 들어가게 한다. 상태(373) 동안 전송 제어기(80)은 모든 /CAS[7:0] 스트로브를 활성화시키고, /FAULT, READY 그리고 /RETRY 입력을 샘플한다.
외부 메모리 인터페이스(302)는 시프트 레지스터 전송 사이클만을 위해 tr3 상태(372)로 들어간다. 상태(374)는 r3(372)와 외부적으로 동일하다.
외부 메모리 인터페이스(302)는 칼럼 타이밍 선택 CT[1:0] = "11"일 때 단지 3 사이클/칼럼 엑세스 동안만 r4 상태(375)로 들어간다. 어떤 신호 천이도 일어나지 않는다. 전송 제어기(80)은 /RETRY 입력을 샘플한다.
r5 상태(376)은 칼럼 타이밍 선택 C7[1] = "1"일 때 2와 3 사이클/칼럼 엑세스에 공통적이다. 상태(376) 동안 전송 제어기(80)은 RAS 출력 로우를 구동하며 /RETRY 입력을 샘플한다. 외부 메모리 인터페이스(302)는 리프레시를 제외한 모든 엑세스에 대해 r6 상태(377)로 들어간다. 상태(377) 동안 전송 제어기(80)은 이미 로우 상태가 아니라면 /RAS 로우를 구동하고 /DBEN, DSF1, DSF2, /TRG, 그리고 /WE를 그들의 적절한 칼럼 시간 레벨로 구동한다. 전송 제어기(80)은 또한 READY 그리고 /RETRY 입력을 샘플한다.
rf7 상태(379)는 칼럼 타이밍 선택 CT[1] = "1"일 때 2와 3 사이클/칼럼 리프레시에 공통적이다. 상태(379) 동안 전송 제어기(80)은 STATUS[4:0]에 프로세서 활성화 코드를 출력시키며 /RETRY 입력을 샘플한다.
외부 메모리 일터페이스(302)는 칼럼 타이밍 선택 CT[1:0] = "11"일 때, 단지 3 사이클/칼럼 래프레시 동안만 rf8 상태(380)으로 들어간다. 어떤 신호 천이도 일어나지 않는다. 전송 제어기(80)은 /RETRY 입력을 샘플한다.
rhiz 상태(382)는 고 임피던스 상태에 있다. 외부 메모리 인터페이스(302)는외부 버스 호스트 요구 동안 상태(382)로 들어간다. 외부 메모리 인터페이스(302)는 버스 릴리스를 통한 영상 시스템의 회복 때까지 상태(382)를 반복한다.
칼럼 시간 상태는 데이터 서브 사이클 또는 각각의 메모리 엑세스의 "칼럼 시간"을 포함한다. 모든 데이타 전송은 이 상태동안 일어난다. 외부 메모리 인터페이스(302)는 칼럼 상태의 두가지 기초 계열로 들어간다:
파이프라인된 그리고 파이프라인되지 않은 1 사이클/칼럼 엑세스에 해당하는 상태; 2와 3 사이클/칼럼 엑세스에 해당하는 상태. 페이지 모드 작동하는 동안, 멀티 칼럼 엑세스는 외부 메모리 인터 페이스(302)가 단일 페이지 모드 엑세스 과정동안 이 상태 계열을 여러번 반복할 수 있도록 일어난다.
C1, 2 상태(383)은 칼럼 타이밍 선택 CT[1:0] = "10"일 때 2 사아클/칼럼 엑세스에 해당하는 첫째 칼럼 상태가 된다. 상태(383) 동안 전송 제어기(80)은 어드레스 버스 A[31:0]에 칼럼 어드레스를 출력시키며 STATUS[4:0]에 프로세서 활성화 코드를 출력시킨다. 전송 제어기(80)은, 이 때가 기입 사이클이면 데이타 출력을 구동하며, 적합한 /CAS[7:0] 스트로브를 확인한다.
C1, 3 상태(384)는 칼럼 타이밍 선택 CT[1:0] = "11'일 때 3 사이클/칼럼 엑세스에 대해 첫째 칼럼 상태가 된다. 상태(384) 동안 전송 제어기(80)은 어드레스 버스 A[31:0]에 칼럼 어드레스를, STATUS[4:0]에 프로세서 활성화 코드를 출력시킨다. 그리고 이 때가 기입 사이클이면 데이타 출력을 구동한다.
C2, 3 상태(385)는 칼럼 타이밍 선택 CT[1:0] = "11"일 때 2와 3 사이클/칼럼 엑세스에 대한 마지막 칼럼 상태가 된다. 상태(385)동안 전송 제어기(80)은 적합한 /CAS[7:0] 스트로브를 어써트한다. c3 상태(386)은 칼럼 타이밍 선택 CT[1]="1"일 때 2와 3사이클/칼럼 엑세스에 대한 마지막 칼럼 상태가 된다. 상태(386)동안 전송 제어기(80)은 READY 입력을 샘플하며 현재 사이클이 판독 사이클이면 입력데이타를 래치한다.
CS1 상태(387)은 칼럼 타이밍 선택 CT[1] = "0"일 때 1 사이클/칼럼 판독에 대해 시작 칼럼 상태가 된다. 상태(387) 동안 전송 제어기(80)은 어드레스 버스 A[31:0]상에 칼럼 어드레스를, STATUS[4:0]상에 프로세서 활성화 코드를 출력시키며, 모든 /CAS[7:0] 스트로브를 확인한다. 전송 프로세서(80)은 입력 데이타를 래치하지 않는다.
CS2 상태(388)은 둘째 시작 칼럼 상태가 된다. 외부 메모리 인터페이스(302)는 언제나 칼럼 타이밍 선택 CT[1:0] = "00"일 때만 파이프라인된 1 사이클/칼럼 판독에 대해 CS1 상태(387)을 따라오는 상태 (388)을 삽입한다. 상태(388) 동안 전송 제어기(80)은 칼럼 어드레스와 다음 칼럼 엑세스의 프로세서 활성화 코드를 출력시킨다. 전송 제어기(80)은 상태(388) 동안 입력 데이타를 래치하지 않는다.
CP 상태(389)는 칼럼 타이밍 선택 CT[1] = "0"일 때 모든 1 사이클/칼럼 엑세스에 대한 주 칼럼 상태가 된다. 외부 메모리 인터페이스(302)는 요구되는 시작 상태의 완결 후에 각각의 페이지 모드 칼럼 엑세스에 대해 상태(389)를 반복한다. 상태(389)동안 전송 제어기(80)은 어드레스 버스 A[31:0]에 칼럼 어드레스를, STATUS[4:0]에 프로세서 활성화 코드를 출력시키고 적절한 /CAS[7:0] 스트로브를 확인한다. 전송 제어기(80)은 유효 데이타를 기입하기 위해 구동 아웃하며, 판독하기 위해 래치인한다.
cdr 상태(390)은 칼럼 타이밍 선택 CT[1] = "0"일 때 1 사이클/칼럼 엑세스에 대한 판독 드레인 상태가 된다. 외부 메모리 인터페이스(302)는, 다른 칼럼 엑세스가 페이지 변화로 또는 파이프라인 버블 또는 인터페이스가 풀리게 되는 것 때문에 걸려있게 되지 않는다면, 최종 cp 상태(389) 후에 상태(390)을 갖게 된다.
상태(390) 동안 전송 제어기(80)은 /CAS[7:0] 스트로브를 확인하지 않으나 선행하는 cp 상태(389) 또는 cs1 상태(387)이 어드레스하는 입력 데이타를 래치한다.
외부 메모리 인터페이스(302)는 칼럼 타이밍 선택 CT[1:0] = "00"일 때 파이프라인된 1 사이클/칼럼 기입 드레인 사이클에 대한 cdw 상태(391)로 들어간다. 외부 메모리 인터페이스(302)는 새로운 페이지의 시작에서 r1 상태(370)으로 돌아가기 전에 상태(391)로 들어간다. 상태(391) 동안 전송 제어기(80)은 기입된 최종 데이타로 파이프라인된 메모리 배열을 최신화하기 위해 모든 /CAS[7:0] 스트로브를 확인한다.
C1 상태(392)는 공전 칼럼 상태이다. 외부 메모리 인터페이스(302)는 임의의 요구된 드레인 상태 후에 더 이상의 칼럼 엑세스가 걸려있지 않을 때 상태(392)로 들어간다. 이는 파이프라인 버블로 인해 또는 더 이상의 사이클이 요구되지 않기 때문에 이뤄질 수 있으나 인터페이스는 더 이상의 페이지 변화가 없기 때문에 페이지 모드로 계속 남는다.
제10도에 도시된 상태 천이 표지기는 어떤 상태 또는 사건이 다른 상태로의천이를 일으키는지 결정한다. 어떤 경우, 다중 조건은 어느 상태로의 천이가 일어나도록 하기 위해 만족되어야 한다. 이런 상태 천이 조건과 사건의 리스트는 다음과 같다;
CT = "XX" - r3 상태(372) 동안에 래치된 대로 표지된 칼럼 타이밍 선택 CT[1:0]에 대해 상태 변화가 일어난다;
r, 판독 - 판독 사이클이 일어난다;
w, 기입 - 기입 사이클이 일어난다;
rt - 판독 전송 사이클이 일어난다;
wt - 기입 전송 사이클이 일어난다;
fault - r3 상태(372) 동안에 로우 샘플된 /FAULT 입력은 메모리 엑세스 폴트를 표지한다;
retry - r3 상태(372) 동안에 로우 샘플된 /RETRY 입력은 로우-시간 재시도를 요구한다;
wait - r3 상태(372), r6 상태(377) 또는 c3 상태(386) 동안 로우 샘플된 READY 입력은 현재 상태의 반복을 요구한다;
spin - 전송 제어기(80) 파이프라인이 로드하는 것을 허용해주기 위해 부가의 r6 상태(277)을 더하라는 내부적으로 발생된 요구이다. 외부 메모리 인터페이스(302)는 버스 크기가 이전 페이지 엑세스에서 변화되었을 때 각각의 2 사이클/칼럼 기입 동안 한번, 각각의 1 사이클/칼럼 기입 동안 두번, 1 사이클/칼럼 엑세스 동안 상태(377)로 한번 들어간다;
new co1 - 현재 메모리 사이클이 동일한 메모리 페이지의 다음 칼럼 엑세스가 된다;
drain - 현재 메모리 사이클이 1 사이클/칼럼 판독 사이클이 된다. 어떤 칼럼 엑세스도 현재 판독 상태를 따라오면서 걸려있지 않다;
idle - 어떤 칼럼 엑세스도 현재 상태 후에 걸려있지 않다. 모든 드레인 상태는 완결되었다; 그리고
new page - 다음 메모리 엑세스는 페이지 변화와 새로운 액세스를 요구한다.
전송 제어기(80)은 내부 메모리 인터페이스(301)과 외부 메모리 인터페이스(302) 모두에서 파이프라인을 포함한다. 이 파이프라인은 현재 엑세스가 아직 완결되지 않았을 때 전송 제어기(80)이 요구하는 메모리 엑세스를 대기할 수 있다. 예를 들어 패킷 요구가 온-칩에서 오프-칩 메모리로 데이타를 전송하는 것이라면 그 방향은 엑세스당 2 사이클을 요구할 것이다. 데이타는 요구되는 데이타가 패킷 전송 FIFO 버퍼(311) 안에 있다고 가정하면, 엑세스당 1 사이클에서 패킷 전송 FIFO 버퍼(311)에서부터 도출될 것이므로, 다른 방향 사이클은 첫째 사이클이 완결되기 전에 파이프라인에 놓여있어야 한다.
이 파이프라인은 사용자에게 정규적으로 완전히 투과하다. 작동에 대한 효과는 파이프라인이 "드레인 되었을 때"에만 알 수 있다, 사이클이 외부 메모리 인터페이스 (302)의 외부 메모리 파이프라인으로 코드되기 위해서는, 그 사이클은 파이프라인에 이미 포함된 임의의 다른 사이클과 동일한 메모리 페이지 내에 위치해 있어야 한다. 한 사이클이 파이프라인 안에 위치 되었다면 제거될 수 없다; 그 사이클은 반드시 일어나야 한다. 그래서 새 메모리 페이지에 대한 접근이 요구될 때, 파이프라인 안의 사이클은 첫번째로 완결되어야 한다. 전송 제어기(80)이 외부 메모리에 패킷 전송을 수행하고 있고, 프레임 제어기(90)이 메모리 요구를 발하면, 현재 파이프라인 내에 있는 임의의 칼럼 사이클은, 프레임 제어기 사이클이 더 빠른 우선권을 갖고 있다 하더라도, 프레임 제어기(90)이 요구하는 사이클이 얼어나기 전에 완결되어야만 한다. 파이프라인 드레인되는 것도 또한 일어날 수 있다; 캐시 그리고 외부 메모리 접근, 호스트 엑서스, 긴급 리프레시 전에; 패킷 전송 보류 동안; "칼럼 시간" 재시도 후에 파이프라인 드레인되는 것은 긴급 요구가 걸려있을 때 제일 빠른 우선권이 주어진다.
외부 메모리 엑세스 동안, 비활성 사이클이 있을 수 있는데, 이 동안 어떤 활성 칼럼 엑세스도 일어나지 않는다. 이 주기들을 전송 제어기 (80)의 내부 파이프라인 내에서 "버블"의 결과가 된다. 버블은 전송 제어기(80)이 사이클 동안 수행하는 동작이 전혀 없을 때 일어난다. 이는 다음의 경우 일어날 수 있다; 크로스바 경쟁의 결과로; 전송 제어기(80)이 기입 사이클 동안 다음 엑세스를 수행할 충분한 데이타를 갖고 있지 않기 때문에; 패킷 전송 FIFO 버퍼 311이 가득차서 더이상의 데이타가 판독 사이클에 로드되지 못할 때; 또는 단순히 요구되는 활성이 없을 때 이런 조건들이 없을 때, 버블은 전혀 생기지 않는다.
버블의 예는 전송 제어기(80)이 내부 소스와 외부 수신지를 가진 패킷 전송을 서비스할 때에 생긴다. 만약 전송 제어기(80)이 한번에 1 바이트씩 소스 데이타를 엑세스할 수 있고 한번에 8 바이트씩 수신지 데이타를 기입할 수 있다면 전송제어기(80)은 8번의 내부 사이클마다 한번의 수신지 엑세스를 수행할 수 있을 뿐이다. 이는 전송 제어기가 다음 칼럼 엑세스를 수행하기 위해 8 바이트의 충분한 데이타를 갖기 위해 기다리는 동안 전송 제어기 (80)이 버블을 외부 메모리 수신지 사이클로 삽입하는 결과로 나타난다. 삽입된 버블 사이클의 수는 외부 메모리 사이클의 타이밍에 의존한다.
넓은 범위의 메모리 타입과 조직을 지원하기 위해서는, 멀티 프로세서 집적 회로 (100)이 확장 재시도 그리고 외부 메모리 사이클을 종결시키도록 다양한 방법을 제공한다. 이런 작용의 각각은 다음 절에서 자세히 설명된다.
한번 전송 제어기(80)이 파이프라인 안에서의 모든 칼럼 엑세스 걸기를 완결했다면, 메모리 엑세스를 종결시킬 때가 된다. 그러나 새로운 로우 엑세스가 요구되기 까지는 종결은 일어나지 않을 것이다. 외부 메모리 신호는 다음 메모리 엑세스까지 ci 상태(392) 안에서 활성으로 남아있을 것이다. 이는 DRAM 디바이스가 페이지-모드 상태를 유지하도록 만들어 준다. 만약 다음 어드레스가 이전 메모리 엑세스와 동일한 메모리 페이지내에 있게 되고 동일한 방향에 있으면 어떤 로우 엑세스 사이클도 필요하지 않다. 다음 메모리 엑세스가 로우 엑세스를 요구한다면, 현재 페이지 모드 엑세스는 종결된 것이고 새로운 로우 엑세스가 시작된다. 외부 버스 활성화 외에 있는 것이 거의 없다면, 대부분의 메모리 사이클은, 새로운 로우 엑세스가 일어나기를 요구하는 트리클 리프레시 사이클의 발생에 의해 그들의 마지막 칼럼 엑세스가 완결된 후 곧 종결될 것이다.
멀티 프로세서 집적 회로 (100)은 메모리 사이클 시간을 확장하는 대기 상태삽입을 지원한다. 이는 READY 입력을 사용해 수행된다. READY 입력은 CLKOUT의 폴링 에지에 다시 샘플된다. 메모리 사이클은 계속 오도가도 못하는 상태를 계속하는데, 이는 전송 제어기(80)이 READY 하이를 샘플할 때까지 현재 상태를 반복한다는 것이다.
전송 제어기(80)은 다수의 대기 상태가 묶고 있는 메모리 엑세스를 종결시키는 데에 필요한 시간-아웃 또는 포기 메커니즘을 갖지 않는다. 합리적인 시간안에 종결될 수 없는 메모리 엑세스는 서비스 받기를 기다릴지도 모를 빠른 선택권을 가진 외부 메모리 엑세스 로킹 아웃하는 것을 방지하기 위해 폴트되거나 재시도 되어야만 한다. 대기 상태는 임의의 메모리 사이클 타입에 대해서 로우 시간 동안 부가되어야 한다. 대기 상태는 또한 칼럼 엑세스당 두번 또는 세번 사이클 모두에 대해서 칼럼 시간에 삽입되어야 한다. 대기 상태는 /RAS의 폴링 전 그리고 후에, 로우 시간 동안 두 위치에서 삽입되어야 할 것이다. 전송 제어기(80)은 먼저 r3 상태(372), 또는 rf3 상태(373) 또는 tr3 상태(374)의 시작에서 READY 신호를 샘플한다. 이는 로우 어드레스 그리고/또는 사이클 타입을 디코드하는 시간을 허용해주며, 만약 어드레스된 디바이스가 /RAS가 폴링 전에 선행하는 부가의 엑세스 시간을 필요로 하는지를 결정해 준다. r3 상태(372)는 전송 제어기 80이 READY 하이를 샘플하기까지 반복될 것이다. r3 상태(372)가 READY가 로우 샘플되었을 때, 반복되기는 하지만, /FAULT와 /RETRY 입력은 다시 샘플되지 않는다. 엑세스는 어떤 대기 상태라도 삽입되기 전에 첫째 r3 상태(372) 사이클동안 폴트되거나 재시도되어야만 한다. READY 입력은 다시 r6 상태(377) 동안 샘플된다. 이는 필요로 할지도 모르는디바이스에 관한 더하기 /RAS 엑세스 시간의 창출을 허용하는 /RAS의 폴링 후에 일어난다. 만약 READY가 로우 샘플되면, r6 상태(377)는 READY가 하이 샘플되기까지 반복되어야 한다. 전송 제어기(80)은 자동적으로 2 와3 사이클 동안의 r6상태(377)과 버스 크기를 변화시키는 1 사이클/칼럼 엑세스를 부가적으로 삽입한다. 전송 제어기(80)은 각각의 r6 상태(377) 동안에 정규 방식으로 READY를 샘플한다. 그래서 로우 샘플된 READY로부터 귀결되는 임의의 부가 r6 상태(377)은 전송 제어기(80)에 의해 이미 삽입된 것들에 부가될 것이다.
칼럼 시간 대기 상태는 칼럼 엑세스당 단일 사이클에 대해 지원되지 않으며, READY는 이런 사이클에 대한 r6 상태(377)을 넘어서서 샘플되지 않는다. 칼럼 엑세스당 2 그리고 3 사이클 동안 전송 제어기(80)은 C3 상태(386) 동안 READY 핀을 샘플한다. 이는 칼럼 어드레스 그리고 /CAS의 폴링 후에 일어나며 이를 요구하는 디바이스를 위한 확장된 CAS 엑세스 시간을 허용해 준다. READY가 하이 샘플되면, C3 상태(386)은 칼럼 엑세스를 완결 짓는다. 그렇지 않다면 C3 상태(386)은 반복되고 전송 제어기(80)은 하이 샘플되기 전까지 각각의 차순 CLKOUT 폴링 에지에서 READY를 샘플한다. 다중 프로세서 집적 회로(100)은 두 타입의 재시도 메커니즘을 지원한다: "로우 시간" 재시도 그리고 "칼럼 시간" 재시도. 발생하는 재시도 타입은 메모리 엑세스의 어떤 시점에서 다중 프로세서 집적 회로 100의 /RETRY 입력이 로우 활성화로 구동되는지에 의존한다.
로우 시간 재시도는 외부 로직이 다중 프로세서 집적 회로(100)에게 현재 엑세스가 완결되지 않았을지 모르고 재시도할 필요가 있다는 것을 알려주는 방법을제공한다. 로우 시간 재시도는 r3 상태 372의 시작에서 첫번째로 샘플되었을 때, /RETRY 로우 입력을 구동하는 것에 의해 발생된다. 만약 /RETRY가 로우 샘플되면, 전송 제어기(80)은 r3 상태 (372)의 끝에서 현재 엑세스를 종결지을 것이다. 재시도된 엑세스는 새로운 r1 상태(370)와 함께 즉시 재시작할 것이다. 이 경우, 재시도된 사이클은 하이 우선적 요구가 서비스되어 끝날 때까지 다시 시작되지 않을 것이다.
로우 시간 재시도가 패킷 전송 사이클 동안 일어나고 동일한 또는 하이한 우선적 패킷 전송 요구가 걸려있다면, PTMIN이 정의하는 시간 간격이 만료됐다고 가정할 때 재시도가 일어나는 패킷 전송은 보류될 것이다.
전송 제어기(80)은 우선적/라운드 로빈 체인 안에서 다시 터닝점에 도달할 때, 패킷 전송이 회복될 때까지 보류된 패킷 전송이 재시도하지 않을 것이다.
칼럼 시간 재시도는 통상적 의미에서의 진짜 재시도는 전혀 아니다. 대신에, "로우 엑세스 요구"로 사료될 수 있다. 칼럼 재시도가 일어날 경우, 전송 제어기(80)은 파이프라인 내에 걸려있는 모든 칼럼 엑세스를 완결짓고 나서 로우 엑세스로써 다음 엑세스를 시작한다. 그래서 다수의 칼럼 엑세스가 재시도가 요구된 후에 일어날 것이다. 이 칼럼 엑세스는 로우 엑세스가 재시작된 후에는 반복되지 않을 것이다. 칼럼 시간 재시도는 /RETRY 입력이 r3 상태(372) 후에 로우 샘플되는 어느 때든지 일어난다.
전송 제어기(80)은 각각의 CLKOUT 폴링 에지에서 r3 상태(372)를 따라오는 각각의 상태 끝에서 /RETRY를 샘플하며 각각의 샘플 시간동안 유효한 하이 또는 로우 레벨에 있어야만 한다. 만약 전송 제어기 (80)이 /RETRY를 로우로 샘플하면, 현재 페이지 모드는 현재 전송 제어기(80) 파이프라인 안에 있는 모든 칼럼 엑세스가 완결되자마자 종결될 것이다. 만약 재시도가 요구되었다면, /RETRY 입력 상의 입력간은 더 이상의 효과가 전혀 없다. 그러나, 전송 제어기는 각각의 남아있는 칼럼 엑세스 동안 /RETRY를 샘플하기를 지속하며 따라서 /RETRY는 각각의 샘플 시기동안 유효한 하이 또는 로우 레벨로 유지되어야만 한다. 정규 작동은 시스템이 /RETRY를 로우로 구동하기 위한 것이며 현재 로우 엑세스가 끝날 때까지 /RETRY를 로우 레벨로 유지한다.
외부 메모리 인터페이스(302) 파이프라인이 로드되는 방법 때문에 /RETRY를 판독 사이클 동안 r4상태(375)또는 r5상태(376) 안에 어써트해두는 것은 (asserting) 아무런 효과가 없다. /RETRY 입력은 계속 샘플되어야 하며 유효한 하이 또는 로우 레벨에 있어야 한다. 이런 이유로 인해, 만약 칼럼 시간 재시도가 바람직하다면, /RETRY는 로우 엑세스가 끝날 때까지 로우로 어써트되어야 한다. 프레임 제어기(90) VRAM 엑세스 사이클과 리프레시 사이클은, 본질상, 새로운 로우 엑세스가 그들의 단일 칼럼 엑세스를 항상 따라오기 때문에 칼럼 시간 재시도에 의해 영향받지 않는다.
시스템이 시스템 에러때문에 메모리 엑세스를 완결하는 것이 불가능 하다면 메모리 사이클을 폴팅함으로써 멀티 프로세서 집적 회로 (100)에게 정보를 전해준다. 이는 메모리 엑세스가 재시도되기 전에 마스터 프로세서(60)이 에러를 교정하도록 허용해 준다. 메모리 폴트는 로우 시간에서만 발생할 수 있으며 r3 상태(372)의 시작에서 /FAULT 입력 로우를 구동함으로써 시발된다. 전송 제어기 (80)은 메모리 사이클의 임의의 다른 부분 동안 /FAULT를 샘플한다. 폴팅 메커니큼은 폴트를 일으키는 엑세스 타입에 의존하여 어느 정도 변화한다. 이는 다음에 더 자세히 설명된다. 여러 타입의 사이클 요구에 대한 메모리 폴트는 다음과 같이 지원된다:
프레임 제어기(90) 사이클 - 프레임 제어기(90) 사이클 동안 폴팅은 지원되지 않으며 /FAULT 핀은 무시된다:
리프레시 사이클 - 폴팅은 리프레시 사이클 동안 지원되지 않으며 FAULT 핀은 무시된다:
디지털 영상/그래픽 프로세서 캐시와 직접 메모리 엑세스 요구 - 폴팅은 이 사이클 동안 지원된다. 요구 프로세서는 폴트가 제거될 때까지 그 요구가 완결되는 것을 보지 못한다. 다른 디지털 영상/그래픽 프로세서 (71, 72, 73 과 74)로부터의 요구는 계속 서비스될 것이다.
마스터 프로세서 명령 또는 데이타 캐시 요구 - 지원되는 폴팅은 이 사이클 동안 지원된다. 폴트된 캐시 요구는 즉시 취소되며 마스터 프로세서(60)은 인터럽트된다. 다른 캐시는 서비스되는 걸려있는 요구를 아직도 가지게 될 것이다:
마스터 프로세서(60) 직접 메모리 엑세스 요구 - 폴팅은 이 사이클 동안 지원된다. 직접 외부 엑세스 요구는 즉시 취소되며 마스터 프로세서(60)은 인터럽트된다: 그리고
패킷 전송 - 폴팅은 패킷 전송하는 동안 지원된다. 패킷 전송은 중지되며 그 상태는 프로세서의 파라메타 메모리에 아직도 저장될 것이다. 다른 프로세서로부터오는 패킷 전송 요구는 아직도 서비스될 것이다. 전송 제어기(80)의 내부 패킷 전송 상태는 저장된 파라메타 안에 포함된다. 만약 패킷 전송이 외부 대 외부 메모리에서 온 것이라면, 외부 대 외부 전송 버퍼의 상태는 또한 저장된다. 버퍼 그 자체는 변경되지 않는다. 저장된 패킷 전송 선택 분야내의 패킷 전송 상태 비트는 폴트가 소스 또는 종착 전송에서 일어났는지를 나타내주기 위해 세트된다.
파라메타가 저장되기만 하면, 전송 제어기(80)은 마스터 프로세서(60)의 FLTSTS 레지스터 내에 적합한 비트를 세트하는데, 이는 프로세서의 패킷 전송이 폴트되었는지 프로세서에게 표시해주는 구실을 한다. FLTSTS 레지스터의 인코딩은 표13에 도시되어 있다. FLTSTS 레지스터 내에 프로세서 비트를 세트하는 것은 또한 마스터 프로세서(60)에 인터럽트하는 패킷 전송 폴트를 발생시킨다. 마스터 프로세서(60)은 어느 프로세서가 폴트된 패킷 전송을 요구했는지 찾아내기 위해 FLTSTS 레지스터를 읽을 수 있다. 프로세서가 식별되기만 하면, 마스티 프로세서(60)은 폴트를 일으키는 메모리 엑세스를 결정해주기 위해 중지된 패킷 전송 파라메타를 검색할 수 있다. 디지털 영상/그래픽 프로세서 (71, 72, 73 또는 74)는 폴트가 패킷 전송 동안에 일어났는지를 알지 못할 것이다. 다만 패킷 전송이 아직 완결되지 않았다는 것을 알 뿐이다. 폴트를 교정하고 요구하는 디지털 영상/그래픽 프로세서 (71, 72, 73 또는 74)가 패킷 전송 요구를 취소하도록 요청하는 것은 마스터 프로세서(60)의 책임이다.
만약 마스터 프로세서(60)이 폴트를 교정할 수 있다면, FLTSTS 레지스터 내의 비트를 지울 수 있으며, 패킷 전송 요구는 자동적으로 재제출될 것이다. 폴트된패킷 전송이 라운드 로빈 우선 계획도 안에서 도로 받기만 하면 내부 상태는 파라메타 메모리 내의 저장된 파라메타로부터 재저장되며 전송 제어기(80)은 폴트된 엑세스에서 패킷 전송을 지속할 것이다.
만약 폴트가 디지털 영상/그래픽 프로세서 요구된 캐시 서비스 또는 직접 외부 엑세스 요구 동안에 일어난다면, 폴트가 일어나는 어드레스는 요구하는 프로세서의 파라메타 메모리의 캐시 폴트 어드레스 위치안에 저장된다. 마스터 프로세서(60)의 FLTSTS 레지스터 내의 적합한 비트는 인터럽트가 마스터 프로세서(60)에게 보내지도록 만들기 위해 세트된다.
마스터 프로세서(60)은 그후 폴트된 어드레스를 결정해 주기 위해 파라메타 메모리를 검색한다. 만약 마스터 프로세서(60)이 폴트를 교정할 수 있다면, 그후 마스터 프로세서는 FLTSTS 레지스터 내의 비트를 지울 수 있으며 요구는 재스케줄되어야 한다. 만약 폴트가 교정될 수 없고 마스터 프로세서(60)이 캐시-미스 또는 직접 외부 엑세스 요구를 포기하도록 하기 위해 요구하는 디지털 영상/그래픽 프로세서를 필요로 한다면, 디지탈 영상/그래픽 프로세서에 리셋 요구를 보내야만 한다. 이렇게 하면 과업이 포기되도록 만들어 줄 것이다.
디지탈 영상/그래픽 프로세서 (71, 72, 73 또는 74)는 캐시 또는 직접 외부 엑세스 요구 동안 폴트가 일어났는지는 알지 못할 것이다. 그들은 단지 그 요구들이 아직 완결되지 않았다는 것만을 알 뿐이다. 폴트를 교정하고 요구하는 디지탈 영상/그래픽 프로세서를 리셋하는 것은 마스터 프로세서(60)의 책임이다.
만약 마스터 프로세서(60) 캐시 영역 또는 직접 외부 엑세스 사이클 폴트를요구했다면 그 요구는 즉시 취소되고 마스터 프로세서(60)은 메모리 폴트 인터럽트를 받는다. 이 메모리 폴트 인터럽트는 폴트가 데이타 캐시 폴트인지 아니면 명령 캐시 폴트인지를 표지해준다. 만약 데이타 캐시 폴트가 일어난다면, 어드레스는 저장되고 데이타도 저장된다.
칩상의 어드레스로 어떤 엑세스를 시도하는 것은 폴트가 /FAULT 입력에 독립하도록 만들어준다. 이는 비규칙 칩상 엑세스가 시도될 때 일어난다. 시도되는 사이클에 대한 정규 폴트 메카니즘이 적용된다. 칩상 폴트는 다음과 같다:
Hex "02000000" 의 임의의 어드레스로/부터 디지털 영상/그래픽 프로세서 패킷 전송, 이 전송은 데이타 메모리나 또는 디지탈 영상/그래픽 프로세서 파라메타 메모리가 아니다;
Hex "02000000" 상의 임의의 어드레스로/부터의 디지탈 영상/그래픽 프로세서 캐시 서비스 또는 마스터 프로세서(60) 캐시 서비스 또는 직접 외부 엑세스, 이들은 데이타 메모리나 또는 디지탈 영상/그래픽 프로세서 파라메타 메모리가 아니다; 그리고
Hex "02000000" 의 임의의 어드레스로/부터 마스터 프로세서(60) 패킷 전송, 이들은 데이타 메모리나 또는 디지탈 영상/그래픽 프로세서 파라메타 메모리가 아니다.
/UTIME 입력은 멀티 프로세서 직접 회로(100)이 제공하는 것과 다른 메모리 타이밍을 발생시킬 필요가 있는 사용자를 지원하기 위해 제공된다. 만약 /UTIME이 로우 시간에 로우 샘플되면, /RAS와 /CAS[7:0]의 출력 타이밍은 나머지 현재 페이지에 대해 변경된다. /RAS 신호는 칼럼 엑세스가 시작되었음을 표시하기 위해 변경된다. 따라서 사용자 시간에 맞춘 /CAS 신호는 /RAS 폴링에 의해 유발된다. /RAS 는 실제 칼럼 엑세스가 시작되어 전송 제어기(80)이 파이프라인 내의 임의의 버블이 파악될 때에 머신 상태에 대해서만 로우 활성화로 어써트될 수 있을 것이다. 칼럼 어드레스 스트로브 /CAS[7:0]은 칼럼어드레스와 동일한 시간에 출력이 된다. 이는 어느 바이트가 엑세스되고 있는지를 표시하는 데에 /CAS가 쓰이도록 만들어 주며, 외부 /CAS 발생을 더 쉽게 해준다. /RAS의 타이밍이 변경됐기 때문에, 외부 로직은 요구가 있을 때 그 자신의 /RAS 타이밍을 발생시켜야만 한다. 외부로 발생되는 /RAS는 /RL의 폴링 에지가 유발한다. 사이클 시작점에서의 상태 코드 출력이 /TRG, /WE, 그외의 메모리 타이밍을 발생시키기 위해 필요한 모든 정보를 제공한다는 것을 주의하라. 이 출력의 타이밍은 사용자 시간에 맞춘 엑세스 동안 변경되지 않는다.
전송 제어기(80)의 내부 메모리 인터페이스(301)은 크로스바(50)을 경유하여 온-칩 메모리로의 엑세스를 제공한다. 64 비트 내부 데이타 버스는 사이클당 0 - 8 바이트를 전송할 수 있다. 외부 메모리 인터페이스(302)는 모든 오프-칩 메모리 및 주변 장치로의 엑세스를 제공한다. 외부 메모리 인터페이스(302)는 다양한 메모리 및 주변 장치 타입에 인터페이스하기 위하여 필요한 사이클 및 제어 신호를 발생시킨다. 64 비트 외부 데이타 버스는 사이클당 0 - 8 바이트를 전송하고 8, 16, 32, 및 64 비트의 데이타 폭을 가지는 영상 시스템 버스에 접속된 장치를 위하여 동적 버스 크기 지원을 제공할 수 있다.
외부 메모리 인터페이스(302)는 전송 제어기(80)이 외부 장치와 버스를 공유할 수 있도록 허용하는 단순한 핸드 세이크 메카니즘을 포함한다. 핸드 세이크 메카니즘은 다음과 같은 4 가지의 동기적 신호를 사용한다: 호스트 요구 입력 /HREQ; 호스트 인지 출력 /HACK; 및 내부 요구 출력들 REQ[1:0].
외부 장치가 화상 시스템 버스를 제어하기 원할 때 호스트 요구 입력 /HREQ는 멀티 프로세서 집적 회로(100)에 신호를 공급한다. 외부 장치가 버스를 점유하고자 할 때에 호스트 요구 입력 /HREQ를 로우(low)로 한다. 이는 트랜스터 제어기(80)이 수신할 수 있는 최우선 순위의 요구이며, 전송 제어기(80)은 가능한 조속히 버스의 구동을 중단한다. 트랜스터 제어기(80)의 현재 동작이 중단되고 전송 제어기의 파이프라인이 비워지면 트랜스터 제어기의 버스 점유가 종료된다. 외부 장치는 버스를 원하는 한 /HREQ를 액티브 로우로 계속 유지하여야 한다. /HREQ가 인액티브 하이인 때에는, 트랜스터 제어기(80)은 버스를 점유하고 구동한다. /HREQ 입력은 멀티 프로세서 집적 회로(100) 내부 클록에 내부적으로 동기화된다.
트랜스터 제어기(80)이 화상 시스템 버스의 제어를 제공할 준비가 되었을 때 호스트 인지 출력 /HACK 신호가 공급된다. 트랜스터 제어기(80)은 액티브 /HREQ에 이어서 /HACK를 로우로 구동하여, 트랜스터 제어기가 그 신호를 고 임피던스로 구동하였고 버스를 포기함을 표시한다. /HACK가 액티브 로우인 동안, CLKOUT이 고 임피던스에 놓인 경우를 제외하고 모든 외부 메모리 인터페이스(302) 버스 출력된다. 내부 요구 출력 REQ[1:0], /HACK 및 프레임 제어기(90) 출력은 계속하여 구동된다. 그러면 외부 장치는 필요에 따라 화상 시스템 버스를 구동할 수 있다. /HREQ가 인액티브임이 검출됨에 이어서 트램스터 제어기는 /HACK를 비동기적으로 인액티브 하이로 구동하고, 버스의 구동을 재개한다.
내부 요구 출력 REQ[1:0]은 전송 제어기(80)에 의하여 수신되는 최우선 순위의 내부 요구의 2비트 인코딩을 형성한다. 표10은 요구 코드 및 그와 연관된 사이클들을 보여준다.
표 10
외부 조직은 버스를 전송 제어기(80)으로 넘겨줄 때를 결정하기 위하여 내부 요구 출력 REQ[1:0]을 모니터할 수 있다. 전송 제어기(80)에 의하여 호스트 요구에 최우선 순위가 주어지기 때문에 시스템 설계자는 어느 REQ[1:0] 값이 호스트가 버스 점유를 전송 제어기(80)에 넘겨주도록 하는지를 결정함으로써 외부 장치가 동작하는 레벨을 결정할 수 있다.
전송 제어기(80)은 외부 메모리 시스템에 의하여 요구되는 대로 자동적으로 DRAM 리프레시 사이클을 발생시키기 위하여 프로그램 가능 리프레시 제어기를 포함한다. 이 리프레시를 위한 파라메터들은 리프레시 레지스터(313) 내에 저장된다. 캐시 제어 조직은 마스터 프로세서(60) 및 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에 의하여 요구되는 대로 캐시 충전 및 라이트-백(write-backs)을 실행하기 위하여 필요한 어드레스들을 발생시킨다. 프레임 제어기(90)의 요구는 VRAM 제어 로직에 의하여 처리된다.
전송 제어기(80)은 패킷 전송을 처리하기 위하여 2개의 독립된 제어기를 가진다. 소스 레지스터를 포함하는 소스 머신(320)과 소스 제어기(322)는 소스 메모리로부터 데이타를 불러오기 위하여 필요한 어드레스들을 발생시킨다. 패킷 전송 요구가 전송 제어기(80)에 전달될 때, 이는 소스 데이타가 엑세스될 방법을 특정하는 다수의 파라메타를 포함한다. 이 파라메타들은 소스 레지스터(322)에 로드되고, 소스 어드레스를 발생시키기 위하여 소스 제어 로직(323)에 의하여 사용된다. 유사한 세트의 파라메타들이 데스티네이션 레지스터(341) 내에 로드되고, 데스티네이션 제어로직 (342)가 데스티네이션 메모리 영역에 패킷 데이타를 기입하기 위해 필요한 어드레스를 발생시키기 위해 사용된다. 데스티네이션 레지스터(341) 및 데스티네이션 제어 로직(342)의 조합은 데스티네이션 머신(340)을 형성한다. 소스 머신(320) 및 데스티네이션 머신(340)은 각각 온-칩 메모리(10, 20) 및 오프-칩 메모리 양자에 어드레스할 수 있다.
제11도는 소스 머신(320)의 구조를 도시한다. 소스 머신(220) 및 데스티네이션 머신(340)의 내부 구성은 동일하다. 다만 전송 제어기(80)의 남은 부분으로서의 몇가지 접속만이 상이하다.
소스 머신(320)은 다음의 레지스터들을 포함한다. CACHEADR 레지스터(401)은 전송의 방향에 따라 내부 또는 외부 어드레스를 포함한다. 이는 캐시 서브-블록의 어드레스와 함께 전송 제어기(80)의 내부 S 포트로부터 로드된다. 온-칩 어드레스의 상위 비트들을 발생시키기 위하여 멀티 플렉서가 사용될 수 있다.
ABPITCH 레지스터(402)는 다음 라인의 시작 어드레스를 발생시키기 위하여 시작 어드레스에 가산될(또는 감산될) 피치를 포함한다.
GTPIPE 레지스터(403)은 실제로는 세 부분으로 나뉘어진다. 제1 부분은 ASTART를 위하여 배정된 32 비트 어드레스이고, 제2 부분은 BCOUNT를 위하여 배정된 16 비트 라인-카운트이며, 제3 부분은 ACOUNT를 위하여 배정된 16 비트 바이트-카운트이다. 이는 불러낸 가이드 표가 연관된 레지스터 내에 즉시 저장될 수 없을 때 가이드 표가 동작하는 동안 임시적 레지스터로서 기능한다.
ASTART 레지스터(404)는 현재 라인의 시작 어드레스의 기록을 저장한다. ASTART 레지스터(404)는 또한 가이드된 전송을 실행할 때에 가이드 테이블 어드레스/오프 셋 엔트리를 위하여 배가된다.
BSTART 레지스터(405)는 현재 패치의 시작 어드레스의 기록을 저장한다. BSTART 레지스터(405)는 대신에 오프 셋-가이드된 전송을 위한 베이스 어드레스 및델타-가이드된 전송을 위한 최종 패치 시작 어드레스를 포함한다.
CRNTADR 레지스터(406)은 패킷 서비스의 현재 어드레스를 저장한다. 이는 다음의 엑세스가 실행될 어드레스이다. 이 값에 다음 어드레스를 발생시키기 위하여 전송되는 바이트의 수가 가산(또는 감산)된다. 만약 라인 또는 패치가 완성되면, CRNTADR 레지스터(406)이 다음 라인 또는 패치의 시작 어드레스로 대신 로드된다.
BCPITCH 레지스퍼(407)은 다음 패치의 시작 어드레스를 발생시키기 위하여 현재 패치의 시작 어드레스에 가산(또는 감산)될 피치를 저장한다. 가이드된 전송을 실행할 때에, BCPITCH 레지스터(407)은 가이드 표 포인터로 사용된다.
ACOUNT 레지스터(408)은 한 라인 내의 바이트의 수를 저장한다. 이는 일정한 수이거나, 가변 패치 가이드된 전송을 위하여 가이드 표 엔트리로부터 로드된다.
ACURRENT 레지스터(409)는 라인 내에 현재 남아있는 바이트의 수를 저장한다.
BCOUNT 레지스터(410)은 하나의 패치 내의 라인의 수보다 적은 라인 수를 저장한다. 이는 일정한 수이거나 가변 패치 가이드된 전송을 위하여 가이드 표 엔트리로부터 로드된다.
BCURRENT 레지스터(411)은 패치 내에 남아있는 라인의 수보다 적은 현재의 라인 수를 저장한다.
CCURRENT 레지스터(412)는 패킷 내에 남아있는 패치의 수보다 적은 현재의 패치 수를 저장한다. 가이드된 전송을 실행할 때에 이는 대신하여 가이드 표에 남아있는 엔트리의 수를 나타낸다.
CBYTES 레지스터(413)은 직접 메모리 엑세스 또는 캐시 서비스에 의하여 전송될 남아있는 현재 바이트 수를 저장한다.
BUFPTR 레지스터(414)는 소스 머신(320)과 데스티네이션 머신(340)에 의하여 공유되는 레지스터이다. BUFPTR 레지스터(414)는 외부 대 외부 패킷 전송 중에 버퍼로 사용되는 파라메타 메모리의 부분을 지정한다. 온-칩 어드레스의 상위 비트를 발생시키기 위하여 멀티 플렉서가 사용될 수 있다.
FCOUNT 레지스터(431; 제12도에 도시됨)는 현재 파이프라인 내에 있는 모든 명령이 완료된 후에 패킷 전송 FIFO 버퍼(311) 내에 얼마나 많은 바이트가 남는지를 나타내는 5 비트 값(16 - 0의 값)을 저장한다.
BUFCOUNT 레지스터(441; 제13도에 도시됨)는 외부 대 외부 버퍼에 얼마나 많은 여분의 바이트가 남는지를 나타내는 8 비트 값(128 - 0의 값)을 저장한다.
소스 머신(320)의 핵심은 계산 하드웨어와 머신이 전송하고자 하는 바이트의 수를 결정하는 방법이다. 이는 바이트 수 계산 회로(415)에서 이루어진다. 이는 디멘션 내에 남아있는 바이트 수, 어드레스 정렬, 버스 사이즈 및 디멘션이 순방향 또는 역방향으로 어드레스되는지 여부에 의하여 결정된다. 이 계산에서 엔디안(endian)은 중요하지 않다. 당분간 디멘션 내에 남아있는 바이트의 수가 8 또는 그 이상이라 가정하고, 표11은 상이한 정렬, 버스 크기 및 (순방향 또는 역방향의)어드레스 방향에 대하여 머신이 전송하는 바이트 수를 나타낸다.
(표 11)
만약 버스가 64 비트 폭이고 어드레싱이 순방향이면, 상기 값은 3 최하위 어드레스 비트의 2의 보스를 취하여 연역된다. 네번째 어드레스 비트는 캐리 아웃이다. 만약 디멘션이 역방향으로 어드레스되면 바이트 수는 3 최하위 어드레스 비트의 값에 단순히 1을 더하여 계산된다. 만약 버스가 32 비트 폭이고 어드레싱이 순방향이면, 이상의 값은 2 최하위 어드레스 비트의 2의 보스를 취하여 연역된다. 캐리 아웃은 제3 비트가 된다. 만약 디멘션이 역방향으로 어드레스되면, 바이트 수는2 최하위 어드레스 비트의 값에 단순히 1을 더하여 계산된다. 이러한 경우들에서 통상 계산에 포함되는 다음의 최상위 비트의 효과는 무효화되어야 한다. 버스가 16 비트 폭이고 어드레싱이 순방향이면, 상기값은 단지 최하위 어드레스 비트의 2의 보수를 취하여 연역된다. 캐리 아웃은 제3 비트가 된다. 만약 디멘션이 역방향으로 어드레스되면, 바이트의 수는 최하위 비트의 값에 단순히 1을 더하여 계산된다. 이러한 경우들에서 통상 계산에 포함되는 다음의 두개의 최상위 비트들의 영향이 무효화되어야 한다.
이상에서는 머신이 현재 버스 크기에 정렬하기 위하여 전송하는 바이트 수를 설명하였다. 이 동작 후에 발생하는 일련의 전송은 자동적으로 현재의 버스 사이즈에 의하여 허용되는 최대 수의 바이트가 된다. 만약 버스 사이즈가 변화하면, 이도 역시 자동적으로 변화한다.
어드레스 레지스터는 전송될 바이트 수만큼 증분(또는 감소)되어, 다음 데이타의 시작을 지정한다. 현재 디멘션 계수도 동일한 수만큼 감소되어 남아 있는 바이트의 새로운 수를 나타낸다. 이 과정은 머신이 전송하고자 하는 바이트의 수가 디멘션에 남아있는 바이트의 수보다 커질 때까지 계속된다. 실제로 전송되는 바이트 수는 남아있는 바이트 수보다 낮은 수이어야 하고 그렇지않을 때 전송이 종료된다. 이 조건은 남아있는 바이트의 수를 전송하고자 하는 바이트의 수에서 뺌으로써 검출되는데, 만약 이 뺄셈에서 자리내림이 발생하지 않으면 디멘션의 최종 전송에 도달한 것이고 바이트 계수는 전송할 바이트 수를 위하여 사용된다. 자릿수 내림 조건에 기초하여 이들 두 값 중에 선택하기 위하여 멀티 플렉서가 사용된다.
만약 디멘션 내에서 전송이 최후의 것이고 패킷 요구가 실행되면 정상적인 제1 디멘션 계산 대신에 다음 디멘션 파라메타들이 계산된다. BCURRENT 레지스터(411) 내의 값이 0 인지의 여부에 따라, BCURRENT 레지스터(411) 또는 CCURRENT 레지스터(412)가 감소된다. 양 경우에 낮은 디멘션의 xCUTTENT 계수가 그 xCOUNT 레지스터로부터 로드되고 다음의 제1 디멘션이 시작된다. 다음 디멘션의 어드레스 역시, BCURRENT 레지스터(411)의 값이 0 인지의 여부에 따라, ABPITCH 레지스터(402)에 저장된 값을 ASTART 레지스터(404)에 또는 BCPITCH 레지스터(407)에 저장된 값을 BSTART 레지스터(405)에 더하여(또는 감하여) 계산된다. 계산된 값은 CRNTADR 레지스터(406) 및 ASTART 레지스터(404)에 기입되고, 만약 BCURRENT 레지스터(411) 내의 값이 0이면, BSTART 레지스터(405)에도 역시 기입된다.
제1 디멘션의 최후의 전송이 실행되고 BCURRENT 레지스터(411) 및 CCURRENT 레지스터(412)의 값이 모드 0일 때, 소스 머신(320)은 패킷 서비스를 종료한 것이 된다. 소스 머신(320) 및 데스티네이션 머신(340) 모두가 이 상태에 도달했을 때 모든 패킷 서비스가 완료된다. 패킷 전송 옵션 피일드의 소스 및 데스티네이션 갱신 모드에 따라, 추가의 디멘션 계산이 실행될 수 있고 CRNTADR 레지스터(406) 내에 저장된 데이타가 원래의 패킷 요구 위치에 저장된다. 이는 전송이 중단된 지점에서 이후에 패킷 전송을 재개하는 것을 가능하게 한다.
이러한 어드레스 계산은 두개의 32 비트 합산기(420, 423)에서 이루어진다. 멀티 플렉서(421, 422)는 합산기(420)로의 입력을 선택한다. 유사한 방법으로, 멀티 플렉서(424, 425)는 합산기(423)로의 입력을 선택한다. 합산기(420)은 CACHEADR레지스터(401), ABPITCH 레지스터(402), ASTART 레지스터(404), BSTART 레지스터(405), CRNTADR 레지스터(406) 및 BCPITCH 레지스터(407)에 접속된다. 합산기(423)은 ACOUNT 레지스터(408), ACURRENT 레지스터(409), BCOUNT 레지스터(410), BCURRENT 레지스터(411), CCURRENT 레지스터(412) 및 CBYTES 레지스터(413)에 접속된다.
이상의 설명은 주로 패킷 전송에 관한 것이나, 유사한 절차가 캐시 서비스 및 버퍼 조작에도 응용될 수 있다. 캐시 서비스의 경우에 어드레스가 항상 정렬된 경계에서 시작하므로 바이트 계수기가 없고, 어드레스가 캐시 서브 블록의 끝에 이르렀을 때 서비스가 종료된다. 이는 소스 머신(320)이 디지탈 영상/그래픽 프로세서 명령 캐시 또는 마스터 프로세서(60) 데이타 또는 명령 캐시를 서비스 하는지의 여부에 따라 상이해 진다.
이상의 설명은 계산된 수의 바이트 전송이 항상 전송될 수 있음을 전제로 한다. 그러나 그러한 수의 바이트를 전송할 머신의 패킷 전송 FIFO 버퍼(311)이 너무 채워지거나 비어있을 경우에는 그러하지 아니하다. 따라서 이 경우에는 파이프라인에 동작을 로드하기 이전에 추가의 계산이 요구된다.
소스 머신(320)이 패킷 전송 FIFO 버퍼(311)의 빈 공간보다 많은 바이트를 전송하고자 할 때에는 대기하여야 한다. 만약 데스티네이션 머신(340)이 패킷 전송 FIFO 버퍼(311)의 빈 공간보다 많은 데이타를 전송하고자 할 때에는 대기하여야 한다. 소스 머신(320)이 데스티네이션 머신(340)의 패킷 전송 FIFO 버퍼(311)이 판독하기에 충분한 바이트를 로드하려고 할 때, 양 전송은 계속될 수 있다.
이러한 계산은 제12도에 도시된 로직에 의하여 실행된다. FCOUNT 레지스터(431)은 이미 파이프라인 내에 있는 동작이 일단 완료된 후에 패킷 전송 FIFO 버퍼(311) 내에 있게될 데이타의 바이트 수를 기록한다. 합산기(434)는 이 값을 소스 머신(320)이 패킷 전송 FIFO 버퍼(311)로 전송하고자 하는 바이트 수에 합한다. 그 합이 16을 초과하면, 소스 머신(320)은 동작을 계속할 수 없고 데스티네이션 머신(340)이 어떤 데이타를 비울 때까지 대기하여야 한다. 합산기(434)는 소스 머신(320)에 공급되어 이를 정지시키는 16보다 큰 출력을 발생시킨다. 현재의 값이거나 또는 합산기(343)의 16보다 큰 출력에 의하여 선택된 합산의 결과인, 패킷 전송 FIFO 버퍼(311) 내의 새로운 바이트 수는 멀티 플렉서(435)를 경유하여 감산기(436)으로 전달된다. 감산기(436)은 패킷 전송 FIFO 버퍼(311) 내의 새로운 바이트 수를 데스티네이션 머신(340)이 전송하고자 하는 바이트의 수에서 뺀다. 만약 감산기(436)이 자릿수 내림을 발생시키지 않으면, 데스티네이션 머신(340)은 계속 동작할 수 있다. 만약 감산기(426)이 자릿수 내림을 발생시키면, 그 신호가 데스티네이션 머신(340)을 정지시킨다. 자릿수 내림 신호는 멀티 플렉서(437)이 차이 또는 감산 이전의 값을 선택하여 FCOUNT 레지스터(431)에 저장하도록 제어한다.
캐시 서비스를 위하여 캐시 버퍼(312)를 사용할 경우에도 유사한 계산이 요구된다. 멀티 플렉서(433)으로의 모드 신호는 FCOUNT 레지스터(431)이 계산의 소스로서 작동할지 또는 캐시 버퍼(312) 내에 저장된 바이트 수를 저장하는 유사한 CHCOUNT 레지스터(432)가 이 기능을 할지를 선택한다.
외부 대 외부 전송을 실행할 때에, 전송 프로세서(80)은 요구 프로세서의 파라메타 메모리의 일부를 버퍼로서 사용한다. 이 외부 대 외부 버퍼의 상태 및 그 내용은 관리될 필요가 있다. 버퍼 포인터 BUFPTR 레지스터(414)는 소스 머신(240) 및 데스티네이션 머신(340)에 의하여 공유되는데, 이는 이 버퍼에 동시에 하나의 머신만이 엑세스할 수 있기 때문이다. BUFPTR 레지스터(414)는 소스 머신(320) 및 데스티네이션 머신(340)의 정상적 로직을 사용하여 버퍼로 전송되거나 그로부터 전송되어 오는 바이트 수만큼 증가된다. BUFPTR 레지스터(414)는 단지 8 비트의 길이만 가지면 된다. 어드레스의 최상위 비트는 각각의 프로세서에 대하여 고정되며 이는 요구 프로세서에 기초한 불변(constant) 멀티 플렉서로부터 공급된다. 전송되는 바이트의 수는 정상적 정렬/스페이스-레프트 로직을 사용하여 계산된다. 외부 대 외부 버퍼를 비우는 소스 머신(320)은 그 바이트의 남은 값을 저장하기 위하여 BUFCOUNT 레지스터(441)을 사용한다. 외부 대 외부 버퍼를 채우는 데스티네이션 머신(340)은 그 바이트의 남은 값을 저장하기 위하여 FCOUNT 레지스터(431)을 사용한다.
제13도는 버퍼-계수 계산법을 도시한다. BUFCOUNT 레지스터(441)은 외부 대 외부 버퍼 내의 여분의 바이트 수 또는 전송의 방향에 따라 비워질 남아 있는 데이타 바이트의 수의 8 비트 계수이다. 소스 머신(320)은 외부 대 외부 버퍼를 채울 때 소스 머신이 패킷 전송 FIFO 버퍼(311)에 로드하는 바이트 수 만큼 BUFCOUNT 레지스터(441)을 감소시킨다. BUFCOUNT 레지스터(441)이 8보다 작은 값에 달하면, 소스 머신(320)이 정지하고, 데스티네이션 머신(340)은 패킷 전송 FIFO 버퍼(311)이 외부 대 외부 버퍼로 비워질 때까지 계속 동작한다. 따라서 소스 머신(320)은 외부대 외부 버퍼에 맞는 데이타보다 많은 데이타를 불러내올 수 없다. 외부 대 외부 버퍼는 최소한 120 바이트로 채워진다.
외부 대 외부 버퍼의 채움과 비움 간에, (128)로부터 BUFCOUNT 레지스터(441)을 빼야하고 그 결과 외부 대 외부 버퍼 내에 남아있는 데이타 바이트의 수가 얻어진다. 외부 대 외부 버퍼를 비울 때 소스 머신(320)은 BUFCOUNT 레지스터(441)을 0에 달할 때까지 감소시킨다. 데스티네이션 머신(340)은 계속하여 패킷 전송 FIFO 버퍼(311)를 비우고, 다 비워지면 방향이 다시 역전된다. BUFCOUNT 레지스터(441)은 외부 대 외부 버퍼 충전이 개시되기 전에 128로 리셋된다. 멀티 플렉서(442, 443) 및 전(full) 합산기(444)는 이 필요한 계산을 수행한다.
BUFCOUNT 레지스터(441) 및 BUFPTR 레지스터(414)에는 패킷 전송이 보류되었을 때 다른 패킷 파라메타가 저장된다. 외부 대 외부 버퍼를 비우거나 채우는 현재의 방향을 나타내는 하나의 비트가 또한 저장되어 복구시에 동작이 정확하게 재개될 수 있도록 한다.
제14a도 및 제14b도는 패킷 전송 FIFO 버퍼(311) 및 엔디안이 작고 클 경우 각각을 위한 포인터 FDPTR 및 FSPTR의 관계를 도시한다. 패킷 요구가 소스 및 데스티네이션의 형태가 거의 임의적이며 독립적인 것을 허용하기 때문에, 데스티네이션에 정렬시키는 것이 항상 가능하지는 않다. 제8도에서, 소스 머신(320)은 매 사이클당 0 내지 8 바이트를 저장하고 데스티네이션 머신(340)은 매 사이클당 0 내지 8 바이트를 불러낼 수 있으며, 소스 및 데스티네이션의 정렬은 서로에 대하여 끊임없이 변화한다. 패킷 전송 FIFO 버퍼(311)이 16 바이트의 FIFO 바이트 폭을 가지므로, 소스로부터 0 - 8 바이트로 로드됨과 동시에 데스티네이션으로 0 - 8 바이트로 비워질 수 있다. 소스 멀티 플렉서 및 정렬 로직(330)은 소스로부터 적절한 바이트를 추출하고, 이들을 인접한 FIFO 데이타를 유지하는 패킷 전송 FIFO 버퍼(311)의 위치에 저장시킨다. 데스티네이션 멀티 플렉서 및 정렬 로직(350)은 패킷 전송 FIFO 버퍼(311)로부터 "가장 오래된" 바이트를 추출하고 이들을 데스티네이션에 기입하기 전에 8 바이트 워드 내의 정확한 위치에 정렬시킨다. 소스 멀티 플렉서, 정렬 로직(330), 데스티네이션 멀티 플렉서 및 정렬 로직(350)은, 가능한 한 오랫동안 정렬 상태로 남아있을 수 있게되면, 각각 이들의 전송를, 64 비트 이중 워드 경계로 정렬시킨다. 그리하여 소스 멀티 플렉서, 정렬 로직(330), 데스티네이션 멀티 플렉서 및 정렬 로직(350)은 요동하는 정렬을 지원한다.
패킷 전송 FIFO 버퍼(311)은 16 바이트를 순환형 버퍼로 취급한다. 데이타의 개시 위치는 임의의 바이트 위치일 수 있다. 데스티네이션 멀티 플렉서와 정렬 로직(350)이 데이타를 추출하는 위치는 4 비트 FDPTR 레지스터에 위하여 표시된다. FDPTR 레지스터는 포인터를 데이타의 새로운 시작 위치로 이동시켜 데이타가 추출되는 사이클과 동일한 사이클 내에서 변형된다. 데스티네이션 멀티 플렉서 및 정렬 로직(350)은 추출된 바이트를 취하여 이들을 데스티네이션 이중 워드 내의 정확한 위치로 정렬시킨다. 패킷 전송 FIFO 버퍼(311)로부터의 추출 및 정렬은 데스티네이션 멀티 플렉서 내의 8개의 병렬 16 비트 배럴 시프터로 구성되는 16 위치 바이트 회전기 및 정렬 로직(350)을 사용하여 하나의 단계에서 적절히 이루어진다. 그리고나서 바이트를 스와프(swap)하기 위하여 건드-데이타(gunned-data) 조작이 실행되고 다른 데이타 회전이 실행될 수 있다. 데스티네이션 멀티 플렉서 및 정렬 로직(350)은 또한 적절한 바이트만이 데스티네이션에 기입되도록 하기 위하여 유사한 방식으로 바이트 스트로브를 조작할 수 있다.
소스 멀티 플렉서 및 정렬 로직(330)으로부터 패킷 전송 FIFO 버퍼(311)를 로드시키는 것은 거의 동일한 작업이다. 소스 멀티 플렉서 및 정렬 로직(330)은 그 데이타를 4 비트 FSPTR 레지스터에 의하여 표시된 첫번째 빈 위치에 기입하고, 새로운 첫번째 빈 위치로 FSPTR 레지스터를 갱신시킨다. 패킷 전송 FIFO 버퍼(311)이 다 찼을 때, 일단 데스티네이션 멀티 플렉서 및 정렬 로직(350)이 어떤 데이타를 추출하였으면 FSPTR 레지스터는 실제로 비게되는 첫번째 위치를 지적한다.
데스티네이션 머신(340)은 클록 사이클의 슬레이브 위상 상에서 그 데이타를 추출한다. 소스 머신(320)은 그 데이타를 후속하는 클락 사이클의 마스터 위상에 로드한다.
큰 엔디안 작동 모드와 작은 엔디만 작동 모드를 지원하기 위하여 데이타 회전이 양 방향으로 이루어질 필요가 있다. 데이타의 연속성이 항상 정확하도록 하기 위하여, 외부 패킷 전송 FIFO 버퍼(311)로부터 보았을 때, 데이타의 회전 방향이 작은 엔디안의 경우 시계 방향이고 큰 엔디안의 경우 시계 반대 방향이다. 소스 멀티 플렉서 및 정렬 로직(330), 데스티네이션 멀티 플렉서 및 정렬 로직(350), 포인터들 FSPTR 및 FDPTR 및 패킷 전송 FIFO 버퍼(311)의 레지스터는 따라서 두가지 엔디안에 대처할 수 있도록 설계되어야 한다.
제12도의 FCOUNT 레지스터(431)은 패킷 전송 FIFO 버퍼(311) 내에 얼마나 많은 바이트들이 보유되어 있는지를 나타내는 표시를 저장한다. FCOUNT 레지스터(431)은 16보다 큰 값을 담을 수 없다. 이 레지스터는 파이프라인을 로드하기 전에 소스 머신(320) 및 데스티네이션 머신(340)에 의하여 조작되어, FCOUNT 레지스터(431)에 저장된 값은 현재 파이프라인 내의 모든 명령이 완료된 후에 패킷 전송 FIFO 버퍼(311) 내에 얼마나 많은 바이트가 존재하게 될지를 나타낸다. 이는 패킷 전송 FIFO 버퍼(311) 내에 장애를 야기할 동작이 파이프라인 내로 로드될 수 없도록 한다. 그리하여 데스티네이션 머신(340)이 항상 충분한 바이트를 가지게 되고, 소르 머신(320)이 항상 충분한 공간을 가지게 된다. 이 결과 FDPTR 또는 FSPTR이 상호 오버 테이킹할 위험이 없다. 새로운 패킷 요구를 시작하면서 FDPTR과 FSPTR 양자가 동일한 장소를 가리키도록 이들을 0으로 리셋하고, FCOUNT 레지스터(431)을 0으로 리셋한다. 이는 패킷 전송 FIFO 버퍼(311)의 정확한 초기화를 보장한다.
패킷 전송이 중단되었을 때, 패킷 전송 FIFO 버퍼(311) 레지스터 자체뿐만 아니라 FDPTR, FSPTR 및 FCOUNT 레지스터(341)이 저장된다. 이는 패킷 트랜스터 FIFO 버퍼(311)의 전체 상태를 유지하여, 패킷 전송의 재개 시에 복구될 수 있도록 한다.
값들로 채워진 패킷 전송은 패킷 전송 FIFO 버퍼(311)의 최하위 이중 워드로 충전 값을 로드하고, FCOUNT 레지스터(431)을 16으로 설정하고, FDPTR을 엔디안에 대한 정확한 데이타 시작 지점으로 설정한다. 이는 작은 엔디안에 대하여 바이트 0이며 큰 엔디안에 대하여 바이트 7이다. FCOUNT 레지스터(431)의 값은 값으로 채워진 패킷 전송 도중에 변경되지 않는다. 데스티네이션 머신(340)은 항상 충만한 패킷 전송 FIFO 버퍼(311)를 인지하고 채워진 값들을 불러내고 정렬시킨다. 소스 머신(320)은 항상 충만한 패킷 전송 FIFO 버퍼(311)을 인지하고 필요에 따라 스톨(stall)시킨다. 값으로 채워진 패킷 전송을 중단하거나 복구할 때에 패킷 전송 FIFO 버퍼(311)의 상태가 단순히 저장되고 임의의 다른 중단 형태에 대하여 복구된다. 따라서 값으로 채워진 패킷 전송을 중단하기 위하여 다른 특별한 고려가 필요하지 않다.
소스 머신(320)은 두개의 파이프 라인을 포함하고 다른 하나의 파이프라인을 데스티네이션 머신(340)과 공유한다. 파이프라인은 내부 메모리 인터페이스(301) 및 외부 메모리 인터페이스(302)와 인터페이스하여 온칩 대 오프칩, 오프칩 대 온칩, 온칩 대 오프칩, 및 오프칩 대 오프칩의 4 방향의 데이타 전송을 허용한다. 소스 머신(320)의 어드레스 파이프라인(427)과 바이트 파이프라인(428)은 데스티네이션 머신의 파이프라인들로부터 분리되어 있으나, 공통의 파이프라인 어드밴스를 제공하기 위하여 인터록(interlock) 되어있다. 이는 한 단계에 머무르면서 내부 메모리 인터페이스(00301) 및 외부 메모리 인터페이스(302) 상에 독립적으로 작용을 가하는 것을 허용한다. 하나의 인터페이스 내의 불연속성은 또한 다른 인터페이스를 스톨시킨다. 어드레스 파이프라인(427)은 소스 머신(320)에 의하여 엑세스될 어드레스들을 저장한다. 바이트 파이프라인(428)은 바이트 스트로브와 정렬 정보를 저장한다. 이 정보는 어느 바이트가 적절한 것인가에 관한 정보 및 이들을 패킷 전송 FIFO 버퍼(311) 또는 캐시 버퍼(312)에 로드시키고 제거시키는 방법을 나타낸다.전송 제어기(80) 레지스터 전송안에서, 바이트 파이프라인(428)은 레지스터 번호를 저장한다. 서비스된 정보는 또한 동작이 완료되는 시기를 나타내기 위하여 바이트 파이프라인을 통과한다.
소스 머신(320) 및 데스티네이션 머신(340)은 요구 파이프라인(429)을 공유한다. 요구 파이프라인(429)은, 예를 들어 낮은 우선 순위의 패킷 전송, 직접 외부 엑세스 등의 실행되는 동작의 유형과 같은 상태 정보 및 요구 프로세서의 표시를 저장한다. 요구 파이프라인(429)는 또한 언제 상태적 변화가 발생한 것인가를 나타내는 병렬 제어 정보를 저장한다.
내부 파이프라인 내에는 하나 또는 그 이상의 엑세스가 스톨될 수 있도록 때때로 버블(bubble)이 있을 수 있다. 전송 제어기(80)은 이러한 버블들을 가이드된 전송 중에 가이드 값을 불러오기 위하여 사용한다. 이는 전송 제어기(80)의 전송 대역 폭을 더욱 효율적으로 사용할 수 있도록 한다. 데스티네이션 레지스터가 가용 상태에 있지 않으면 이 불러내온 가이드 표의 값은 GTPIPE 레지스터(403)의 연관된 섹션에 저장된다.
전송 제어기(80)은 바이트 정렬의 형태만으로 패킷 전송 동안 데이타 정렬을 제공할 수 있다. 소스 머신(320)과 데스티네이션 머신(340)들은 서로 독립적이며, 그들은 매 사이클마다 0 바이트와 8 바이트 사이를 서로 패칭(fetching)하거나 저장(storing)할 수 있다. 이는 서로에 대한 소스와 데스티네이션 어드레스 정렬이 일정하게 변할 수 있음을 뜻한다. 유동성 있는 정렬을 지원하기 위하여, 전송 제어기(80)은 패킷 전송 선입력-선출력(first-in first-out) FIFO 버퍼(311), 소스 정렬 로직(332) 및 데스티네이션 정렬 로직(352)들을 갖는다. 패킷 전송 FIFO 버퍼(311)은 동시에 소스로부터 0 - 8 바이트를 로드될 수 있거나 데스티네이션으로 0 - 8 바이트가 출력될 수 있는 16-바이트 FIFO이다. 소스 멀티플렉서(331)과 소스 정렬 로직(332)는 소스로부터 적절한 바이트를 뽑아내고 그들을 이전의 소스 바이트에 인접하게 패킷 전송 FIFO 버퍼(311)에 저장한다. 한편 데스티네이션 정렬 로직(352)와 데스티네이션 멀티플렉서(351)은 패킷 전송 FIFO 버퍼(311)로부터 "가장 오래된" 바이트를 뽑아내고 그들을 현재 데스티네이션 8-바이트 더블 워드로 어드레싱된 정확한 위치로 정렬시킨다. 패킷 전송 정렬 및 FIFO 동작은 자동적이며 실시예를 숙고한 프로그래머는 이를 알기 쉬울 것이다.
캐시 버퍼(312)는 동작면에서 패킷 전송 FIFO 버퍼(311)와 유사한 8-바이트 버퍼이고 캐시 및 직접 외부 엑세스 동작 동안 사용된다. 캐시로 또는 캐시로부터 의 전송은 항상 8-바이트 범위이다. 캐시 버퍼(312)는 외부 메모리 버스가 64 바이트 범위보다 작은 경우에 데이타를 정렬하는 것을 돕는다. 패킷 전송 FIFO 버퍼(311)로부터 분리되게 캐시 버퍼(312)를 제공하는 것은 현재 패킷 전송 FIFO 버퍼(311)의 패킷 데이타를 먼저 비우지 않고 높은 우선순위 캐시와 직접 외부 엑세스 요구가 패킷 전송 중에 제공될 수 있도록 허여한다.
전송 제어기(80)은 온-칩 메모리로 맵핑된 4개의 사용자 엑세스 가능한 레지스터를 갖는다. 이들은 로드 및 저장 명령을 통하여 마스터 프로세서(60)에 의하여 엑세스 가능하다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에게 레지스터는엑세스 가능하지 않다. 표 12는 이러한 레지스터들의 목록이다.
표 12
REFCNTL 레지스터는 시스템 DRAM 리프레시 사이클을 제어하는데 사용되는 2개의 16 비트 값을 포함한다. 16 비트 REFRATE 필드(비트 15 - 0)은 DRAM 리프레시 사이클 요구가 발생될 인터벌을 결정한다. REFRATE의 값은 각 리프레시 요구 사이에서의 멀티프로세서 집적 회로(100)의 클럭 사이클 수를 나타낸다. REFRATE의 값이 32(16진수 "0020")보다 작은 경우는 DRAM 리프레시가 디스에이블링된다. REFRATE 필드는 리셋시 32(16진수 "0020")로 셋팅된다. DRAM 리프레시 동안, 16 비트 슈도우-어드레스가 리프레시 밴크 디코딩이나 /RAS 온리 리프레시를 사용하기 위하여 외부 어드레스 버스 상에 출력된다. 16 비트 RPARLD 필드(비트 31 - 16)은 리프레시 사이클 동안 출력될 최대 값을 포함한다. 리프레시 사이클이 발생되는 때마다, 계수기는 감소된다. 계수기가 0에 도달하면, RPARLD에 값이 다시 로드된다.RPARLD 필드는 리셋시 16 진수 "OFFFF"로 셋팅된다.
패킷 전송 최소 레지스터 PTMIN(511)과 패킷 전송 최대 레지스터 PTMAX(512)는 패킷 전송의 동작 시간을 제어한다. 이러한 레지스터들은 제31도에서 설명되며 또한 아래에서도 설명된다. 패킷 전송 최소 레지스터 RTMIN(511)은 전송 제어기(80)이 높은 우선순위 패킷 전송에 의하여 인터럽팅할 수 있기 전에 전송 제어기에 의하여 패킷 전송이 반드시 제공도도록 하기 위하여 클럭 사이클의 최소 수를 저장한다. 패킷 전송 최소 레지스터 PTMIN(511)의 단지 24개의 최하위 비트들이 양호한 실시예에서 구현되었다. 상위 비트들을 판독하는 것은 언제나 "0"을 복귀시키고 이러한 비트들을 기입하는 것은 아무런 영향도 끼치지 않는다. 패킷 전송 최소 레지스터 PTMIN(511)은 리셋시 16진수 "10000"(64K 사이클)로 로드된다. 패킷 전송 최대 레지스터 PTMAX(512)는 타임-아웃 전에 패킷 전송 최소 레지스터 PTMIN(511)에 의하여 규정된 시간에 이어서 패킷 전송이 계속되는 최대 시간 양을 결정한다. 이렇게 고려된 실시예서는, 패킷 전송 최대 레지스터 PTMIN(512)는 24개의 최하위 비트들을 구현한다. 상위 비트에 대한 판독은 "0"을 복귀시키고 이러한 비트들을 기입하는 것은 아무런 영향도 작지 않는다. 따라서 패킷 전송은 PTMIN 사이클을 따르는 높은 우선순위 패킷 전송에 의하여 인터럽팅될 수 있고 PTMIN + PTMAX 사이클을 따르는 같은 우선순위의 또다른 패킷 전송을 수행하기 위하여 지연될 수도 있다. 패킷 전송 최대 레지스터 PTMAX(512)에 저장된 값은 높은 우선순위 패킷 전송을 위하여 패킷 전송이 지연된 때에는 아무런 영향도 끼치지 않는다. 리셋시, 16진수 "10000"(64K 사이클)의 값이 PTMAX로 로드된다.
FLTSTS 레지스터는 패킷 전송나 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 인스트럭션 캐시 필(fill)이나 직접 외부 엑세스 사이클 동안 폴트가 발생했음을 나타내는 스테이터스 비트들을 포함한다. 표(13)은 FLTSTS 레지스터 특정 비트의 의미를 보여준다.
(표 13)
전송 제어기(80)은 소정 메모리 폴트의 감지에 근거하여 FLTSTS 레지스터의 개개의 비트들을 셋팅한다. M 비트(비트 0)은 마스터 프로세서(60) 요구 패킷 전송 동안 폴트가 발생된 때 1로 셋팅된다. 비트(19 - 16)들은 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)들에 의하여 요구된 패킷 전송 폴트를 나타내기 위하여 사용된다. DIGP3(비트 19)는 디지탈 영상/그래픽 프로세서(74) 패킷 전송 폴트를 나타낸다. DIGF2(비트 18)은 디지탈 영상/그래픽 프로세서(73) 패킷 전송 폴트를 나타낸다. DIGP1(비트 17)은 디지탈 영상/그래픽 프로세서(72) 패킷 전송 폴트를 나타낸다. DIGP0(비트 16)은 디지탈 영상/그래픽 프로세서(71) 패킷 전송 폴트를 나타낸다. 비트(23 - 20)들은 8개의 디지탈 영상/그래픽 프로세서를 포함하는 실시예에서 패킷 전송 폴트를 보고하기 위하여 보류된다. 이러한 비트들의 각각은 상응하는 디지탈 영상/그래픽 프로세서에 의하여 요구된 패킷 전송 동안 폴트가 발생한 때에 1로 셋팅된다.
DIGPC3 비트(비트 27)은 디지탈 영상/그래픽 프로세서(74)에 의하여 요구되는 직접 외부 엑세스 동작이나 캐시 필 동안 폴트가 발생된 때 1로 셋팅된다. 유사하게, DIGPC2 비트(비트 26)에 있는 "1"은 디지탈 영상/그래픽 프로세서(73)에 의하여 요구되는 직접 외부 엑세스 동작이나 캐시 필 동안의 폴트를 나타낸다. DIGPC1 비트(비트 25)에 있는 "1"은 디지탈 영상/그래픽 프로세서(72)에 의하여 요구되는 직접 외부 엑세스 동작이나 캐시 필 동안의 폴트를 나타낸다. DIGPC0 비트(비트 24)에 있는 "1"은 디지탈 영상/그래픽 프로세서(71)에 의하여 요구되는 직접 외부 엑세스 동작이나 캐시 필 동안의 폴트를 나타낸다. 비트(31- 28)들은 8 개의 디지탈 영상/그래픽 프로세서를 사용하는 실시예에서 추가의 디지탈 영상/그래픽 프로세서에 의하여 요구되는 직접 외부 엑세스 동작이나 캐시 필 동안의 폴트를 나타내기 위하여 보류된다.
M, DIGP(3 - 0), DIGP, DIGOC(3 - 0) 비트들 중의 어느 하나에 대한 셋팅은 마스터 프로세서(60)을 인터럽팅한다. 셋팅되었던 FLTSTS 비트에 대한 클리어링은 관련된 패킷 전송, 캐시 필 또는 직접 외부 엑세스를 리스케쥴링(rescheduling)되게 만든다. FLTSTS 비트들은 적절한 비트에 "1"을 기입하므로써 클리어링된다. "0"을 기입하는 것은 아무런 효과도 갖지 않는다.
마스터 프로세서(60) 레지스터는 스코어 보드(score board)이기 때문에, 폴트 직접 외부 엑세스 요구는 이러한 프로세서의 인스트럭션 파이프라인을 저지시킬(stalling) 필요가 없다. 마스터 프로세서(60)은 데이타를 엑세스하는 다른 시도들이 이루질 때에만 직접 외부 엑세스 스토어 때문에 저지될 것이다. 폴트 직접 외부 엑세스 로드들은 같은 조건 아래 또는 만일 직접 외부 엑세스에 의하여 로드될 레지스터를 사용하려는 시도가 이루어진다면 마스터 프로세서(60)이 저지되도록 만든다. 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74)에 의하여 요구된 폴트 직접 외부 엑세스는 언제나 프로세서에 의하여 요구된 직접 외부 엑세스가 완료될 때까지 요구하는 프로세서를 저지시킨다.
패킷 전송은 메모리의 두 영역 사이에서 데이타 블럭들을 전송하는 것이다. 데이타는 전송 제어기(80)에 의하여 소스(dourcr, Src) 메모리 영역으로부터 데스티네이션(destination, Dst) 메모리 영역으로 전송된다. 패킷 전송은 마스터 프로세서(60)이나 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74) 중의 어느 하나가 전송 제어기(80)에 요구한 때에 초기화된다. 전송 제어기(80)은 요구 큐잉 및 우선순위화 로직(request queing and prioritization logic, 303)을 통하여 제6도 및 제7도에 도시된 바와 같이 픽스드 앤드 라운드 로빈 우선순위화(fixed and round robin prioritization)를 사용하여 요구를 담당한다. 일단 프로세서가 요구를 맡기면, 프로그램 실행이 계속된다. 패킷 전송은 추가의 프로세서 사이클에 대한 요구 없이 전송 제어기(80)에 의하여 완료될 것이다. 패킷 전송은 다른 우선순위 레벨로 맡겨질 수 있기 때문에, 높은 우선순위 전송이 낮은 우선순위를 인터럽팅할 수 있다. 이러한 상황이 발생된 때에는, 낮은 우선순위 전송이 전송 제어기(80)에 의하여 지연되고 전송의 현 위치가 세이빙된다. 높은 우선순위 전송이 완료된 때에는, 지연된 전송이 인터럽팅되었던 포인트에서 자동적으로 다시 계속된다.
패킷 전송에 대한 이해를 돕기 위하여, 패킷 전송을 검토하는데 사용된 용어에 대한 간단한 정의가 요구된다. 라인은 메모리의 연속된 바이트의 수이다. 패치는 시작 어드레스가 동일한 거리만큼 떨어진 라인들의 그룹이다. 패킷은 패티들의 집합이다. 피치는 2 라인의 시작 사이 또는 2 패치의 시작 사이의 어드레스 상의 차이이다. 파라메타 테이블은 데이타의 패킷이 소스로부터 데스티네이션으로 어떻게 이동될 것인지를 설명하는 파라메타의 8 더블-워드 길이 집합(8 double-wordlong collection)이다. 링크된 리스트(linked-list)는 각각이 리스트 내의 다음의 테이블을 포인팅하는 파라메타 테이블의 집합이다. 가이드 테이블은 패킷 전송 내의 개개의 패치들을 설명하는 파라메타의 테이블이다. 소스 전송은 소스 메모리 위치로부터의 데이타 전송이다. 데스티네이션 전송은 데스티네이션 메모리 위치로의 데이타 전송이다.
각 프로세서는 관련된 파라메타 메모리를 갖는다. 관련 메모리 내의 다수의 위치는 프로세서로부터 서빙 패킷 전송이 요구된 때, 전송 제어기(80)에 의한 사용을 위하여 따로 셋팅된다. 이러한 영역들이 제5도에 되시되었다. 전송 제어기(80)에 의하여 사용된 파라메타 메모리들은 전송 제어기(80) 사용에만 제한되는 것이 아니다. 그러나, 프로그래머는 이러한 위치에 자리한 데이타가 패킷 전송 동작 동안 전송 제어기(80)에 의하여 덧기입(overwritten)될 수 있다는 점을 알아야만 한다. 이러한 위치들은 상기 덧기입이 패킷 전송이나 패킷 전송의 데이타를 변경시킬 수 있기 때문에 패킷 전송 요구가 액티브한 때에는 절대 기입되어서는 안된다.
패킷 전송을 초기화시키는 프로세서에 대한 프로세스, 방법 또는 시퀀스의 예는 다음과 같다. 해당 파라메타 메모리 내에 패킷 전송 파라메타 테이블을 생성하시오. 만일 필요하다면, 온-칩 메모리에 패킷 전송의 가이드 테이블을 발생하시오. 가이드 테이블의 본질이 아래에 더 설명될 것이다. 제1 파라메타 테이블을 포인팅하기 위하여 파라메타 메모리 내에 링크된 리스트 시작 어드레스를 셋팅하시오. 제15도는 이러한 링크된 리스트 시작 어드레스가 저장되어야만 하는 해당 파라메타 메모리 내의 위치를 도시함을 주목하시오. 마스터 프로세서(60)에 대하여, 이러한 링크된 리스트 시작 어드레스는 16진수 "010100FC" 내지 16진수 "010100FF"인 어드레스에 저장되어야만 한다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)에 대하여, 이러한 링크된 리스트 시작 어드레스는 #이 디지탈 영상/그래픽 프로세서의 수인 경우 16진수 "0100#0FC" 내지 16진수 "0100#0FF"인 어드레스에 저장되어야만 한다. 다음에는 전송 제어기(80)에 요구를 보내기 위하여 적절한 패킷 전송 우선순위 비트와 P비트를 셋팅한다. 이러한 비트들은 마스터 프로세서(60)를 위한 PKTREQ 제어 레지스터와 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)의 COMM 레지스터 안에 위치된다. 전송 제어기(80)은 이러한 레지스터의 상태를 감지하고 다음으로 제6도와 제7도에 도시된 우선순위에 따르는 패킷 전송 요구를 제공한다.
패킷 전송 요구는 링크된 리스트로서 제공된다. 링크된 리스트들은 각각의 전송이 리스트 상의 다음 엔트리의 엔트리 포인트에 대한 포인터를 포함하는 경우의 패킷 전송 테이블의 단순한 집합이다. 비록 패킷 전송이 온-칩 또는 오프-칩 메모리(off-chip) 상에서 동작할 수 있지만, 파라메타 테이블들 자체의 링크된 리스트들은 온-칩 메모리에 저장되어야만 한다. 각각의 프로세서는 메모리에 저장된 다수의 링크된 리스트를 가질 수 있을 뿐만아니라 그들 중의 하나만이 한번에 액티브 상태일 수 있다. 액티브 링크된 리스트의 시작은 요구 프로세서의 파라메타 메모리에 있는 제공 링크된 리스트 시작 어드레스에 저장된다. 링크된 리스트의 각각의 엔트리 파라메타 테이블들은 리스트 상의 다음 엔트리의 위치에 대한 포인터를 갖는다. 리스트의 최종 엔트리는 리스트-앤드가 패킷 전송 테이블의 패킷 전송 옵션 필드의 스톱 비트(stop bit)에 의하여 표시될 수 있기 때문에 어느 곳이라도 포인팅할 수 있다.
제16도는 간단한 링크된 리스트를 도시한다. 이러한 리스트는 2개의 패킷 전송 파라메타 테이블을 갖는다. 리스트 스타트 포인터는 제1 패킷 전송 파라메타 테이블의 시작 어드레스를 저장한다. 제1 패킷 전송 파라메타 테이블에 있는 제1 데이타는 본 경우는 마지막인 제2 패킷 전송 파라메타 테이블의 어드레스를 포인팅한다. 비록 이러한 예가 단지 2개의 패킷 전송 파라메타 테이블을 포함하지만, 링크된 리스트는 온-칩 메모리 내에서 적절한 한도에서 가능하다.
일단 프로세서가 자신의 P비트를 셋팅하여 패킷 전송을 따르게하면, 전송 제어기(80)은 해당 프로세서의 Q비트를 셋팅하여 응답한다. 이는 상기 프로세서의 링크된 리스트가 전송 제어기(80) 내에서 큐잉되었음을 나타낸다. 패킷 전송 우선순위 레벨에 적절한 라운드 로빈 토큰(token)이 요구 프로세서에 도달한 때, 전송 제어기(80)은 상기 요구를 능동적으로 제공한다. 전송 제어기(80)은 요구 프로세서의 파라메타 메모리의 링크된 리스트 스타트 어드레스 위치로부터 링크된 리스트의 스타트 위치를 판독한다. 전송 제어기(80)은 자신의 소스 머신(320)과 데스티네이션 머신(340) 안으로 제1 패킷 전송 파라메타 테이블을 판독한다. 그 다음으로, 전송 제어기(80)은 데이타를 파라메타 테이블 내에 표시된 대로 전송하기 위하여 소스 머신(320)과 데스티네이션 머신(340)을 사용한다. 일단 패킷 전송이 완료되면, 전송 제어기(80)은 파라메타 메모리의 링크된 리스트 스타트 어드레스를 링크된 리스트 내의 다음 어드레스로 갱신한다. 다음의 어드레스는 막 완료된 패킷 전송 파라메타 테이블의 제1 엔트리로부터 판독된다. 다음으로, 전송 제어기(80)은 링크된리스트 상의 최종 엔트리에 도달할 때까지 프로시져를 반복한다.
본 명세서에서 설명된 패킷 전송 장치, 프로시져 및 방법들은 데이타 이동에 있어서 최대한의 융통성을 허여하기 위한 다수의 다른 포맷과 옵션들을 제공한다. 이러한 포맷들을 고려할 때에는, 패킷 전송의 소스 전송과 데스티네이션 전송들이 서로 독립적이라는 것을 기억하는 것이 중요하다. 이는 패킷 테이타가 데이타가 판독되는 포맷과는 완전히 다른 포맷을 사용하여 기록될 수 있도록, 또 어떤 수의 스프레딩 또는 머징 기능도 자동적으로 달성될 수 있도록 허여한다. 2개의 기본 패킷 전송 포맷들이 "차원화(dimensioning)"되고 "가이드(guiding)" 되었다. 이러한 포맷들은 그들이 소스 전송 또는 데스티네이션 전송을 뜻하는 지에 따라서 데이타를 판독하는 방법과 기입 하는 방법을 결정할 수 있다. 소스 및 데스티네이션 전송에 대하여 다른 포맷을 규정할 수 있음을 주목해야 한다.
차원화된 전송들은 가장 간단한 형태이나 역시 가장 덜 세련된 형태이다. 차원화된 전송은 데이타 바이트들의 간단한 연속 선형 시퀀스일 수 있고, 또한 다수의 그와 같은 영역들로 구성될 수 있는 소스나 데스티네이션을 설명한다. 어드레싱 메카니즘은 3차원에 이르는 어레이가 규정될 수 있도록 허여한다. 이는 다수의 2-차원 패치들이 한번의 패킷 전송에 의하여 전송될 수 있도록 허여한다. 제1 또는 A 차원을 따르는 데이타는 언제나 1 바이트 떨어져 있다. 제2 또는 B 차원 및 제3 또는 C 차원을 따르는 간격은 임의적이나 전 패킷에 대하여는 고정된다. 데스티네이션 차원들이 완료된 때에 전송이 완료된다.
제17도는 차원화된 전송이 소스나 데스티네이션 메모리를 엑세스하는 방법의예를 설명한다. 제17도는 각각이 512 개의 인접 8 비트 픽셀들로 구성된, 3 라인의 2개의 패치로 구성된 패킷을 도시한다. 이는, 예를들어, 만일 2 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74)가 각각 라인의 패치 하나 상에서 작용하는 3 대 3 컨벌루션(3 by 3 convolution)을 수행하려 한다면 꼭 필요하다. 제1 패치("PQR")는 디지탈 영상/그래픽 프로세서(71)과 관련된 데이타 메모리(22)로 전송될 데이타를 나타낼 수 있으며, 제2 패치("STU")는 디지탈 영상/그래픽 프로세서(72)와 관련된 데이타 메모리(27)로 전송될 데이타를 나타낼 수 있다. 이러한 예는 전송 제어기(80)이 어떻게 소스 메모리 영역으로부터 데이타를 판독하는 가를 규정하기 때문에 소스 전송을 나타낸다. 데이타 패킷은 다음의 파라메타에 따른 용어에 의하여 규정된다: A 카운트; B 카운트; C 카운트; 스타트 어드레스; B 피치; C 피치. A 카운트는 제1 차원의 연속된 데이타 바이트들의 수이다. 제17도의 예에서는 A 카운트는 512이다. B 카운트는 패치 또는 라인의 수를 하나보다 작게 만들기 위한 단계의 수이다. 제17도는 2인 B 카운트를 도시한다. C 카운트는 패킷을 하나보다 작게 만들기 위한 패치-단계의 수이다. 제17도는 1인 C 카운트를 도시한다. 스타트 어드레스는 패치의 스타트의 리니어(linear) 어드레스이다. 스타트 어드레스는 "P"로 나타내진 바이트의 어드레스이다. B 피치는 제2 차원의 리니어 피치, 즉 바이트 "P" 및 "Q" 또는 "Q" 및 "R"의 어드레스의 차이이다. C 피치는 제3 차원의 리니어 피치, 바이트 "P"와 "S"의 어드레스의 차이이다. 소스 및 데스티네이션 전송 둘다 이러한 방법으로 정의되나, 파라메타들은 소스 및 데스티네이션의 형상이 아주 다를 수 있도록 독립적이다.
차원화된 전송의 모든 차원들이 액티브 상태일 필요는 없다. B 카운트 및/또는 C 카운트를 0으로 셋팅하므로써, 전송이 개개의 바이트, 픽세 멀티플 바이트, 라인, 또는 피치들에 제한될 수 있다. 0 값의 A 카운트는 전송될 데이타가 없다는 결과가 되며 이는 에러를 발생시킨다.
가이드 전송은 차원 어드레스의 시퀀스가 패킷 전송 파라메타 내의 값들로부터 단지 계산된다기 보다는 온-칩 메모리의 테이블로부터 가이드되는 전송이다. 그들의 동작이 차원화된 전송보다는 좀더 복잡한 반면에, 그들은 훨씬 융통성이 있다. 가이드 전송에는 두가지 클래스가 있다: 고정-패치; 및 가변-패치. 고정 패치 가이드된 전송은 차원화된 전송에서처럼 패킷 전송 파라메타 내에 설명된 제1 및 제2 차원을 가지나, 제3 차원은 온-칩 가이드 테이블의 엔트리로부터 가이드된다. 가변-패치 가이드된 전송에서는, 가이드 테이블은 역시 각 패치에 대한 A 및 B 차원의 크기를 결정한다. 어떠한 형태에서도, 첫째 2 차원들은 차원화된 전송과 유사한 방법으로 액티브상태가 된다. 따라서, 각각의 가이드된 테이블 엔트리들은 개개의 바이트, 멀티플 바이트, 라인 또는 2-차원 패치의 개개의 픽셀들을 이동시킬 수 있다. 이는 룩-업(look-up) 테이블을 통한 라인 그리기나 데이타를 프로세싱하는 경우 발생할 수 있는 것과 같은 다수의 불규칙 동작(irregular)이 수행될 수 있도록 허여한다.
다른 언급이 없다면, 가이드된 전송에 대한 다음 설명에 있는 사항(information)은 소스 및 데스티네이션 전송 둘 모두에 똑같이 적용된다.
가이드 테이블은 전송 형태에 따라 32 비트 또는 64 비트일 수 있는 엔트리들의 블럭이다. 가이드 테이블은 온-칩 메모리 내에 위치하여야만 한다. 고정된 패치 전송인 경우에는, 가이드 테이블이 32 비트 워드 어드레스에 정렬되어야 한다. 가변-패치 전송의 경우는, 가이드 테이블이 64 비트 더블 워드 어드레스에 정렬되어야 한다. 가이드 테이블의 스타팅 어드레스와 가이드 테이블이 갖는 엔트리의 수들은 해당 패킷 전송 파라메타 테이블 내에 표시된다. 각각의 가이드 테이블 엔트리들은 패킷 전송 내의 하나의 2-차원 패치에 대응한다. 전송 제어기(80)이 패킷 전송을 제공하므로, 제어기는 패킷 전송 중에 다음의 패치를 프로세스할 필요가 있을 때에, 가이드 테이블 엔트리들을 차례로 하나씩 패칭(fetching)한다. 가이드 테이블 엔트리들에 관한 추가의 상세한 사항들이 아래의 상세한 가이드된 전송 설명에 설명되었다.
고정-패치 가이드된 전송은 32 비트 엔트리들을 갖는 온-칩 가이드 테이블을 사용한다. 테이블은 정렬된 워드이며, 따라서 테이블의 엔트리어드레스의 최하위 2 비트는 "00"이어야 한다. 각각의 엔트리들은 전송의 제3 차원을 위한 어드레스를 계산하기 위하여 사용된 정보들을 갖는다. 고정-패치 전송은 3가지 형태로 나타난다: 고정-패치 델타-가이드된; 고정-패치 오프셋-가이드된; 및 고정-패치 오프셋-가이드된 룩-업 테이블. 이러한 형태들이 아래에 자세히 설명될 것이다.
고정-패치 델타-가이드된 전송인 경우, 가이드 테이블은 현재의 패치의 스타트 어드레스를 만들기 위하여 이전의 2-차원 패치의 스타트 어드레스에 더해질 32 비트 "델타" 값을 갖는다. 패치 크기는 A 카운트 및 B 카운트 패킷 전송 파라메타에 의하여 고정되고 정의된다.
고정-패치 델타-가이드된 패킷 전송 프로세스와 방법의 예가 제18도에 도시되었다. 이때 델타 A의 값은 제1 패치, 즉 패치 A의 스타트 어드레스를 만들기 위하여 패킷 전송 파라메타에 주어진 스타팅 어드레스에 더해진다. 이러한 스타트 어드레스는 최종 패치 스타트 레지스터(403)에 저장된다. 그 다음으로, 델타 B가 패치 B의 스타트 어드레스를 만들기 위하여 최종 패치 스타트 레지스터(403)에 저장된 패치 A의 스타트 어드레스에 더해지며, 계속 이와 같이 이루어진다. 그 합은 다음 패치 스타트 어드레스의 근거를 만들기 위하여 최종 패치 스타트 레지스터(403)에 언제나 저장된다는 것을 주목해야 한다. 엔트리의 수 카운터(503)이 각 패치 후에 1씩 감소된다. 패킷 전송은 엔트리의 수 카운터(503)이 0에 도달한 때에 종료된다.
고정-패치 오프셋-가이드된 패킷 전송은 각 패치의 스타팅 어드레스를 만들기 위하여 패킷 전송 파라메타에 주어진 베이스 어드레스에 더해질 32 비트 값을 갖는 가이드 테이블(502)를 사용한다. 패치 크기는 A 카운트 및 C 카운트 패킷 전송 파라메타에 의하여 고정되고 정의된다.
제19도는 고정-패치 오프셋-가이드된 패킷 전송을 위한 어드레싱 메카니즘 프로세서와 방법을 도시한다. 가이드 테이블(502)의 제1 엔트리로부터의 값 델타 A는 패치 A의 스타트 어드레스를 만들기 위하여 패킷 전송 파라메타에 규정된 베이스 어드레스에 더해지고 베이스 어드레스 레지스터(505)에 저장된다. 그 다음으로, 델타 B가 패치 B의 스타트 어드레스를 만들기 위하여 베이스 어드레스 레지스터(505)에 저장된 어드레스에 더해지며, 가이드 테이블(502)의 최종 엔트리까지 계속된다. 만일 패킷 전송 파라메타 테이블에 규정된 베이스 어드레스가 0이라면, 가이드 테이블(502)는 절대(absolute) 어드레스를 규정한다. 델타-가이드된 전송과 같이, 테이블 포인터(501)은 현재의 가이드 테이블 엔트리를 포인팅하며 엔트리의 수 카운터(503)은 수행된 패치의 수를 따른다.
고정-패치 오프셋-가이드된 룩-업 테이블 패킷 전송인 경우에는, 가이드 테이블(502)가 오프셋 레지스터(506)의 0, 1, 2 또는 3 비트에 의하여 제로 필(zero fill)과 함께 레프트-쉬프팅된 다음 베이스 어드레스 레지스터(505)에 저장된 어드레스에 더해질 32 비트 오프셋 값을 갖는다. 베이스 어드레스 레지스터(505)에 저장된 베이스 어드레스는 패킷 전송 파라메타에 주어진다. 이는 전송이 룩-업 테이블의 데이타 크기에 무관한 룩-업 테이블 동작을 위해 사용되도록 허여한다. 고정-패치 오프셋-가이드된 룩-업 테이블 포맷은 소스 전송에만 사용될 수 있다. 쉬프팅 양은 패킷 전송 파라메타의 A 카운트 필드의 비트 1 내지 3의 제일 좌측 비트의 위치에 의하여 표시된다. 비트 3의 "1"은 3 자리의 좌측-쉬프팅을 나타내며; 비트 2는 2 자리; 비트 1은 1 자리의 좌측-쉬프팅을 나타낸다. 비트 1 내지 3의 "1"은 0 쉬프팅을 나타내지 않는다. 이러한 좌측 쉬프팅은 8, 16, 32 및 64 비트 델타-크기된 룩-업 테이블을 지원하도록 허여한다. 룩-업 테이블 전송에 대한 패치 크기는 1차원으로 고정되며 1, 2, 4 또는 8 바이트로 셋팅된다.
제20도는 고정-패치 오프셋-가이드된 룩-업 테이블 패킷 전송에 대한 어드레스 계산의 예를 도시한다. 이때, 오프셋 A가 A 카운트 필드의 값에 의하여 표시된 바와 같이 룩-업 테이블 데이타 크기에 따르는 0, 1, 2 또는 3 비트들에 의하여 좌측으로 쉬프팅된다. 오프셋 레지스터(505)의 이러한 쉬프팅된 어드레스는 패치 A의 스타트 어드레스를 만들기 위하여 베이스 어드레스 레지스터(505)에 저장된 베이스 어드레스에 더해진다. 다음으로, 오프세 B 값이 패치 B 스타트 어드레스를 만들기 위하여 쉬프팅되고 베이스 어드레스 레지스터(505)의 베이스 어드레스에 더해지며, 계속 이와 같이 이루어 진다. 쉬프팅은 오프셋 값이 가이드 테이블(502)로부터 로드될 때 발생한다. 앞의 예에서설명된 바와 같이, 테이블 포인터(501)과 엔트리의 수 레지스터(503)은 가이드 테이블(502)의 현재 위치와 패치들의 수를 따르는 것을 계속한다.
가변-패치 가이드된 전송은 패킷 전송 파라메타보다는 가이드 테이블 내의 모든 패치 크기 정보를 규정한다. 이는 패킷 전송 내의 각각의 패치들이 다른 차원을 갖을 수 있도록 허여한다. 전송은 델타 또는 오프셋 가이드될 수 있다. 가변-패치 가이드된 전송의 경우, 가이드 테이블은 64 비트의 더블-워드 엔트리들로 구성된다. 가이드 테이블을 위한 리틀-엔디언(little-endian) 포맷이 제21도에 도시되었다. 더블 워드의 하위 반(lower half)은 첫째 2차원에 대한 A 및 B카운트값을 갖는다. 상위 32 비트는 제3 차원의 어드레스를 계산하는데 사용되는 값을 갖는다. 제22도는 상위 32 비트가 A 및 B 카운트 값을 포함하며 하위 32 비트가 오프셋 또는 델타를 포함하는 빅-엔디언(big-endian) 가이드 테이블 포맷을 도시한다.
소프트웨어가 32 비트 기입을 사용하여 엔디언 형식에 무관한 가이드 테이블을 생성하기 위하여 적절히 제공된다. 워드 1이 워드 0보다 4 바이트 큰 어드레스에 있는 경우, A 및 B 카운트가 워드 1 어드레스에 나타나며 오프셋/델타 어드레스는 워드 0 어드레스에 나타난다. 전송 제어기(80)은 64 비트 엑세스 동안 한번에 32 비트 워드 둘다를 엑세스할 수 있고 현재 선택된 엔디언 모드에 따라 정확한 내부 동작에 필요한 경우 워드의 순서를 조절할 수 있다. 가변-패치 전송을 위한 가이드 테이블 엔트리는 정렬된 더블 워드여야 하는데, 즉 바이트 어드레스의 3개의 최하위 비트들이 "000"이어야 한다.
제23도는 가변-패치 델타-가이드된 패킷 전송의 예를 도시한다. 가변-패치 델타-가이드된 패킷 전송의 경우, 가이드 테이블 엔트리의 제1 워드가 최종 패치 스타트 레지스터(504)에 저장된 이전의 패치의 스타트 어드레스에 더해질 32 비트 델타 양을 갖는다. 제1 패치를 위한 스타팅 어드레스는 패킷 전송 파라메타에 주어진다. 패치 크기는 가변적이고 각각의 가이드 테이블 엔트리의 제2 워드 내에 규정된다. 이때 델타 W가 패치 W의 스타트 어드레스를 만들기 위하여 패킷 전송 파라메타에 규정된 스타팅 어드레스에 더해진다. A 카운트는 제1 차원의 바이트 수의 길이를 결정하며, B 커운트는 라인의 수보다 1만큼 적은 제2 차원의 크기를 결정한다. 다음으로, 델타 X가 패치 X 스타트 어드레스를 발생시키기 위하여 최종 패치 스타트 레지스터(504)에 저장된 패치 W 스타팅 어드레스에 더해지며, 이와 같이 계속된다. 고정-패치 전송의 경우에서 이미 설명된 바와 같이, 테이블 포인터(501)과 엔트리의 수 카운터(503)은 가이드 테이블(502)의 위치를 따르는 것을 계속한다. 테이블 포인터(501)이 각각의 가이드 테이블 엔트리가 64 비트 또는 8 바이트이기 때문에 8 바이트보다 상위의 어드레스를 포인팅하기 위하여 증가된다는 점을 주목해야 한다.
가변-패치 오프셋-가이드된 패킷 전송의 예가 제24도에 도시되었다. 가변-패치 오프셋-가이드된 패킷 전송에 대한 각 가이드 테이블 엔트리의 한 워드는 32 비트 오프셋 값을 갖는다. 이러한 32 비트 오프셋 값은 각각의 패치의 스타트 어드레스를 계산하기 위하여 베이스 어드레스 레지스터(505)에 저장된 베이스 어드레스에 더해진다. 베이스 어드레스는 패킷 전송 파라메타에 규정된다. 패치의 크기는 가변적이고 각 가이드 테이블 엔트리의 나머지 다른 반(half)에 규정된다. 오프셋 W 값이 패치 W의 스타트 어드레스를 발생하기 위하여 베이스 어드레스 레지스터(505)에 저장된 베이스 어드레스에 더해진다. A 카운트 및 B 카운트 값들이 패치의 크기를 결정한다. 다음으로, 오프셋 X가 패치 X에 대한 스타트 어드레스를 얻기 위하여 베이스 어드레스 레지스터(505)에 저장된 최초의 베이스 어드레스에 더해지며, 계속 이와 같이 이루어 진다. 테이블 포인터(501)과 엔트리의 수 카운터(503)은 테이블 포인터(501)이 8씩 증가되는 상태로 가이드 테이블(502)의 위치를 따르는 것을 유지한다.
룩-업 테이블 패킷 전송과 같은 필-위드-밸류(fill-with-value) 패킷 전송은 소스 전송만을 위하여 규정된다. 최상위 필 밸류 워드 및 최하위 필 밸류 워드인 2개의 32 비트 필드들은 데스티네이션 메모리를 채우기 위하여 사용될 64 비트 값들을 규정한다. 만일 필 패턴이63 비트보다 작다면, 패턴은 최하위 및 최상위 필 밸류 워드 전부가 복사되어야만 한다. 필 값에 대해서는 어떠한 정렬 동작도 수행되지 않으며, 데스티네이션 더블-워드에 기입된 바이트들은 필 밸류 더블-워드로부터 대응하는 바이트들이다. 필-위드-밸류 패킷 전송을 위하여는 어떠한 소스 스타트어드레스나 소스 차원 카운트가 규정되지 않는다. 패킷 전송의 크기가 데스티네이션 전송 파라메타에 의하여 결정된다.
전송 포맷의 많은 다양성은 많은 가능한 소스 및 데스티네이션 전송 조합의 결과가 된다. 이러한 조합들을 규정하기 위하여, 패킷 전송 파라메타 테이블의 파라메타 포맷은 요구된 소스 및 데스티네이션 전송의 형태에 좌우되어 변할 것이다. 파라메타 테이블 내용에 대한 검토를 돕기 위하여, 제25도 내지 제29도가 가능 파라메타의 범위의 예로서 도시되었다.
패킷 전송 파라메타 테이블들은 양호하게 온-칩 메모리에 위치한다: 마스터 프로세서(60) 파라메타 메모리(15); 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 파라메타 메모리(25, 30, 35 또는 40); 또는 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 데이타 메모리(22, 23, 24, 27, 28, 29, 32, 33, 34, 37, 38 또는 39). 패킷 전송 파라메타 테이블은 정렬된 64 바이트이어야 하는데, 즉 6개의 최하위 어드레스 비트들은 "0000"이다, 어떠한 메모리가 테이블을 갖느냐에 대해서는 제한이 없다. 따라서, 마스터 프로세서(60)이 디지탈 영상/그래픽 프로세서(71)에 대응하는 파라메타 메모리(25)에 위치된 파라메타 테이블을 사용할 수 있으며, 이하 마찬가지이다. 요구 프로세서는 단순히 링크된 리스트 스타트 어드레스 위치의 적절한 스타팅 어드레스를 패킷 전송 요구를 내놓기 전에 프로세서 자신의 파라메타 메모리에 위치시킨다.
제25도 내지 제28도와 관련하여, 다음의 부분은 패킷 전송 파라메타의 다양한 필드들을 설명한다. "PT"로 표시된 패킷 전송 파라메타의 스타트 어드레스에 대한 각 필드의 어드레스가 주어질 뿐만 아니라 필드가 유효한 전송 형태도 주어진다. 많은 경우, 2개의 동일한 필드들이 있게 되는데, 하나는 소스 전송을 위한 것이며 하나는 데스티네이션 전송을 위한 것이다. 이러한 경우, 필드 설명이 개개의 경우에 따라 주어질 것이다. 전송 형태에 따라서, 특정의 필드는 사용되지 않는다. 이러한 경우에는, 상기 필드는 프로그래밍되지 않고 남겨진다. 표 14는 모든 허용된 옵션들을 리스팅한다. 이러한 점들이 아래에 상세히 설명될 것이다.
표 14
패킷 전송 파라메타의 제1 데이타 워드는 다음 파라메타 테이블의 다음 패킷 전송 스타트 어드레스이다. 이러한 워드는 모든 패킷 전송 파라메타에 제공된다. 이것은 패킷 전송 링크된 리스트 상의 다음 엔트리의 스타트에 대한 32 비트 포인터이다. 이것은 64 바이트 정렬 온-칩 어드레스를 포인팅하며, 따라서 이러한 어드레스의 6개 최하위 비트들은 "000000"이어야 한다. 링크된 리스트의 최종 엔트리는 패킷 전송 옵션 필드의 스톱 비트가 링크된 리스트를 종료시키기 위하여 사용되기 때문에 특별한 다음 어드레스 엔트리를 필요로 하지 않는다. 패킷 전송이 성공적으로 종료할 때마다, 다음 패킷 전송 엔트리 어드레스 워드의 값이 요구 프로세서의 파라메타 메모리의 링크된 리스트 스타트 어드레스 위치에 기입된다. 이는 자동적으로 포인터를 다음 패킷 전송으로 전진시킨다. 포인터는 링크된 리스트가 종료된 순간 최종 패킷에 따라 역시 갱신되며, 이에 따라 만일 스톱 비트가 링크된 리스트 실행을 "멈추기" 위하여 사용된다면, 포인터는 링크된 리스트가 재사용가능한 때 링크된 리스트 상의 다음 패킷 전송을 포인팅할 것이다.
제2 워드는 패킷 전송 옵션 필드이다. 이는 PT + 4에 위치된다. 패킷 전송옵션 필드는 데이타가 전송되는 방법으로 다양한 옵션들을 규정하기 위하여 모든 패킷 전송 형태에서 사용된다. 이러한 패킷 전송 옵션 필드가 아래에 상세히 검토될 것이다.
차원화되고 델타-가이드된 패킷 전송에 사용된 제3 및 제4 데이타 워드들은 소스 및 데스티네이션 스타팅 어드레스들이다. 소스 스타트 어드레스는 PT + 8에 위치되고 데스티네이션 어드레스는 PT + 12에 위치된다. 이러한 필드들은 차원화되고 델타-가이드된 패킷 전송에 사용된다. 차원화된 패킷 전송에 대하여 각각의 필드들은 소스나 데스티네이션에 대한 스타팅 바이트 어드레스를 나타내는 32 비트 워드들이다. 델타-가이드된 전송에 대하여는 각각의 필드들은 제1 텔타 오프셋이 소스나 데스티네이션 전송을 위하여 더해지는 스타팅 어드레스를 나타낸다.
오프셋-가이드된 패킷 전송에 사용된 제3 및 제4 데이타 워드들은 소스 및 데스티네이션 오프셋들이다. 소스 스타트 어드레스는 PT + 8에 위치되고 데스티네이션 어드레스는 PT + 12에 위치된다. 이러한 필드들은 오프셋-가이드된 전송 모드들이 사용된 때에 소스 및 데스티네이션 스타트 어드레스를 대체하는 32 비트 오프셋 값들이다.
제5 및 제6 데이타 워드들은 소스 및 데스티네이션 A 및 B 카운트들이다. PT + 16에 있는 제5 데이타 워드는 비트 15 - 0에 있는 소스를 위한 A 카운트와 비트 31 - 16에 있는 소스를 위한 B 카운트를 갖는다. 유사하게, PT + 20에 있는 제6 데이타 워드는 비트 15 - 0에 있는 데스티네이션를 위한 A 카운트와 비트 31 - 16에 있는 데스티네이션을 위한 B 카운트를 갖는다. A 카운트 16 비트 필드는 차원화된또는 고정-패치 전송을 위한 소스 또는 데스티네이션의 제1 차원에 해당하는 곳으로 전송될 바이트의 수를 규정한다. A 카운트 필드는 가변-패치 가이드된 전송에는 사용되지 않는다. 또한, 소스 A 카운트는 필-위드-밸류 패킷 전송에 대해서도 사용되지 않는다. B 카운트 16 비트 필드는 차원화된 또는 고정-패치 전송을 위한 소스 및 데스티네이션의 제2 차원에 해당하는 곳에서 발생되어야 할 "단계"의 수를 규정한다. 이러한 값은 라인 - 1과 같은 값이다. 따라서 0인 값은 제2 차원에는 가능하지 않으며 패치당 1 라인만 전송하는 결과가 된다. B 카운트 필드는 가변-패치 전송 동안 사용되지 않는다. 소스 B 카운트는 필-위드-밸류 패킷 전송 동안 사용되지 않는다.
차원화된 패킷 전송에서 PT +24 및 PT + 28에 위치된 제7 및 제8 데이타 워드들은 각각 소스 및 데스티네이션 C 카운트들이다. 이러한 32 비트 필드들은 소스 또는 데스티네이션의 제3 차원에서의 "패치-단계"의 수를 규정한다. 이러한 값들은 패치의 수 - 1과 같은 값들이다. 따라서, 0인 값은 제3 차원에는 가능하지 않으며 단지 하나의 패치가 전송되는 결과가 된다. 소스 C 카운트 필드는 필 전송을 위해서는 사용되지 않는다.
델타 또는 오프셋-가이드된 패킷 전송에서의 제7 및 제8 데이타 워드들은 엔트리들의 수이다. 이러한 32 비트 필드의 값들은 각각 소스 및 데스티네이션을 위한 가이드 테이블의 엔트리들의 수를 규정한다. 따라서 이러한 필드들은 전송될 정보의 패치 수를 나타낸다. 0의 값은 데이타 전송을 발생치 않는다.
제9 및 제10 데이타 워드들은 각각 PT + 32 및 PT + 36에 위치된다. 차원화된 고정-패치 패킷 전송에서는, 이러한 32 비트 필드들이 소스 및 데스티네이션의 제2 차원의 피치를 규정한다. 이러한 피치 값은 다음 라인의 스타트 어드레스를 얻기 위하여 소스 또는 데스티네이션 라인의 스타트 어드레스에 더해진다. 만일 대응하는 B 카운트 필드에 있는 값이 0이라면, 이러한 필드는 프로그래밍되지 않고 남겨진다.
제11 및 제12 데이타 워드들은 PT + 40 및 PT + 44에 각각 위치된다. 차원화된 패킷 전송에서는 이러한 32 비트 필드들이 소스 또는 데스티네이션의 제3 차원의 피치를 규정한다. 이러한 피치 값은 다음 패치의 스타트 어드레스를 얻기 위하여 소스 또는 데스티네이션 패치의 스타트 어드레스에 더해진다. 만일 해당 C 카운트 필드의 값이 0이라면, 이러한 필드는 프로그래밍되지 않고 남겨질 수 있다.
델타 또는 오프셋-가이드된 패킷 전송에서는, 제11 및 제12 데이타 워드들은 가이드 테이블 어드레스들이다. 이러한 필드들은 각 가이드 테이블의 제1 엔트리를 포인팅하는 정렬된 어드레스로 로드된다. 이러한 워드들의 값은 고정-패치 전송인 경우는 4씩, 가변-패치 전송인 경우는 8씩 엔트리가 가이드 테이블로부터 얻어질 때마다 자동적으로 증가된다. 이러한 가이드 테이블 스타트 어드레스들은 고정-패치 패킷 전송인 경우는 32 비트 워드 어드레스로, 가변-패치 패킷 전송인 경우에는 64 비트 더블-워드 어드레스로 정렬되어야 한다. 잘못된 어드레스 오류 인터럽트는 만일 상기 상태 중 어느 하나가 잘못된 경우 발생할 것이다.
제9 및 제11 데이타 워드는 필-위드-밸류 패킷 전송에서는 특별하게 사용된다. 이러한 2개의 32 비트 필드들 모두는 64 비트 필 패턴을 정의한다. 데스티네이션 더블-워드에 기입되는 상기 바이트들은 필 밸류 더블-워드 내의 해당 바이트들로부터 취해진다. 따라서 만일 필 패턴이 64 비트보다 작다면 데이타 값들은 이러한 2 데이타 워드들 내에 반복되어야 한다. 필-위드-밸류 패킷 전송인 경우 데스티네이션이 차원화된 고정된 또는 가변 패치, 델타 또는 오프셋 가이드될 수 있는 반면에 필 값은 단지 소스에만 허용된다.
만일 패킷 전송이 소스 투과를 사용한다면 제13 및 제14 데이타 워드들은 투과 값을 유지한다. 이러한 64 비트 더블 워드는 PT + 48에서 시작한다. 이러한 64 비트 필드는 투과가 선택된 때 비교될 값을 나타내기 위하여 사용된다. 패킷 전송 옵션 필드의 패킷 엑세스 모드 필드는 투과 크기나 이러한 필드 내에 포함된 값들의 수를 나타낸다. 데스티네이션 더블-워드에 기입되려고 하는 바이트들은 투과 값 내의 해당 바이트들에 대해서 비교되고, 만일 매칭이 이루어진 경우에는 바이트 스트로브들이 인액티브(inactive) 상태로 만들어진다. 만일 픽셀 크기가 64 비트보다 작다면, 데이타 값들이 복사되어야만 한다. 이러한 필드는 블럭 기입을 제외한 모든 비-투과(non-transparency) 전송에 대해서는 사용되지 않는다. 소스 투과 값은 메모리에 기입될 때에 엔디언-모드에 상관없이 전송 제어기(80)에 의하여 사용되고 따라서 워드-스웝(word-swap)이 발생하지 않는다. 이는 제25도에 도시되었다. 패킷 전송 파라메타 테이블 스타팅 어드레스를 따르는 48 바이트를 어드레스하기 위하여 상기 값을 더블-워드 기입으로 기입하는 것에 의하여만 혼동을 피할 수 있다.
만일 패킷 전송이 블럭 기입 모드를 사용한다면, 제13 및 제14 데이타 워드들은 컬러 레지스터 데이타를 유지한다. 64 비트 컬러 레지스터 필드는 블럭 기입사이클을 준비함에 있어서 비디오 랜덤 엑세스 메모리(video random access memory)의 컬러 레지스터를 로드하기 위하여 사용되는 값을 포함한다. 이는 모의 블럭 기입(simulated block write)을 준비할 때도 역시 사용된다. 전송 제어기(80)은 투과 값에 대하여 위에 설명된 바와 같은 방법으로 엔디언 에 상관없이 기입된 때 컬러 레지스터를 정확하게 사용한다. 이는 제29도에 도시되었다. 이러한 필드를 사용하는 것은 아래에 상세히 설명된다.
패킷 전송의 최종 더블-워드를 구성하는 PT + 56에서 스타트하는 제15 및 제16 데이타 워드들은 현재 모든 전송 모드에 대해서 사용되지 않으며 프로그래밍되지 않고 남겨진다. 이러한 데이타 워드들은 멀티프로세서 집적 회로(100)의 장래의 버전(version)에서 사용될 수 있다.
제25도 내지 제29도는 패킷 전송 파라메타 테이블에 대한 약간의 가능 포맷을 도시한다. 제25도는 소스 투과를 갖는 소스 및 데스티네이션 차원화된 패킷 전송을 위한 파라메타 테이블의 예를 도시한다. 투과 워드 0이 PT + 48에 저장되고 투과 워드 1이 PT + 52에 저장된다는 것을 주목해야 한다. 제26도는 필-위드-밸류를 갖는 데스티네이션 차원화된 패킷 전송을 위한 파라메타 테이블의 예를 도시한다. 필 밸류의 최상위 비트들은 PT + 40에 저장된다. 필 밸류의 최하위 비트들은 PT + 32에 저장된다. 제27도는 차원화된 소스 및 고정된 패치 가이드된 데스티네이션 패킷 전송을 위한 파라메타 테이블의 예를 도시한다. PT + 12에 있는 데이타 워드는 베이스 어드레스를 저장하며, PT + 28에 있는 데이타 워드는 가이드 테이블의 엔트리의 수를 저장하고, PT + 44에 있는 데이타 워드는 가이드 테이블의 스타트어드레스를 저장한다는 것을 주목해야 한다. 제28도는 차원화된 소스 밑 가변 패치 가이드된 데스티네이션 패킷을 위한 파라메타 테이블의 예를 도시한다. 보통 PT + 20에 저장된 데스티네이션 A 및 B 카운트들은 이러한 카운트들이 데스티네이션 가이드 테이블의 일부분이기 때문에 프로그래밍되지 않는다. 제29도는 차원화된 블럭 기입 패킷 전송을 위한 파라메타 테이블의 예를 도시한다. PT + 48에서 스타팅하는 더블 데이타 워드가 컬러 레지스터 워드 0 및 1을 포함한다는 것을 주목해야 한다.
패킷 전송 옵션 필드는 소스 밑 데스티네이션 전송에 어떠한 전송 형식이 사용될 것인지를 선택하며 현재의 패킷이 링크된 리스트를 종료시킬 것인지를 결정한다. 그것은 또한 패킷 전송 종료시 추가의 어드레스 계산을 수행하며, 차원 어드레스 계산의 방향을 변경시키고, 또는 소스 및 데스티네이션 전송들을 반대로 만드는 등의 특별한 전송 모드들과 같은 다수의 추가적인 특징들을 선택할 수 있게 만든다. 패킷 전송 옵션 필드의 포맷이 제30도에 도시되었다. 모두 0으로 옵션 필드를 로드하는 것은 특별한 어드레싱 모드를 갖지 않는 소스 및 데스티네이션 상의 차원화된 전송들을 사용하는 디폴트(default) 패킷 전송을 하도록 한다.
패킷 전송 옵션 필드의 비트 1 - 0들은 데스티네이션 갱신 모드 필드를 구성한다. 이러한 2개의 비트들은 일단 패킷 전송이 종료된 후 원래의 패킷 전송 파라메타 테이블에 있는 데스티네이션 스타트 어드레스들이 어떻게 갱신되는가를 나타낸다. 만일 이러한 비트들이 0이 아니라면, 패킷 전송이 종료된 후에 별도의 어드레스 계산이 수행된다. 그 다음으로, 이러한 값은 패킷 전송 파라메타 테이블에 규정된 원래의 데스티네이션 스타트 어드레스 위에 기입된다. 이는 가능한 패킷 전송이 멈춘 곳으로부터 계속되면서 패킷 전송이 다시 제공될 수 있도록 허여한다. 이는 2개의 메모리 영역 사이에서 핑-퐁(ping-pong)을 하는 경우 특히 유용하다.
데스티네이션 갱신 모드들이 표 15에 리스팅되었다. 만일 아래에 설명된 리버스 데스티네이션 C 또는 리버스 데스티네이션 B와 같은 리버스 어드레싱 비트들의 데스티네이션 중 하나가 셋팅된다면, 가산(addition)보다는 감산(subtraction)이 수행된다.
표 15
데스티네이션 갱신 모드는 사용된 제일 큰 차원에 대하여 하나의 별개의 단계를 수행하는데 사용될 수 있으나, 다른 유용한 동작들도 역시 수행될 수 있다. 모드 "10"은 심지어 전송이 단지 2-차원인 경우에도 C 피치를 더하는데 사용될 수 있다. 이는 다음의 2-차원 패킷이 최종의 것에 비교하여 위치될수 있도록 허용한다. 모드 "11"은 온-칩 데이타 메모리와 같은 2개의 1-차원 또는 2-차원 패치들 사이에서 핑-퐁하는 패킷 전송을 다시 요구하는 데 특히 유용하다. 제3 차원을 어드레싱하는 방향이 패킷 전송 파라메타들이 종료될 때마다 갱신되는 시간마다 리버싱되기 때문에, 그것은 메모리 영역에서 번갈아 일어난다.
이러한 기능은 주로 차원화된 전송을 사응하려고 의도되었다. 비록 그것은 가이드된 전송으로 규정될 수 있지만, 데스티네이션 C 피치는 데스티네이션 가이드 테이블 포인터에 의하여 대체된다.
패킷 전송 옵션 필드의 비트 6 - 4들은 데스티네이션 전송 모드 필드를 형성한다. 이러한 3개의 비트들은 데스티네이션 어드레싱에 어떠한 전송 형식이 사용될 것인지를 나타낸다. 코딩들이 표 16에 도시되었다. 소스 특유 모드 룩-업 테이블과 필-위드-밸류들이 데스티네이션 어드레싱을 위하여는 정의(보류)되지 않는다는 점을 주목해야 한다.
표 16
패킷 전송 옵션 필드의 비트 9 - 8들은 소스 갱신 모드 필드를 형성한다. 소스 갱신 모드들이 표 17에 도시되었다. 만일 적절한 소스 리버스 어드레싱 비트 리버스 소스 C 또는 리버스 소스 B가 셋팅되면, 가산보다는 감산이 수행된다.
표 17
이러한 2개의 비트들은 원래의 패킷 전송 파라메타의 소스 스타트 어드레스가 일단 패킷 전송이 종료된 후 어떤 값으로 갱신되어야만 하는 지를 나타낸다. 만일 이러한 비트들이 0이 아니라면, 별도의 소스 어드레스 계산이 패킷 전송 종료 후에 수행된다. 다음으로, 이 값이 패킷 전송 파라메타에 규정된 원래의 소스 스타트 어드레스 위에 기입된다. 이는 패킷 전송이 가능한 한 이전 시간에 중단된 곳으로부터 연속하여 다시 시작될 수 있도록 허여한다. 이는 2개의 메모리 영역 사이의 핑-퐁에 특히 유용하다. 이러한 모드들은 데스티네이션 어드레스 발생에서 이미 설명된 바와 같이 소스 어드레스 발생에서 똑같이 사용된다.
패킷 전송 옵션 필드의 비트 14 - 12들은 소스 전송 모드 필드를 형성한다. 이러한 3개의 비트들은 소스 어드레싱에 어떠한 전송 형식이 사용될 것인지를 나타낸다. 코딩들이 표 18에 도시되었다.
표 18
패킷 전송 옵션 필드의 비트 18 - 16들은 패킷 전송 엑세스 모드 필드를 형성한다. 이러한 3개의 비트들은 표 19에 도시된 바와 같이 특별한 엑세스 모드들을 인코딩(encoding)하기 위하여 사용된다. 이러한 모드들은 소스 테이타가 데스티네이션에 기입되는 방법을 변형시킨다. 온-칩 메모리 데스티네이션에 대하여는, 모드 "000"의 통상 전송만이 허용된다.
표 19
"000"인 코딩은 통상 엑세스 모드 또는 외부 메모리를 위한 페이지 -모드 엑세스를 가능케 한다. 소스 또는 데스티네이션에 특별한 어드레싱 모드들이 사용되지 않는다. 데이타는 변경없이 소스로부터 데스티네이션으로 전송한다.
"001"인 코딩은 주변 장치 전송 모드이다. 주변 장치 모드는 전송 제어기(80)을 메모리 제어기로 사용하여 멀티프로세서 집적 회로(100)의 외부에 있는 다른 장치들이 메모리를 판독하거나 메모리에 기입하도록 허여한다. 메모리의 장치 판독은 소스를 프로그래밍하여 이루어진다. 메모리에 대한 장치 기입은 데스티네이션을 프로그래밍하여 이루어진다. 둘 중의 어느 한 경우, 전송 제어기(80)은 메모리 어드레스를 구동하며 전송 파라메타에 따라서 발생된 어드레스로 라인을 정상적으로 제어하나 데이타 버스를 고임피던스(high impedance) 모드로 두어 이에 따라 주변 장치가 데이타를 판독 또는 구동시킬 수 있도록 한다. 주변 장치 모드는 필-위드-밸류를 제외한 소스 또는 데스티네이션 전송의 어떠한 형태로도 사용될 수 있다.
"010"인 코딩은 패킷 전송이 VRAM 블럭 기입을 사용할 수 있도록 허용한다. 이는 전송 제어기(80)이 VRAM 컬러 레지스터를 로드시키고 그 다음으로 VRAM 블럭 기입 모드를 사용하여 외부 메모리로 데스티네이션을 기입하는 것을 수행하도록 만든다. 이러한 모드에서는, 소스 데이타가 VRAM의 어느 위치가 VRAM 컬러 레지스터 데이타로 기입될 것인지를 규정하는 블럭 기입 어드레스 마스크 비트들을 나타낸다. 이러한 비트들은 통상의 어드레싱을 사용하여 소스로부터 패칭되고 블럭 기입 파라메타를 사용하여 데스티네이션 VRAM에 순차적으로 기입된다. VRAM 컬러 레지스터에 로드된 값은 패킷 전송 파라메타의 컬러 레지스터 값으로 규정된다.
블럭-기입 동작은 오프-칩 데스티네이션에만 지원된다. 온-칩 데스티네이션 어드레스에 블럭-기입하려는 시도는 패킷 전송이 오류 상태로 지연되도록 만든다.
"011"인 코딩은 직렬-레지스터 전송 모드를 가능케 한다. 직렬-레지스터 전송 모드는 VRAM에 대한 벌크(bulk) 초기화를 하는데 전형적으로 사용된다. 소스 어드레스는 VRAM 로우를 VRAM 직렬 쉬프트 레지스터 안으로 복사하는데 사용된다. 한편 데스티네이션 어드레스들은 쉬프트 레지스터를 다수의 VRAM 메모리 로우 안으로 복사하는데 사용된다. 정상적인 동작은 1 바이트의 값으로 소스 A 카운트를 로드시키며, n이 기입될 로우의 수인 경우, 데스티네이션을 1인 A 카운트나 n - 1인 B 카운트로 로드시키는 것이다. 이러한 모드로는 데이타 버스나 크로스바(50)에 대하여 어떠한 데이타 전송도 발생할 수 없고 모든 데이타 전송은 VRAM과 함께 발생한다는 점을 주목해야 한다. 모든 소스 및 데스티네이션 엑세스들은 비-페이지(non-page) 모드일 것이다. 직렬-레지스터 전송 동작은 오프-칩 소스 및 데스티네이션에 대해서만 지원된다.
"1XX" 형태의 코딩들은 투과를 가능케 한다. 소스 및 데스티네이션 차원화 또는 가이드된 전송들은 정규적으로 수행된다. 그러나 데스티네이션 데이타가 기입되기 전에, 데이타는 패킷 전송 파라메타에 주어진 투과 값과 비교된다. 이러한 투과 비교는 투과 및 바이트 기입 회로(353)에서 발생한다. 패킷 엑세스 모드의 2개의 최하위 비트들은 투과 데이타의 크기를 나타낸다. 따라서 하나의 64 비트, 2개의 32 비트, 4개의 16 비트 또는 8개의 8 비트 비교가 행해진다. 만일 어떠한 비교라도 참이라면, 다음으로 투과 및 바이트 기입 회로(353)이 해당 바이트-스트로브를 디스에이블링시켜 이에 따라 데스티네이션 바이트들이 기입되지 않도록 만든다. 온-칩 소스 또는 데스티네이션 어드레스로 투과를 시도하는 것은 패킷 전송이 오류 상태로 지연되도록 만든다.
패킷 전송 옵션 필드의 비트 19는 소스 및 데스티네이션 파라메타 비트의 교환을 뜻한다. 비트 19를 셋팅하는 것은 소스 및 데스티네이션 파라메타를 수동적으로 교환하지 않고 패킷 전송의 방향이 리버싱되도록 허여한다. 이는 데이타가 자신의 원래의 위치로 복귀할 때 유용하다. 교환 비트가 셋팅된 때애는, 전송 제어기(80)이 패킷 전송 파라메타를 로드할 때의 모든 소스 및 데스티네이션 값들, 스타트 어드레스, 피치, 카운트, 가이드 테이블 포인터 및 필 값을 교환시킨다. 표 20은 만일 이러한 비트가 셋팅된다면 발생할 32비트 교환을 도시한다. "PT"가 패킷전송 파라메타 테이블의 다음 엔트리 어드레스를 나타낸다는 점을 주목해야 한다.
표 20
PT에 있는 다음 엔트리 어드레스 데이타와 PT + 04에 있는 패킷 전송 옵션 필드는 이러한 값들이 관련된 소스 또는 데스티네이션이 아니기 때문에 그들의 이전 위치에 남아 있는다는 점을 주목해야 한다. 또한 투과 데이타 또는 컬러 레지스터 데이타를 저장하는 PT + 48 및 PT + 52들은 교환되지 않는다. 이는 64 비트 투과 또는 컬러 레지스터 파라메타가 자신의 값을 유지할 수 있도록 허용한다.
소스 및 데스티네이션 관련 파라메타 워드를 교환하는 것에 덧붙여서, 전송 제어기(80)은 역시 패킷 전송 옵션 필드 안에 있는 소스 및 데스티네이션 관련 비트들을 교환한다. 이는 표 21에 도시되었다.
표 21
만일 스왑 중 어느 것이 지원되지 않는 기능이라면 패킷 전송은 오류 상태로 지연될 것이다. 소스 및 데스티네이션 파라메타의 교환이 패킷 전송 파라메타들이 로드될 때마다 수행된다. 만일 패킷 전송이 지연된다면, 현재의 파라메타들이 요구 프로세서의 파라메타 메모리로 세이빙되기 전에 그들의 원래의 위치로 다시 교환될것이다. 만일 지연된 패킷 전송이 복구된다면, 파라메타들이 전송 제어기(80)에 의하여 그들이 로드될 때 다시 교환될 것이다.
만일 갱신 모드 중의 하나가 패킷 전송 옵션 필드에 규정된다면, 상기 동작이 패킷 전송이 종료된 때 정상적으로 일어날 것이다. 예를 들어 만일 소스 갱신 동작이 선택된다면, 원래의 패킷 전송 파라메타의 소스 스타트 어드레스는 패킷 전송 동안 데스티네이션 스타트 어드레스로 실제 사용되는 경우에도 갱신될 것이다. 마찬가지로, 갱신 모드로서 "토글 리버스 소스 C 어드레싱"을 규정하는 것은 원래의 패킷 전송 옵션 필드의 비트 22를 토글되도록 만드는데 이는 만일 패킷 전송이 다시 제출된다면 데스티네이션 C 어드레싱이 실제적으로 리버싱되도록 만든다.
위의 예가 나타낸 바와 같이 X 비트를 사용할 때에는 주의하여야 한다. 만일 차원화된 데스티네이션 패킷 전송에 필-위드-밸류를 위하여 규정된다면, 예를들어 필-위드-밸류가 데스티네이션 동작으로 규정될 수 없기 때문에 패킷 전송은 오류로 지연된다. 심지어 오류가 생기지 않은 경우에도, 데스티네이션 스타트 어드레스 및 카운트가 전형적으로 프로그래밍되지 않는 소스 값으로 로드될 것이다. 유사하게 필 밸류 워드는 데스티네이션 피치로 로드될 것이다. 이는 매우 무의미한 패킷 전송의 결과가 될 수 있다.
패킷 전송 옵션 필드의 비트 21은 리버스 소스 B 어드레싱 비트이다. 이러한 비트를 "1"로 셋팅시키는 것은 소스의 제2 차원을 뒤로 어드레싱시키게 된다. B 피치는 이전 라인 스타트 어드레스에 더해지기보다는 이전 라인 스타트 어드레스로부터 감산된다. 만일 이러한 비트가 "0"이라면, 패킷 전송 소스 머드레싱이 정상적으로 생긴다.
패킷 전송 옵션 필드의 비트 22가 리버스 소스 C 어드레싱 비트이다. 이러한 비트를 "1"로 셋팅시키는 것은 소스의 제3 차원을 뒤로 어드레싱시키게 된다. C 피치는 이전 패치 스타트 어드레스에 더해지기보다는 이전 패치 스타트 어드레스로부터 감산된다. 만일 이러한 비트가 "0"이라면, 패킷 전송 소스 어드레싱이 정상적으로 생긴다. 이러한 비트가 가이드 테이블을 통하여 C 어드레싱을 규정하는 가이드된 테이블을 위해서는 아무 의미도 갖지 않는다는 것을 주목해야 한다.
패킷 전송 옵션 필드의 비트 23은 리버스 A 어드레싱 비트이다. 이러한 비트를 "1"로 셋팅시키는 것은 소스 및 데스티네이션의 제1 차원을 뒤로 어드레싱시키게 된다. 더블-워드 어드레스는 증가되기보다는 감소된다. 이는 B 피치가 더해질(감산될) 값이 제1 차원의 최상위 어드레스임을 의미한다. 더블-워드 안의 바이트 어드레싱은 리버싱되지 않고 단지 더블-워드 어드레싱만이 리버싱된다는 점을 주목해야 한다.
패킷 전송 옵션 필드의 비트 24는 리버스 데스티네이션 B 어드레싱 비트이다. 이러한 비트를 "1"로 셋팅시키는 것은 데스티네이션의 제2 차원을 뒤로 어드레싱시키게 된다. B 피치는 이전 라인 스타트 어드레스에 더해지기보다는 이전 라인 스타트 어드레스로부터 감산된다. 만일 이러한 비트가 "0"이라면, 패킷 전송 소스 어드레싱이 정상적으로 생긴다.
비트 25는 리버스 데스티네이션 C 어드레싱 비트이다. 이러한 비트를 "1"로 셋팅시키는 것은 데스티네이션의 제3 차원을 뒤로 어드레싱시키게 된다. C 피치는이전 패치 스타트 어드레스에 더해지기보다는 이전 패치 스타트 어드레스로부터 감산된다. 만일 이러한 비트가 "0"이라면, 패킷 전송 소스 어드레싱이 정상적으로 생긴다. 이러한 비트가 가이드 테이블을 통하여 C 어드레싱을 규정하는 가이드된 테이블을 위해서는 아무 의미도 갖지 않는다는 것을 주목해야 한다.
패킷 전송 옵션 필드의 비트 28은 종료된 비트인 경우의 인터럽트 비트이다. 이러한 비트를 "1"로 셋팅시키는 것은 상기 엔트리가 링크된 리스트 상에서 종료되자마자 패킷 전송을 초기화시키는 프로세서로 "정상" 인터럽트가 보내지게 만들 것이다. 링크된 리스트는 엔트리를 더 포함할수 있다. 이는 요구 프로세서를 링크된 리스트의 특정 포인트가 도달한 때에 플래그(flagging)시키도록 허용한다. 만일 이러한 비트가 "0"이라면, 링크된 리스트의 해당 패킷 엔트리가 종료된 때 어떠한 인터럽트도 프로세서로 보내지지 않는다. 따라서 어떠한 인터럽트도 이러한 비트 셋(set)이 부닥치고 종료된 경우나 링크된 리스트의 끝에서의 패킷 전송이 종료된 경우 중 어느 한 경우일 때까지는 보내지지 않는다. 그러나 만일 언제라도 오류가 생긴다면, 전송 제어기(80)은 즉시 요구 프로세서에 오류-인터럽트를 보낼 것이다.
패킷 전송 옵션 필드의 비트 30 - 29들은 패킷 전송 스테이터스 필드를 형성한다. 패킷 전송 스테이터스 필드는 패킷 전송 요구의 상태를 반영한다. 이러한 비트들은 프로세서가 요구를 내놓을 때에는 언제나 "00"으로 셋팅되어야 한다. 만일 링크된 리스트 안에서의 어떠한 패킷 전송이라도 지연된다면, 전송 제어기(80)은 지연된 패킷 전송 영역으로 세이빙하는 패킷 전송 옵션 필드의 적절한 패킷 전송 스테이터스 비트를 셋팅시킬 것이다. 이는 지연된 패킷 전송이 프레쉬(fresh) 패킷전송보다 많은 파라메타를 포함하고 따라서 다르게 세이빙 및 복구되기 때문에 필요하다. 만일 이러한 비트 중 하나가 전송 제어기(80)이 패킷 전송 파라메타를 로드할 때 전송 제어기(80)에 의하여 "1"로 된다면, 패킷 전송은 지연되며, 따라서 모든 별도의 파라메타들이 복구된다는 것을 알아야 한다. 이러한 필드는 표 22에 리스팅된 바와 같이 인코딩된다.
표 22
전송 제어기(80)은 다음 상태중 어느 하나가 발생했기 때문에 패킷 전송이 지연된 때 이러한 비트들을 "01"로 기입한다: 전송 제어기(80)에 의하여 높은 우선순위 패킷 전송 요구가 수신된 때; 패킷 전송이 크고 타임-아웃된 때; 패킷 전송을 요구한 프로세서가 패킷 전송을 지연시킬 것을 요청한 때; 또는 오류 상태가 생긴때. 비트 30은 실질적으로 패킷 전송이 오류 발생으로 인하여 지연되었음을 나타낸다. 한편 비트 29는 오류가 소스 또는 데스티네이션 중 어디에 있는가를 나타낸다. 이러한 정보는 오류 상태를 해결하기 위하여 마스터 프로세서(60)에 의하여 필요된다. 그것은 지연 및 복구 프로세스가 모든 지연된 패킷 전송 형태에 대하여 동일하기 때문에 전송 제어기(80)이 오류 패킷 전송의 파라메타들을 다시 로드할때 전송 제어기(80)에게는 부적절하다.
만일 소스 및 데스티네이션 파라메타 교환 비트(비트 19)가 지연 패킷 전송 옵션 필드에서 "1"이라면 오류 패킷 전송에 대한 비트 29의 의미가 리버싱된다. 따라서 "10"은 데스티네이션 상의 오류를, "11"은 소스 상의 오류를 나타낸다. 따라서 마스터 프로세서(60) 소프트웨어는 오류 어드레스 위치를 결정할 때 비트 29 및 19 둘다를 검사해야 한다.
전송 제어기(80)은 만일 패킷 전송 동안 오류가 생긴다면 여러 동작을 취해야 한다. 전송 제어기(80)은 비트 29 및 30을 적절히 셋팅시킨다. 전송 제어기(80)은 FLTSTS 레지스터에 적절한 비트를 셋팅한다. 전송 제어기(80)은 마스터 프로세서(60)으로 오류 인터럽트를 내놓는다. 만일 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74) 중의 하나가 패킷 전송을 내놓는다면, 이러한 프로세서는 오류가 생겼다는 사실을 모를 것이다. 마스터 프로세서(60)은 오류 상태를 클리어링(clearing)하며 FLTSTS 레지스터의 오류 플래그를 클리어링 한다. FLTSTS 레지스터의 해당 오류 플래그를 클리어링한 때에는, 전송 제어기(80)은 자동적으로 패킷 전송을 다시 내놓는다.
패킷 전송 옵션 필드의 비트 31은 스톱 비트이다. 이러한 비트는 링크된 리스트의 "끝"을 표시하기 의하여 사용된다. 패킷 전송이 이러한 비트가 "1"인 곳을 만나면, 패킷 전송은 완료되고 링크된 리스트는 종료될 것이다. 종료 전, 다음 엔트리 어드레스 필드가 요구 프로세서의 파라메타 메모리 안의 링크된 리스트 스타트 어드레스 위치 안으로 복사된다. 따라서, 만일 링크된 리스트가 다시 사용가능해지면, 링크된 리스트의 다음 엔트리에서 실행이 시작될 것이다. 이는 핑-퐁과 같은 반복된 동작에 특히 유용한 순환하는 링크된 리스트를 발생시키는 것을 허용한다. 스톱 비트는 역시 원하는 위치에서 링크된 리스트를 멈추게하기 위하여 사용될 수 있다.
일단 전송 제어기(80)이 파라메타 테이블로부터 패킷 전송 파라메타들을 판독하면, 데이타를 전송하는 것을 언제라도 시작할 수 있게 된다. 이러한 것을 하기 위하여, 전송 제어기(80)은 크로스바 또는 외부 메모리 엑세스 중의 어느 하나 또는 둘 다를 발생하여야만 한다. 데스티네이션 데이타 흐름 가능성(flow possibility)에 대한 4개의 소스가 있게 된다: 온-칩 대 온-칩; 온-칩 대 오프-칩; 오프-칩 대 온-칩; 오프-칩 대 오프-칩. 뒤의 것은 특별항 경우인데 반하여 앞의 3개들은 "정상적으로" 다루어 진다.
정상 패킷 전송 데이타 흐름 동안, 소스 머신(320)은 전송 파라메타에 근거된 소스 어드레스를 발생시키며 이러한 어드레스를 온-칩 또는 오프-칩 메모리로부터 데이타를 패칭(fetching)하는데 사용한다. 일단 데이타가 크로스바나 외부 메모리 버스로부터 수신되었다면, 요구된 바이트들이 추출되며 소스 정렬 로직(332)에의하여 정렬되고, 그 다음으로 패킷 전송 FIFO 버퍼(311)에 놓여진다. 이와 동시에, 데스티네이션 머신(340)이 데스티네이션 메모리를 위한 어드레스를 역시 발생시킨다. 일단 패킷 전송 FIFO 버퍼(311)이 다음 데스티네이션 메모리 엑세스를 위해 요구된 바이트의 수를 가지면, 데스티네이션 머신(340)은 요구된 크로스바나 외부 메모리 사이클을 발생시킨다.
패킷 전송 FIFO 버퍼(311)은 데이타 흐름을 제어하고 소스 머신(320)을 데스티네이션 머신(340)과 동기 상태로 유지시키는 역할을 맡는다. 만일 어떤 때에라도 패킷 전송 FIFO 버퍼(311)이 다음 데스티네이션 엑세스를 위한 충분한 소스 바이트를 포함하지 않는다면, 데스티네이션 머신(340)은 데이타가 사용가능할 때까지 멈춰진다. 같은 방법으로, 만일 패킷 전송 FIFO 버퍼(311)이 가득차면, 소스 머신(320)은 데스티네미션 머신(340)이 다음 소스 엑세스를 완료하기에 충분한 바이트들을 다 써버릴 때까지 소스 머신(320)은 멈춘다. 이는 소스 전송이 데스티네이션 전송을 과도하게 구동시키는 것을 막는다. 특별한 패킷 전송 엑세스 모드를 위하여, 이러한 데이타 흐름이 약간 수정될 수 있다.
크로스바 및 외부 메모리 인터페이스들이 독립적이기 때문에, 소스 전송은 외부 버스 상에서 생길 수 있으며 데스티네이션 전송은 크로스바 또는 그역으로 병렬적으로 생길 수 있다. 온-칩 대 온-칩 전송에 대하여, 소스 및 데스티네이션이 필요에 따라 크로스바 인터페이스와 인터리브(interleave) 사이클을 공유할 수 있다.
캐시 서비스 요구, 직접 외부 엑세스 요구, 프레임 제어기(90) 요구, 긴급리프레시(urgent refresh), 및 호스트 요구들은 패킷 전송 지연을 야기시키지 않는다. 이러한 요구들은 소스 머신(320) 및 데스티네이션 머신(340) 중 둘다 또는 어느 하나를 중단시킬 수 있으나, 이는 만일 요구가 패킷 전송보다 높은 우선순위를 갖는 경우일 때뿐이다. 프레임 제어기(90) 및 긴급 리프레시 사이클은 단지 외부 메모리 인터페이스만을 사용한다. 따라서 패킷 전송 크로스바 엑세스들은 발생을 계속할 수 있다. 만일 소스 머신(320) 또는 데스티네이션 머신(340)중 어느 하나가 외부 메모리 인터페이스를 사용하고 있다면, 패킷 전송 FIFO 버퍼(311)은 결국에는 꽉 차거나 텅비거나 둘 중 어느 한 상태가 될 것이다. 따라서 크로스바를 사용하는 제어기는 외부 메모리 인터페이스가 다시 사용 가능해질 때까지 멈추어야만 한다. 만일 전송이 온-칩 대 온-칩이면 소스 머신(320) 및 데스티네이션 머신(340) 모두 방해되지 않는 상태가 계속된다. 캐시 및 직접 외부 엑세스 서빙은 크로스바 및 외부 인터페이스 모두를 사용하며, 이에 따라 그들은 전형적으로 그들이 요구하는 사이클 수 동안 어떠한 패킷 전송을 멈추게 만들 것이다.
오프-칩 소스 대 오프-칩 데스티네이션 패킷 전송들은 나머지 다른 세가지 경우의 패킷 전송과는 다르게 처리된다. DRAM 및 VRAM 상의 페이지 모드의 장점을 취하기 위하여, 전송 제어기(80)은 오프-칩 소스로부터 온-칩으로 컬럼 엑세스의 페이지 모드 돌발(burst)을 수행하며, 그다음으로 온-칩으로부터 오프-칩 데스티네이션으로의 또다른 페이지 모드 돌발을 수행한다. 이러한 것은 온-칩 버퍼를 사용하는 것을 요구한다. 각각의 프로세서들은 제15도에 도시된 바와 같이 이러한 목적을 위하여 보류된 자신의 해당 파라메타 메모리에 있는 128-바이트 영역을 갖는다.제15도에 도시된 바와 같이, 마스터 프로세서(60)에 의하여 요구된 오프-칩 대 오프-칩 패킷 전송들은 어드레스가 16진수 "01010100"에서 16진수 "0101017F" 까지를 사용한다, 디지탈 영상/그래픽 프로세서(71, 72, 73 또는 74) 중 어느 하나에 의하여 요구된 오프-칩 대 오프-칩 패킷 전송들은 #이 테이블(3)에 리스팅된 바와 같이 디지탈 영상/그래픽 프로세서 번호에 해당하는 경우 어드레스 16진수 "0100#100" 내지 16진수 "0100#17F"를 사용한다. 이러한 파라메타 메모리 버퍼 안으로 및 버퍼로부터의 데이타 전송은 전송 제어기(80)에 의하여 처리되며 사용자가 알 수 있게 된다.
패킷 전송 파라메타들의 조합은 완료되기 위하여 매우 긴 시간이 걸리는 매우 긴 전송을 규정하는 것을 허용할 수 있다. 또한 높은 패킷 전송 요구가 자신의 파라메타를 훨씬 초과한 로드를 갖는 것을 금지시키는 패킷 전송을 인터럽팅하는 것을 계속한다. 이러한 상황중의 하나가 발생하는 것을 막는 것을 돕기 위하여, 전송 제어기(80)은 제31도에 도시된 패킷 전송 최소 레지스터 PTMIN(511) 및 패킷 전송 최대 레지스터 PTMAX(512)인 2개의 24 비트 레지스터를 포함하는 타이머를 포함한다. 이러한 레지스터들은 패킷 전송의 최소 및 최대 길이를 규정한다. 패킷 전송 카운터 PTCOUNT(513)은 패킷 전송이 실행된 클럭 사이클 수를 나타낸다.
패킷 전송 최소 레지스터 PTMIN(511)은 패킷 전송이 높은 우선순위 패킷 전송 요구에 의하여 인터럽팅될 수 있기 전에 패킷 전송이 실행되어야 할 최소 클럭 사이클 수를 나타내기 위하여 사용된다. 파라메타가 로드된 후에 패킷 전송이 시작할 때, 타이머 시퀀서(515)는 패킷 전송 최소 레지스터 PTMIN(511)에 저장된 값을패킷 전송 카운터 PTCOUNT(513)으로 로드한다. 패킷 전송 카운터 PTCOUNT(513)은 전송 제어기(80)에 의하여 패킷 전송이 능동적으로 제공되고 있는 각각의 클럭 사이클 동안 1만큼씩 감소된다. 패킷 전송 카운터 PTCOUNT(513)은 패킷 전송 과정 동안에 발생할 지도 모르는 캐시-제공, 프레임 제어기(90), 호스트 또는 리프레시 사이클 동안은 감소되지 않으나, 능동 패킷 전송 서비스 동안 일어나는 재시도 또는 대기 상태 동안은 감소된다. 그러나, 그것은 만일 크로스바 패킷 전송 엑세스들이 여전히 발생한다면, 외부 버스 상의 프레임 제어기(90), 호스트, 또는 리프레시 액티브 동안 감소될 것이다. 패킷 전송은 제로 감지기가 PTCOUNT가 0에 도달했음을 타이머 시퀀서(515)에 신호할 때까지 높은 우선순위 패킷 전송 요구에 의하여 인터럽팅될 수 있다. 그러나, 그것은 요구 프로세서에 의하여 지연될 수 있다. 또한 그것은 오류 또는 폴트 상태에 의하여 역시 지연될 수 있다. 패킷 전송 최소 레지스터 PTMIN(511)은 리셋시 16진수 "10000"(65,536사이클)로 로드된다.
패킷 전송 최소 레지스터 PTMIN(511)의 한 중요한 쓰임은 이미 지연된 패킷 전송의 파라메타들을 다른 메모리 영역으로 전송하기 위한 "중지 시킬 수 없는" 패킷 전송을 만드는 것이다. 다른 지연이 데이타가 그로부터 전송되고 있는 파라메타 메모리 영역을 덧기입할 수 있기 때문에, 패킷 전송 최소 레지스터 PTMIN(511)은 패킷 전송이 완료될 수 있음을 확인하기 위하여 사용된다. 이러한 것이 파라메타 메모리 영역이 덧기입되도록 역시 야기 시킬 수 있기 때문에 그와 같은 전송이 잘못된 것이 아니라는 사실이 중요한다. 이러한 특색은 높은 우선순위 메모리 엑세스가 최소의 시간 기간 전에 패킷 전송을 멈추는 것을 방지하며, 결과적으로 최소의데이타 전송이 일어난다.
패킷 전송 최대 레지스터 PTMAX(512)는 한 패킷 전송이 데이타의 전송을 독점하는 것을 방지하기 위하여 사용된다. 일단 PTMIN 시간이 경과되고 패킷 전송 카운터 PTCOUNT(513)이 제로 감지기(514)에 의하여 감지된 때 0으로 감소되면, 타이머 시퀀서(515)는 패킷 전송 최대 레지스터 PTMAX(512)에 저장된 값을 패킷 전송 카운터 PTCOUNT(513)으로 로드한다. 이는 트래스퍼가 타임 아웃되기 전에 진행될 수 있는 시간의 남은 기간을 정의한다. 따라서 패킷 전송을 인터럽팅하기 위한 최대 지속기간은 PTMIN + PTMAX 클럭 사이클이 된다. 패킷 전송 카운터 PTCOUNT(513)은 패킷 전송이 리프레시와 같은 비-패킷 전송에 대한 능동적 배제를 계속하는 각각의 사이클 동안 감소된다. 만일 제로 감지기(514)가 패킷 전송 카운터 PTCOUNT(513)의 값이 패킷 전송 완료전에 0에 도달한 것을 감지한다면, 패킷 전송은 타임 아웃된 것으로 간주된다. 타이머 시퀀서(515)는 패킷 전송을 지연시키며, 전송 제어기(80)은 라운드 로빈에서의 같은 우선순위의 다음 요구 상으로 이동한다. 만일 같은 우선순위의 다른 요구들이 절박(pending)하지 않다면, 패킷 전송은 같은 우선순위 요구 또는 높은 우선순위 요구가 발생할 때까지, 또는 전송이 완료될 때까지 0인 PTCOUNT를 계속 유지시킬 수 있다. 만일 높은 우선순위 패킷 전송 요구가 패킷 전송 최소 레지스터 PTMIN(511)에 규정된 수의 사이클이 경과된 후 수신된다면, 능동 패킷 전송은 PTMAX가 도달되었는지에 상관없이 지연될 것이다. 패킷 전송 최대 레지스터 PTMAX(512)는 리셋시 16진수 "10000"(65,536 사이클)로 로드된다.
PTMIN 및 PTMAX 값들이 패킷 전송이 로드된 때마다 인가된다. 따라서 그들은 링크된 리스트 안에 있는 각각의 패킷 전송으로 인가된다. 만일 패킷 전송이 지연된다면, 전체의 링크된 리스트가 지연된다. 라운드 로빈 토큰은 링크된 리스트 안의 다음 패킷 전송으로 진행하는 것이 아니라 절박한 요구를 갖는 다음의 프로세서로 진행한다. 패킷 전송이 타임 아웃된 때, 지연된 전송의 상태는 요구 프로세서의 파라메타 메모리로 세이빙된다. 전송 제어기(80)은 자동적으로 라운드 로빈 우선순위가 상기 프로세서로 복귀된 때 계속을 위한 이러한 요구를 다시 내놓는다. 지연된 패킷 전송이 다시 시작된 때에는, 꽉찬 PTMIN 및 PTMAX 값들이 효과를 나타낼 것이다.
양호한 실시예에서는 패킷 전송 최소 레지스터 PTMIN(511)과 최대 레지스터 PTMAX(512)들은 단지 24 비트들을 포함한다. 따라서 패킷 전송 서비스가 타임 아웃 없이 계속될 수 있는 최대 시간은 50 MHz의 타깃 동작 주파수(target operation frequency)인 경우 거의 0.67 초가 된다.
패킷 전송 링크된 리스트들은 전송 제어기(80)에 의하여 다음과 같이 운영된다. 만일 리프레시, 프레임 제어기(90), 호스트 인터페이스 또는 캐시 서비스 요구가 긴급 우선순위와는 다른 패킷 전송동안 수신된다면, 패킷 전송 파라메타들의 상태가 전송 제어기(80)의 내부 레지스터들 안에 들어있게 되고, 만일 필요하다면 소스 및/또는 데스티네이션 전송이 멈춰질 것이다. 높은 우선순위 요구들이 제공된다면, 패킷 전송은 다시 시작될 것이다.
만일 패킷 전송이 높은 우선순위 패킷 전송 요구, 타임-아웃, 요구 프로세서로부터의 지연 요구, 폴트 또는 오류에 의하여 인터럽팅된다면, 패킷 전송은 지연된다. 요구 프로세서의 파라메타 메모리 내의 링크된 리스트 스타트 어드레스가 세이빙된 패킷 전송 파라메타들을 포인팅하기 위하여 변경된다. 만일 이러한 인터럽션이 높은 우선순위 패킷 전송에 의한 것이라면, 라운드 로빈 토큰은 인터럽팅된 패킷 전송으로 멈추게 되며, 이에 따라 낮은 우선순위 레벨이 다시 시작된 때에 자신의 서비스가 다시 시작되게 된다. 만일 높은 우선순위 요구가 패킷 전송 파라메타들이 로드되는 동안 생긴다면, 로드은 중단될 것이다. 어떠한 지연도 생기지 않는다. 패킷 전송 파라메타들이 높은 우선순위 패킷 전송이 완료된 때에 원래의 파라메타 리스트로부터 로드될 것이다. 만일 패킷 전송이 타임-아웃, 폴트, 오류 또는 지연 요구 등 때문에 지연된다면, 라운드 로빈 토큰이 인터럽팅된 패킷 전송을 우선순위화 체인(prioritization chain)의 끝에 위치시키는 단계로 진행한다.
패킷 전송이 완료되고 패킷 전송 옵션 필드의 인터럽트 비트가 "1"인 때에는, 전송 제어기(80)은 요구 프로세서에게 "패킷 종료" 인터럽트를 내놓는다. 링크된 리스트 안에서 "1"인 패킷 전송 옵션 필드의 스톱 비트를 갖는 최종 패킷 전송이 완료된 때에는, 전송 제어기(80)은 요구 프로세서에게 "패킷 종료" 인터럽트를 내놓는다. 패킷 전송이 완료된 때, 패킷 전송 파라메타로부터 다음-어드레스 필드가 심지어 패킷 전송의 패킷 전송 옵션 필드 스톱 비트가 셋팅된 경우에도 요구 프로세서의 파라메타 메모리 안의 링크된 리스트 스타트 어드레스 위치로 기입된다.
패킷 전송 파라메타들이 로드된 때, 전송 제어기(80)은 패킷 전송 옵션 필드의 패킷 전송 스테이터스 비트들을 체킹한다. 만일 이러한 비트들이 패킷 전송이지연되었음을 나타낸다면, 지연된 전송에 대한 추가 상태 정보들이 로드된다. 이러한 것들이 아래에 더 설명된 것이다.
만일 패킷 전송이 오류 상태에 빠진다면, 전송 제어기(80)은 즉시 데이타를 전송시키는 것을 중단하며 지연을 수행한다. 전송 제어기(80)은 요구 프로세서의 PTERROR 플래그를 셋팅시킨다. 또한 전송 제어기(80)은 링크된 리스트가 종료되었음을 나타내기 위하여 요구 프로세서의 COMM 레지스터(120)의 Q 비트를 셋팅시킨다. 요구 프로세서는 세이빙된 데이타들로부터 오류의 원인을 판정하기 위하여 프로그래밍될 수 있다.
어떤 수의 상태들도 패킷 전송 동안 오류의 원인일 수 있다. 블럭 기입 데스티네이션 전송 또는 온-칩 메모리 안에 소스 또는 데스티네이션을 갖는 직렬 레지스터 전송과 같은 시도된 VRAM 엑세스 모드는 오류를 야기시킬 수 있다. 투과를 사용하는 시도된 온-칩 데스티네이션 엑세스가 오류의 원인일 수 있다. 오류는 패킷 전송 요구의 데스티네이션 전송의 총 바이트의 길이가 필-위드-밸류, 쉬프트 레지스터 전송 또는 주변 장치 전송의 경우를 제외하고 자신의 소스 전송의 길이보다 길 때에 생길 것이다. 오류는 룩-업 테이블 데스티네이션 동작이 시도된 때 생길 것이다. 이는 "소스 및 데스티네이션 파라메타 교환" 동작으로부터 생기는 결과일 수 있다. 오류는 링크된 리스트 스타트 어드레스 또는 링크된 리스트의 다음 엔트리가 오프-칩 어드레스를 포인팅할 때에 생길 것이다. 오류는 패킷 전송 파라메타 테이블 및 링크된 리스트 스타트 어드레스가 64-바이트 경계로 정렬되지 않은 때에 생길 것이다. 오류는 소스 또는 데스티네이션 가이드 테이블 포인터가 오프-칩 메모리를 포인팅하거나 적절히 정렬되지 않은 때에 시도된 패킷 요구 상에서 생긴다. 실제의 오류 상태를 나타내기 위하여는 어떠한 스테이터스 비트들도 세이빙되지 않으며, 이는 지연된 파라메타의 상태로부터 추론되어야 한다.
링크된 리스트 스타트 어드레스 또는 링크된 리스트 어드레스 오프-칩의 다음 엔트리, 잘못 정렬된 패킷 전송 파라메타 테이블 또는 오프-칩 메모리에 대한 또는 잘못 정렬된 것에 대한 가이드 테이블 포인터들로 인해 야기된 오류는 요구 프로세서의 파라메타 메모리의 지연 영역으로 패킷 전송 파라메타를 세이브하지 못하게 할 것이다. 이는 패킷 전송이 어떠한 데이타를 전송시키기 전에 포기하거나 결코 실제적으로 시작하지 않기 때문이다. 따라서, 오류의 원인을 진단하려고 시도할 때에는, 링크된 리스트의 유효성이 지연된 파라메타들이 유효한 것들인지를 확인하기 위하여 반드시 체킹되어야 한다.
전송 제어기(80)은 다수의 상태에서 패킷 전송을 지연시킬 것이다. 높은 우선순위 패킷 전송 요구를 접수한 때에, 전송 제어기(80)은 만일 현재의 패킷 전송을 위해 PTMIN에 규정된 수의 사이클이 끝났다면 패킷 전송을 지연시킬 것이다. 전송 제어기(80)은 만일 사이클의 수가 PTMIN + PTMAX와 타임-아웃을 초과하며 다른 프로세서로부터 같은 우선순위의 패킷 전송 요구가 처리되어야 한다면 패킷 전송을 지연시킬 것이다. 전송 제어기(80)은 만일 요구 프로세서가 자신의 COMM 레지스터(120)의 S 비트를 통하여 패킷 전송을 지연시킬 것을 요구한다면 패킷 전송을 지연시킬 것이다. 전송 제어기(80)은 만일 소스 어드레싱이나 데스티네이션 어드레싱 동안에 메모리 폴트가 발생한다면 패킷 전송을 지연시킬 것이다. 전송 제어기(80)은 만일 오류 상태가 감지된다면 패킷 전송을 지연시킬 것이다. 전송 제어기(80)은 만일 외부 메모리 엑세스 동안 재시도가 생기고 다른 프로세서로부터의 같은 우선순위의 패킷 전송 요구가 대기 중이며 현재의 패킷 전송을 위해 PTMIN 내에 규정된 수의 사이클이 끝났다면 패킷 전송을 지연시킬 것이다.
이러한 경우의 각각에서의 지연 메카니즘은 동일하다. 전송 제어기(80)은 현재의 패킷 전송 파라메타들을 세이빙하며 전송 제어기(80)의 내부 상태를 세이빙한다. 이러한 정보는 장래에 패킷 전송이 계속될 수 있도록 허용한다. 파라메타들은 요구 프로세서의 파라메타 메모리의 지연 영역에 저장된다. 제15도에서 도시된 바와 같이, 만일 마스터 프로세서(60)이 패킷 전송을 요구했다면 이러한 영역은 16진수"01010000" 내지 16진수 "0101007F"까지이다. 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 중의 어느 하나에 의하여 요구된 패킷 전송을 위해 지연된 패킷 파라메타들은 #이 테이블(3)에 리스팅된 바와 같이 디지탈 영상/그래픽 프로세서 번호에 해당하는 경우 어드레스 16진수 "0100#000" 내지 "0100#07F'"까지를 사용한다. 이러한 파라메타들을 위한 포맷이 제32도 및 제33도에 도시되었다. 제32도에서 "%"로 표시된 더블-워드들이 현재의 엔디언에 맞추어진 것이 아니라는 점을 주목하여야 한다.
지연은 지연 조건이 생긴 후 즉시 시작되며 어떠 절박한 외부 메모리 컬럼 엑세스들도 완료된다. 요구 프로세서의 파라메타 메모리 상의 외부-대-외부 버퍼는 비워지지 않으나 패킷 전송 FIFO 버퍼(311)의 현재 상태는 세이빙된다. 이러한 구조는 원인에 상관없이 일정한 방법으로 패킷 전송이 지연되도록 허용한다. 또한 패킷 전송 FIFO 버퍼(311)이 텅빈 상태가 발생하지 않기 때문에 역시 확실히 신속하게 이루어질 것이다. 따라서 긴급 우선순위 패킷 전송 요구는 패킷 전송 FIFO 버퍼(311)을 비우기 위하여 내부적으로 느린 패킷 전송을 대기하지 않고 신속하게 제공될 수 있다.
파라메타 메모리 안으로의 지연은 만일 지연의 원인이 높은 우선순위 대기 요구라면 전송 제어기(80) 크로스바 우선순위 레벨에서 수행된다. 따라서 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 또는 마스터 제어기(60)은 지연이 완료될 때까지 일시적인 내용들을 경험한다. 지연이 타임-아웃, 폴트, 오류 또는 요구 프로세서로부터의 지연 요구에 기인된 때에는, 패킷 전송의 원래 전송 제어기(80) 크로스바 우선순위로 수행될 것이다.
지연된 패킷 전송 파라메타들은 다른 곳에서 복사될 수 있으며 만일 링크된 리스트 스타트 어드레스 포인터가 새로운 어드레스를 포인팅하기 위하여 변형되었다면 그들의 새로운 위치로부터 재제출될 수 있다. 패킷 전송 옵션 필드의 패킷 전송 스테이터스 비트들이 패킷 전송이 지연되었음을 나타내기 때문에, 지연 파라메타들의 전체 집합이 그들이 위치한 위치에 상관없이 재제출된 즉시 로드될 것이다. 지연된 파라메타의 새로운 스타팅 어드레스는 128 바이트 경계인 경우에도 정렬되어야 하며 따라서 7개의 최하위 어드레스 비트들은 지연된 패킷 전송이 재제출되기 위하여서는 "0000000"이여야 한다.
패킷 전송 지연 영역으로 세이빙된 처음의 8개의 64 비트 더블-워드들은 "정상" 패킷 전송 파라메타들을 나타낸다. 이러한 것들은 약간을 제외하고는 사용자에의하여 프로그래밍된 것과 같은 파라메타들이다. 처음의 32 비트 워드는 링크된 리스트 상의 다음 엔트리 어드레스라기보다는 지연된 패킷 전송의 원래의 엔트리 어드레스를 포함한다. C 카운트 필드들은 차원화된 전송을 위한 현재의 C 카운트들을 포함한다. 가이드된 전송에 대해서는, C 카운트 필드들이 가이드 카운트들과 가이드 테이블 포인터의 현재의 값을 갖는 가이드 테이블 포인터를 가질 것이다. 또한, 패킷 전송 옵션 필드는 파라메타들이 지연된 패킷 전송을 나타낸다는 사실을 반영하기 위하여 변형된 자신의 패킷 전송 스테이터스 필드를 갖는다.
"정상"의 경우에 추가하여, 사용자 프로그래밍된 패킷 전송 파라메타의 경우는 지연 영역이 역시 8개의 반전된 "내부 상태" 더블 워드들을 갖는다. 이러한 필드들은 지연된 패킷 전송이 다시 스타트될 때에 자동적으로 로드되는 필드들이다. 그들은 지연된 때의 패킷 전송의 차원 상호간에 대한 정보를 갖는다. 이러한 값들은 지연된 패킷 전송이 재제출된 때에 중단된 곳에서 정확히 시작할 수 있도록 세이빙된다. 16진수 "040"의 어드레스 끝의 데이타 워드는 현재의 소스 A 및 B 카운트를 저장한다. 이러한 것들은 소스 머신(320)의 ACURRENT 및 BCURRENT로부터의 16 비트 크기의 양이다. B 카운트는 비트 31 - 16에 저장되며 A 카운트는 비트 15 - 0에 저장된다. 16진수 "044"의 어드레스 끝의 데이타 워드는 현재 데스티네이션 A 및 B 카운트들을 저장한다. 이러한 것들은 데스티네이션 머신(340)의 ACURRENT 및 BCURRENT 레지스터로부터의 16 비트 크기의 양들이다. B 카운트는 비트 31 - 16에 저장되며 A 카운트는 비트 15 - 0에 저장된다. 16진수 "048"의 어드레스 끝의 데이타 워드는 현재 소스 A 스타트 어드레스 또는 현재 가이드 테이블 어드레스이다.지연된 패킷 서비스 파라메타의 해당 P 비트는 이곳에 어떤 테이타가 저장될 것인지를 나타낸다. 기이딩된 테이블 페치는 원래의 B 카운트가 0에 도달할 때까지 일어나지 않으며, 따라서 가이드된 패킷 전송조차도 소스 A 스타트 어드레스를 이곳에 저장시킬 수 있다는 점을 주목해야 한다. 16진수 "04C"의 어드레스 끝의 데이타 워드는 현재의 데스티네이션 A 스타트 어드레스 또는 현재의 가이드 테이블 패칭된, 지연된 패킷 서비스 파라메타들의 해당 P 비트에 의하여 결정된 동일성을 갖는 값이다. 16진수 "050" 및 "056"의 어드레스들의 끝의 데이타 워드들은 각각 현재의 데스티네이션 B 스타트 어드레스 또는 해당 가이드 테이블 패칭된 값들이다.
16진수 "058"의 어드레싱 끝에서 스타팅하는 64 비트 더블 워드는 지연된 패킷 서비스 파라메타들을 저장한다. 지연된 패킷 서비스 파라메타들의 포맷이 제32도 및 제33도에 도시되었다. 상위(upper) 데이타 워드의 비트 31 - 30들은 P 비트들이다. 비트 31의 "1"은 지연된 패킷 전송 파라메타들이 가이드 테이블로부터 패칭된 소스 머신(320)의 ASTSRT 레지스터 및 BSTSRT 레지스터 값을 저장한다는 것을 나타낸다. 만일 그렇지 않다면, 이러한 레지스터들은 차원화된 전송으로부터 값들을 저장한다. 마찬가지로, 비트 30의 "1"은 지연된 패킷 전송 파라메타들이 가이드 테이블로부터 패칭된 소스 머신(320)의 ASTSRT 레지스터 및 BSTART 레지스터 값들을 저장한다는 것을 나타내며, "0"은 이러한 값들이 차원화된 전송으로부터 패칭되었음을 나타낸다. 만일 지연된 패킷 전송이 가이드된 소스 또는 데스티네이션 어드레싱을 포함한다는 것을 패킷 전송 옵션 필드가 나타낸다면, 이러한 비트들만이 의미를 갖는다는 것을 명심하여야 한다. 만일 그렇지 않다면, 데이타가 차원화된 전송 형태일 것으로 가정된다.
E 비트(상위 데이타 워드의 비트 29)는 지연된 패킷 전송이 오프-칩 대 오프-칩 패킷 전송인지를 나타낸다. 그와 같은 오프-칩 대 오프-칩 패킷 전송은 요구 프로세서의 파라메타 메모리 안의 버퍼를 사용한다. 만일 이러한 E 비트가 "1"이라면, 지연된 패킷 전송은 오프-칩 대 오프-칩 패킷 전송이다. 만일 이러한 E 비트가 "0"이라면, 지연된 패킷 전송은 3개의 다른 형태 중의 어느 하나이며 요구 프로세서의 파라메타 메모리는 어떠한 외부-대-외부 버퍼링된 데이타도 저장하지 않는다.
S 비트(상단 데이타 워드의 비트 28)은 파라메타 메모리 외부-대-외부 버퍼가 소스 머신(320) 또는 데스티네이션 머신(340)에 의하여 엑세스 되고 있는가를 나타낸다. 이러한 S 비트는 단지 만일 E 비트가 요구 프로세서의 파라메타 메모리의 외부-대-외부 버퍼링된 데이타의 저장을 나타내는 "1"인 경우에만 의미가 있게 된다. 만일 S 비트가 "1"이면, 패킷 전송이 지연된 때 소스 머신(320)이 외부-대-외부 버퍼를 억세싱하고 있는 것이다. 만일 S 비트가 "0"이면, 데스티네이션 제어기가 외부-대-외부 버퍼를 억세싱하고 있게 된다.
상위 데이타 워드의 비트 20 - 16들은 BUFPTR 레지스터(414)의 값을 저장한다. BUFPTR 레지스터(414)는 파라메타 메모리 외부-대-외부 버퍼 안으로 포인팅하는 포인터이다. 이러한 포인터를 저장하는 것은 파라메타 메모리 외부-대-외부 버퍼의 스테이터스를 복구함으로써 외부-대-외부 패킷 전송을 다시 시작하는 것을 허용한다. 물론, 만일 지연된 패킷 전송이 외부-대-외부 패킷 전송였다면 이러한 필드만이 의미를 갖게된다.
상위 데이타 워드의 비트 14 - 8들은 BUFCOUNT 레지스터(441)을 저장한다. BUFCOUNT 레지스터(441) 값은 S 비트의 스테이터스에 근거하여 해석된다. 만일 S 비트가 파라메타 메모리 외부-대-외부 버퍼에 대한 소스 억세싱을 지연하는 것을 나타내는 "1"이라면, BUFCOUNT 레지스터(441)은 버퍼에 남아 있는 바이트의 수를 나타낸다. 만일 S 비트가 파라메타 메모리 외부-대-외부 버퍼에 대한 지연된 데스티네이션 억세싱을 나타내는 "0"이라면, BUFCOUNT 레지스터(441)은 버퍼에 저장된 바이트의 수를 나타낸다. 이러한 필드는 지연된 외부-대-외부 패킷 전송에 대해서만 의미를 갖는다.
상위 데이타 워드의 비트 3 - 0들은 FCOUNT들이다. 이것은 패킷 전송 FIFO 버퍼(311)에 현재 유지된 데이타의 바이트 수이다.
지연된 패킷 서비스 파라메타의 하위 데이타 워드는 2개의 FIFO 포인터들을 갖는다. 하위 데이타 워드의 비트 11 - 8은 FDPTR 데스티네이션 포인터를 저장한다. 하위 데이타 워드의 비트 3 - 0들은 FSPTR 소스 포인터를 저장한다. 이러한 포인터들은 지연된 장소에서 지연된 패킷 전송의 시작을 허용한다.
16진수 "060"으로 끝나는 어드레스에서 시작하는 4개의 데이타 워드들은 패킷 전송 FIFO 버퍼(311)의 내용을 저장한다. 패킷 전송 FIFO 버퍼(311)을 비우는 것을 요구하기 보다는 이러한 데이타를 저장하는 것에 의하여, 높은 우선순위 패킷 전송이 먼저 스타팅할 수 있다. 16진수 "070"으로 끝나는 어드레스에서 스타팅하는 4개의 데이타 워드들이 장래에 사용되어야만 하는 더 큰 버퍼와 같은 큰 패킷 전송FIFO 버퍼의 내용을 저장하는 것을 지원하기 위하여 보류된다.
전송 제어기(80)은 다수의 비-표준 패킷 전송 엑세스 모드를 지원한다. 이러한 것들은 블럭-기입, 직렬 레지스터 전송, 투과 및 주변 장치 전송들을 포함한다. 이러한 비-표준 패킷 전송 엑세스 모드들은 패킷 전송 파라메타들의 패킷 전송 옵션 필드를 통하여 가능해 진다.
패킷 전송 파라메타의 패캣 엑세스 모드가 "010"인 때에는, 블럭-기입 패킷 엑세스 모드가 가능하다. 전송 제어기(80)은 3개의 다른 블랙-기입 메카니즘을 지원한다: "8x", "4x" 및 "시뮬레이티드(simulated)". 시스템 하드웨어는 블럭-기입이 시작하는 시간에 블럭-기입 메카니즘을 결정한다. 이는 어떠한 형태의 블럭-기입을 시스템이 사용하는 지 또는 어드레싱된 메모리가 그것을 지원하는 지 또는 지원하지 않는지에 상관없이 소프트웨어가 블럭-기입을 사용하도록 허용한다. 그러나, 각각의 블럭-기입 모드들은 단지 64 비트 버스 및 8 비트 값(1 내지 8 확장)에 대해서만 지원된다. 블럭-기입을 위한 데스티네이션 스타트 어드레스는 오프-칩 상태여야 하며 정렬된 64 비트여야 하는데, 이는 즉 6개의 최하위 어드레스 비트들이 "000000"이어야 한다는 말이다.
전송 제어기(80)에 의하여 사용된 블럭-기입 모드는 외부 메모리에 의하여 멀티프로세서 집적 회로(100)의 BS[1:0] 상에 입력된 값에 의하여 선택된다. 양호한 실시예에서는 블럭-기입이 64비트 데이타 버스만을 위하여 지원되며, 따라서 이러한 버스 크기 입력들이 블럭-기입 및 컬러 레지스터 로드 사이클 동안 블럭-기입 선택들로서 사용된다. 표(23)은 BS[1:0]에 위하여 선택된 블럭-기입 모드들을 도시한다.
표 23
다양한 VRAM 크기 및 구조 때문에, 다수의 다른 블럭-기입 방법들이 존재한다. 다음의 표기법이 다양한 블럭-기입 방법들을 표현하기 위하여 사용된다: C x L x R; C는 컬러 레지스터당 컬럼 위치들의 수, L은 컬러 레지스터의 비트로의 길이 및 R이 컬러 레지스터의 수인 경우, 예를 들어, 대부분의 1 M 비트 VRAM들은 256 K 비트 x 4 비트 데이타 어레이를 갖으며 4 x 4 x 1 블럭-기입을 지원한다. 그들은 하나의 4 비트 컬러 레지스터를 가지며 각각의 블럭-기입 사이클은 각각의 4 메모리 어레이 평면 상의 4 인접 컬럼 위치로 컬러 레지스터를 기입하는 것을 제어한다.
8x 블럭-기입 모드는 엑세스 마다 8개의 컬럼 위치(즉, 위치당 8개 비트들로 8x8x1 또는 8x8x2)를 기입할 수 있는 VRAM에 사용되도록 의도되었다. 소스 데이타의 각각의 비트들은 데이타 버스 D[63:0] 상의 한 비트로의 출력이며, 사이클로 억세싱된 64 컬럼들 중 어느 하나에 8 비트 VRAM 컬러레지스터의 내용을 기록하는 것을 가능하게 하거나 가능하지 못하도록 만들 수 있다. 각각의 컬럼들은 각각의 VRAM 안의 8개의 메모리 어레이 평면 상의 각각에 있는 컬럼 위치들을 나타낸다. 따라서 컬러레지스터 데이타의 64 바이트 까지 단 한번의 엑세스 내에 기입될 수 있다.
8x 블럭-기입을 지원하는 비디오 RAM들은 블럭-기입 사이클 동안 3개의 최하위 컬럼 어드레스들을 무시한다. 따라서, 데이타 버스가 64 비트(8 바이트) 크기이기 때문에 블럭 기입 사이클들은 언제나 64 바이트 경계들에서 시작된다. 정렬된 64-바이트가 아닌 데스티네이션 어드레스인 경우, 전송 제어기(80)은 소스 비트들을 정렬시키며 기입되고 있지 않은 64 바이트 엑세스 내의 위치에 대한 "잃어버린 0들"을 제공한다. 다음으로 전송 제어기(80)은 데이타 버스 상의 각각의 VRAM들 안에 적절한 컬럼 위치들을 어드레싱 할 수 있도록 비트들을 다시 맵핑한다.
제34도는 리틀 엔디언 모드에서의 8x 블럭-기입을 위한 데이타 재맵핑 프로세스이다. 처음의 8개의 소스 비트들은 데스티네이션의 처음 8개 바이트들을 제어한다. 이러한 바이트들은 억세싱되고 있는 8-평면 VRAM 어레이들의 각각에 있는 실제적으로 최하위 컬럼 위치들이다. 최하위 바이트는 블럭-기입 동안 VRAM의 16 비트 VRAM들을 위한 D0 입력들 및 D8 입력들에 의하여 제어되기 때문에, 소스 비트 0 - 7들은 각각 데이타 버스의 0, 8, 16, 24, 32, 40, 48 및 56 비트들로 맵핑되며, 이는 억세싱된 VRAM들의 D0 입력(16 비트 장치인 경우는 D0 및 D8 입력들)을 나타낸다. 소스 비트들의 나머지들은 유사한 방법으로 맵핑된다. 전송 제어기(80)은 빅 엔디언 8x 블럭-기입을 위하여 유사한 맵핑을 한다. 빅 엔디언 모드에서는, 소스 영상의 최하위 비트가 가장 왼쪽의 비트이며 최상위 비트는 가장 우측의 비트라는 것을 주목하여야 한다. 맵핑 메카니즘이 리틀 엔디언의 경우 사용된 것과 같기 때문에, 소스 비트 0 - 7들이 각각 비트 63, 55, 47, 39, 31, 23, 15 및 7로 맵핑된다. 이러한 비트들은 VRAM에서 억세싱되고 있는 최하위 컬럼 위치를 나타낸다. 이러한 비트들이 VRAM의 D0 입력(16 비트 장치인 경우는 D0 및 D8 입력들)에 의하여 제어되기 때문에, 데이타 버스는 블럭-기입을 올바르게 동작하기 위하여서는 반전된 순서로 VRAM들에 접속되어야 한다.
반전된 순서로 데이타 버스를 접속하는 것은 데이타가 반전된 순서에 따라 기입 및 판독 모두가 되어지기 때문에 정상 판독 및 기입에는 영향이 없다. 사용자는 VRAM의 직렬 포트에서부터 또는 직렬 포트로 쉬프팅된 비트들 역시 반전된 순서에 따른다는 것을 인식해야 한다. 이러한 경우 적절한 동작을 위하여는 출력 또는 입력 장치에 접속된 때 직렬 데이타 버스 순서가 반전될 필요가 있다.
4x 블럭-기입 모드는 엑세스 마다 4개의 컬럼 위치, 즉, 4x4x1, 4x4x4, 4x8x1, 4x8x2를 위치마다 4 또는 8 비트 중의 하나로 기입 할 수 있는 VRAM들에 사용하기 위하여 설계된다. 4x4 블럭-기입의 경우, 소스 데이타의 각각의 비트들은 데이타 버스 D[63:0] 상의 2개의 비트로 출력되며 사이클에 의하여 억세싱된 64개의 컬럼 중 2개로 4 비트 VRAM 컬러 레지스터의 2개를 기입하는 것을 가능하게 또는 가능하지 않게 만든다. 각각의 컬럼들은 어레이의 4개 평면 상의 컬럼 위치를나타내다. 각각의 컬러 레지스터들이 단지 4 비트 크기이기 때문에, 8 비트 픽셀을 나타내기 위하여는 2개의 레지스터들이 필요하다. 따라서 각각의 소스 비트들은 8비트 기입이 생길 수 있도록 인접한 니블(nibble)에 기입하는 2개의 컬러 레지스터들을 제어하여야 한다. 이는 단 한번의 엑세스로 컬러 레지스터 데이타의 32 바이트까지 기입될 수 있도록 허용한다.
4x 블럭-기입을 지원하는 비디오 RAM들은 블럭-기입 사이클 동안 2개의 최하위 컬럼 어드레스들을 무시한다. 따라서, 블럭-기입들은 어제나 32-바이트 경계 상에서 시작된다. 8x 블럭-기입에서와 같이, 전송 제어기(80)은 32-바이트 블럭 안의 데스티네이션 스타트 어드레스에 의하여 규정된 더블-워드에 소스 데이타를 정렬시키며 기입되어 있지 않은 더블-워드에 대한 "잃어버린 0들"을 채운다.
제35도는 리틀 엔디언 모드에서의 4x 블럭-기입을 위한 데이타 재맵핑 프로세스를 도시한다. 처음의 8개의 소스 비트들은 데스티네이션의 처음 8개의 바이트들을 제어한다. 그러나, 4x4 블럭-기입에서는 각각의 데이타 입력들이 단지 4개의 비트들이 기입되도록 만들기 때문에, 각각의 소스 비트들은 전체 바이트가 기입되도록 만들기 위하여 2개의 데이타 버스 핀들에 재맵핑되어야만 한다. 따라서 소스 비트 0 - 7들은 각각 비트 0 및 4, 8 길 12, 16 및 20, 24 및 28, 32 및 36, 40 및 44, 48 및 52, 및 56 및 60들로 맵핑된다.
4x8x1 또는 4x8x2 블럭-기입의 경우에는, VRAM 컬러 레지스터들이 8 비트 크기이다. 그러나, 단지 VRAM의 8개의 데이타 입력들 중 4개들만이 기입될 바이트들을 선택하기 위하여 사용된다. 따라서 데이타 버스의 반이 사용되지 않으며 단지32 바이트만이 단 한번의 엑세스에서 기입될 수 있다. 그러나, D[63:0]에 실제적으로 출력된 데이타가 동일하다는 것을 주목하여야 한다; VRAM들은 단순히 모든 다른 니블들을 무시한다. 빅 에디언 모드에서는, 소스 비트 0 - 7들이 각각 외부 데이타 버스의 비트들 63 및 59, 55 및 51, 47 및 43, 39 및 35, 31 및 27, 23 및 19, 15 및 11, 및 7 및 3으로 맵핑된다. 8x 빅 에디언 블럭-기입에서와 같이, 데이타 버스는 올바른 동작을 위하여서는 반전된 순서로 VRAM들에 접속되어야만 한다.
블럭-기입을 지원하지 않는 메모리 장치인 경우는, 전송 제어기(80)이 시뮬레이팅된 블럭-기입을 제공한다. 이러한 모드에서는, 패킷 전송 파라메타에 들어있는 64비트 컬러 레지스터 값이 데이타 버스 상에 출력되며 각각의 소스 데이타 비트는 사이클 동안 어드레싱된 8개의 바이트들의 하나를 사용 가능하게 또는 가능하지 않게 하기 위하여 CAS 컬럼 어드레스 스트로브 핀들을 제어하여 바이트 선택으로서 기능한다. 따라서, 블럭-기입들은 컬러 레지스터 값들이 필 밸류가 되는 경우 필-위드-밸류 형태 전송으로 본질적으로 변형된다. 따라서 데스티네이션 엑세스는 특정 바이트들에 대한 기입들이 소스 데이타에 의하여 규정된 바와 같이 사용 가능하지 않게 되는 정상, 페이지-모드 64 비트 기입 사이클이 된다.
4x 및 8x 블럭-기입 사이클들이 수행될 수 있기 전에, VRAM의 컬러 레지스터는 올바른 값으로 로드되어야만 한다. 전송 제어기(80)은 이러한 동작을 패킷 전송 파라메타에 들어있는 컬러 레지스터 값을 사용하는 로드 컬러 레지스터 LCR 사이클을 수행함으로써 하게 된다. 블럭-기입 패킷 전송이 호스트 엑세스 또는 VRAM 컬러 레지스터들을 변경시킬 수 있는 다른 블럭-기입 패킷 전송과 같은 높은 우선순위요구에 의하여 인터럽팅될 수 있기 때문에, 로드컬러 레지스터 사이클은 역시 블럭-기입 패킷 전송이 다시 시작하는 때마다 수행되어야만 한다. 따라서, 로드 컬러 레지스터 사이클은 다음과 같은 경우마다 생긴다: 4x 또는 8x 블럭-기입 패킷 전송이 시작할 때; 블럭-기입 패킷 전송이 지연된 다음 다시 시작할 때; 또는 호스트가 영상 시스템 버스를 사용한 다음 복귀한 후에 블럭-기입 패킷 전송이 계속할 때 로드 컬러 레지스터 사이클은 만일 억세싱되고 있는 메모리가 시뮬레이티드 블럭-기입을 요구한다면 수행되지 않을 것이다.
일단 컬러 래치들이 로드되었다면, 다른 로드 컬러 레지스터 사이클이 위의 상태 중 어느 하나가 생기지 않는 한 수행되지 않을 것이다. 예를 들어, 만일 블럭-기입이 8x 모드로 시작하고, 그 후 시뮬레이티드와 8x 모드사이에서 교대한다면, 로드 컬러 레지스터가 8x 모드로 진입하는 각각의 시간에서는 반복되지 않을 것이다.
블럭-기입 패킷 전송을 위한 프로세스의 시퀀스는 다음과 같다. 전송 제어기(80)은 로드 컬러 레지스터 스테이터스 코드를 출력하며 수행될 제1 블럭-기입을 어드레싱한다. 다음으로 전송 제어기(80)은 BS[1:0] 상에 입력된 값을 판독한다. 만일 BS[1:0]이 "10" 또는 "11"과 같다면, 로드 컬러 레지스터 사이클은 패킷 전송 파라메타에 들어 있는 64 비트 컬러 레지스터 값을 사용하는 것을 완료한다. 그후 4x 또는 8x 블럭-기입 사이클들이 패킷 전송을 종료시키기 위하여 발생된다. 다른 한편으로, 만일 BS[1:0]이 "00"과 같다면, 로드 컬러 레지스터 사이클은 패킷 전송 파라메타에 들어 있는 64 비트 컬러 레지스터 값을 데이타로 소스 데이타 비트들을 바이트 선택들로서 사용하는 정상페이지-모드 기입이 된다. 만일 새로운 로우 엑세스가 페이지 변화 또는 높은 우선순위 사이클로부터의 인터럽션 때문에 시작되었다면, 로드 컬러 레지스터 스테이터스 코드와 수행될 다음 블럭-기입의 어드레스를 출력하는 단계가 다음 데스티네이션 어드레스를 위하여 반복된다.
일단 로드 컬러 레지스터 사이클이 수행되었다면, 시퀀스는 다음과 같이 계속된다. 전송 제어기(80)은 블럭-기입 스테이터스 코드와 수행될 다음 블럭-기입의 어드레스를 출력한다. 만일 BS[1:0] = "10" 또는 "11"이라면, 블럭-기입 페이지-모드 사이클은 소스 데이타 비트를 사용하는 것을 완료한다. 만일 새로운 로우 엑세스가 시작되었다면, 블럭-기입 스테이터스 코드와 수행될 다음 블럭-기입의 어드레스를 출력하는 단계가 반복된다. 한편으로는, 만일 BS[1:0]이 "00"과 같다면, 블럭-기입 사이클은 패킷 전송에 들어있는 64 비트 컬러 레지스터 값을 데이타로, 또 소스 데이타 비트들을 바이트 선택으로서 사용하는 정상 페이지-모드 기입이 된다. 다시, 만일 새로운 로우 엑세스가 시작되었다면, 블럭-기입 스테이터스 코드와 수행될 다음 블럭-기입의 어드레스를 출력하는 단계가 다음 데스티네이션 어드레스를 위하여 반복된다.
전송 제어기(80)은 언제나 "실제" 4x 또는 8x 블럭-기입을 수행하려고 시도할 것이다. 따라서 시뮬레이티드 블럭-기입 모드 동안 생기는 정상 기입 사이클들은 항상 로드 컬러 레지스터 또는 블럭-기입 스테이터스 코드 중의 어느 하나를 가질 것이다.
만일 패킷 전송 옵션 필드의 패킷 엑세스 모드가 직렬 레지스터 전송 모드를선택하는 "011"이라면, 전송 제어기(80)의 데이타 전송 모드가 사용 불가능해진다. 전송 제어기(80)은 어드레스들과 /CAS들을 출력하기만 할 뿐이다. 그것은 역시 "판독 전송" 또는 "기입 전송" VRAM 모드 중 하나를 선택하기 위하여 로우 시간에 /TRG, /W 및 DSF[1:0] 핀들을 구동한다. 이러한 동작들 중의 하나를 수행할 때에, D[63:0] 핀들은 VRAM 전송 마스크들을 사용 불가능하게 하기 위하여 16진수 "FFFFFFFFFFFFFFFF"의 마스크 값을 출력한다.
소스 파라메타들이 판독 전송을 수행하기 위한 어드레스들을 발생시키위하여 사용되는데, 이러한 것들은 레지스터 전송에 대한 메모리이면, 데스티네이션 파라메타들이 기입 전송을 수행하기 위하여 사용되는데, 이러한 것들은 메모리 전송들에 대한 레지스터들이다. 소스 및 데스티네이션 둘다에 의하여 수행되는 각각의 엑세스들은 단 한번의 로우 엑세스들이다. 전송 제어기(80)을 통하여 어떠한 데이타도 전송되지 않기 때문에, 모든 소스 엑세스들이 데스티네이션 엑세스 전에 수행될 것이다. 각각의 소스 엑세스들은 VRAM 로우가 VRAM 시프트 레지스터 안으로 전송되도록 야기한다. 실제로, 소스 파라메타들은 보통 정렬된 어드레스들, 1인 A 카운트, 0인 B 카운트 및 0인 C 카운트들로 셋업(setup)된다. 따라서, 단지 한번의 전송이 수행된다. 모든 /CAS 라인들이 판독 프로세스를 위하여 액티브 상태이기 때문에, 소스 버스 크기와 같게 또는 그보다 작게 A 카운트를 셋팅시키는 것은 단 한번의 전송으로 이루어진다. 따라서, 1인 소스 A 카운트가 대부분의 상황에 대해 이상적이다.
각각의 데스티네이션 엑세스들은 VRAM 시프트 레지스터가 VRAM 메모리 어레이 로우 안으로 전송되도록 만든다. 정상적으로는, 각각의 데스티네이션 엑세스는 다음 시켄셜 로우 어드레스로의 정렬된 전송이다. 이는 데스티네이션 파라메타들을 정렬된 스타트 어드레스들, 1인 A 카운트, (로우의 수) - 1인 B 카운트 및 VRAM 로우 어드레스 피치와 같은 B 피치들로 셋업시킴으로써 이룰 수 있다. 다시, 모든 /CAS 라인들이 A 카운트를 데스티네이션 버스 크기와 같게 또는 그보다 작게 셋팅시키는 것이 라인마다 단 한번의 전송으로 이루어질 수 있도록 기입 전송동안 활성화된다. 따라서 1인 데스티네이션 A 카운트는 대부분의 상황에 대해 이상적이다.
시프트 레지스터 전송 패킷 전송이 VRAM 시프트 레지스터의 내용들을 변경시킬 지도 모르는 높은 우선순위에 의하여 인터럽팅될 수 있기 때문에, VRAM 시프트 레지스터가 내용을 잃어버렸을 때(corrupted)마다 판독 전송 사이클을 수행할 필요가 있게 된다. 따라서, 시프트 레지스터 전송 패킷 전송 소스 동작, 판독 전송들이 다음과 같을 때마다 수행될 것이다: 시프트 레지스터 전송 패킷 전송이 시작한 때; 쉬프트 레지스터 전송 패킷 전송이 지면된 다음 다시 시작한 때; 및 쉬프트 레지스터 전송 패킷 전송이 호스트가 영상 버스를 사용한 후 복귀한 다음 계속된 때,
직렬 레지스터 전송 패킷 전송의 간단한 예가 제36도에 도시되었다. 로우 0은 원하는 패턴으로 셋팅되었다고 가정된다. 한편 패킷 전송은 이러한 패턴을 스트립된 효과(striped effect)를 발생하기 위하여 로우 2, 4, 6, 8 및 10로 복사한다.
투과 모드들은 패킷 전송 옵션 필드의 패킷 전송 엑세스 모드 비트들을 "1XX"로 셋팅시킴으로써 사용 가능해진다. 투과 옵션들 중의 하나를 규정하는 것은 "소스 상의 투과" 동작을 가능케 만든다. 소스 데이타는 패킷 전송 파라 메타에 규정된 64 비트 투과 값에 비교된다. 투과는 8, 16, 32, 또는 64 비트 데이타 크기로 규정될 수 있다. 따라서, 하나의 64 비트, 2개의 32 비트, 4개의 16 비트, 또는 8개의 8 비트 비교가 행해진다. 만일 비교 중 어떤 것이라도 참이라면, 투과 및 바이트 기입 회로(353)(제38도에 도시되었음)은 데스티네이션 바이트들이 기입되는 것을 막기 위하여 해당 바이트-스트로브들을 사용 불가능하게 만든다. 투과는 4개의 오프-칩 데스티네이션만을 위하여 지원된다. 온-칩 데스티네이션을 위하여 투과를 규정하는 것은 패킷 전송이 오류 상태로 지연되도록 만든다.
투과 감지는 소스 데이타가 데스티네이션 및 외부 버스 크기에 정렬된 후 투과 및 바이트 기입 회로(353)(제38도에 도시됨)에 의하여 인가된다. 한편 모든 8 데이타의 바이트들은 버스 크기가 64 비트보다 작은 경우일 지라도 해당 8 투과 값의 바이트들과 비교된다. 8개의 비교들은 투과 데이타 크기에 따라서 그룹지어 진다. 만일 그룹 안의 모든 비교된 바이트들이 매칭된다면, 그룹과 관련된 바이트 스트로브 CAS 신호들은 사용 불가능해지며, 상기 그룹 내의 어떠한 바이트들도 기입되는 것이 금해진다. 제37a, 37b, 37c및 37d도들은 각각 64 비트, 32 비트, 16 비트 및 8 비트 투과 데이타 크기에 대해 행해진 비교들을 도시한다. "&" 부호는 그룹을 형성하기 위하여 함께 엔딩(ANDing)된 바이트 비교들을 도시한다. 제37a도는 64 비트 투과 크기가 행해질 하나의 64 비트 비교를 도시한다. 만일 소스 데이타 및 투과 값들이 같다면, 모든 /CAS 스트로브들은 사용 불가능해 진다. 만일 그렇지 않다면, 모든 8 바이트들이 기입될 것이다. 제37b도는 32 비트 투과 크기에서 각각 /CAS[7:4] 및 /CAS[3:0]에 의하여 제어된 2개의 32 비트 비교를 도시한다. 제37c도는 16 비트 투과 크기에서 각각 /CAS[7:6], /CAS[5:4], /CAS[3:2] 및 /CAS[1:0]에 의하여 제어된 4개의 16 비트 비를 도시한다. 제37d도는 8 비트 투과 크기에서 각각 분리되어 /CAS[7], /CAS[6], /CAS[5], /CAS[4], /CAS[4], /CAS[3], /CAS[2], /CAS[3:2] 및 /CAS[1:0]에 의하여 제어된 8개의 8비트 비교들을 도시한다. /CAS[7:0] 스트로브들은 항상 엔디언 동작에 무관하게 데이타 버스 상의 같은 비트들과 동일하다는 점을 주목해야 한다. 따라서 제37도는 빅 및 리틀 엔디언 포맷 모두에 적용된다. 투과 비교는 외부 버스에 대한 정렬 후에 일어난다. 따라서 만일 외부 버스 크기가 32 비트라면, 데이타는 64 비트 투과 모드가 선택된 경우일 지라도 언제나 투과 값의 비트 31 - 0(빅-엔디어인 경우는 64 - 32)들과 비교된다. 투과 메카니즘은 비교 그룹의 정수(integral number)로 나누어질 수 있는 현재 버스 크기와 함께 운영될 수 있도록 설계된다. 따라서 버스 크기는 언제나 투과 크기와 같거나 또는 그보다 커야만 한다.
제38도는 투과 및 바이트 기입 로직(353)의 구조를 도시하며, 이는 데스티네이션 멀티플렉서 및 정렬 로직(350)의 일부분이다. 투과 레지스터(601)은 패킷 전송 파라메타로부터의 64 비트 투과 값을 저장한다. 일련의 8 비트 비교기(611, 612, 613, 614, 615, 616, 617 및 618)들은 투과 레지스터(601)에 저장된 투과 값의 개개의 비트들을 데스티네이션 멀티플레서(351)로부터의 정렬된 데스티네이션 데이타의 해당 비트들과 비교한다. 각각의 비교기(611, 612, 613, 614, 615, 616, 617, 및 618)들은 해당 비트들이 같은가를 나타내는 바이트 동일 신호를 발생시킨다. 해당 1/2 워드로부터의 1/2 워드 AND 게이트들의 집합(621, 622, 623 및 624)은 각각 바이트 0 및 1, 바이트 2 및 3, 바이트 4 및 5 및 바이트 6 및 7을 위한 신호들과 동일하다. 2개의 워드 AND 게이트(631 및 632)들은 각각 1/2 워드 게이트(621, 622, 623 및 624)들과 바이트 0 내지 3, 및 바이트 4 내지 7을 위한 해당 워드 동일 신호들로부터 접속된다. 마지막으로, 더블 워드 AND 게이트(641)이 워드 AND 게이트(631 및 632)와 접속되며 모든 64 비트 더블 워드 동일 신호를 형성한다.
멀티플렉서(645)는 8개의 바이트 동일 신호들, 4개의 1/2 워드 동일 신호들, 2개의 워드 동일 신호들 및 더블 워드 동일 신호들을 수신한다. 멀티플렉서(645)는 또한 패킷 전송 옵션 필드의 패킷 전송 엑세스 모드 필드의 비트 17 - 16들에 따라서 선택된 투과 크기 표시를 받아들인다. 이러한 비트들은 표(19)에 도시된 바와 같이 인코딩된다. 멀티플렉서(645)는 각각의 입력들과 투과 크기에 근거하여 바이트 기입 스트로즈 신호들, 실제적으로는 CAS 신호들을 출력한다. 만일 8 비트의 투과 크기가 선택되었다면, 바이트 동일 신호들은 각각의 바이트 기입 스트로브들을 제어한다. 투과 컬러 값과 해당 데이타 바이트의 동일 표시는 바이트 기입 스트로브 내에 있게 된다. 따라서 데이타는 메모리 안으로 기입되지 않는다. 16 비트의 투과 크기를 선택한 경우, 각각의 1/2 워드 동일 신호는 2개의 해당 바이트 기입 스트로브를 제어하며, 따라서 각각의 1/2 워드 동일 신호들은 2개의 바이트 기입 스트로브들을 제어한다. 32 비트의 투과 크기를 선택한 경우는, 각각의 워드 동일 신호들이 4개의 해당 바이트 기입 스트로브들을 제어한다. 64 비트 투과 크기를 선택한 경우는, 모든 8개의 바이트 기입 스트로브들이 더블 워드 동일 신호에 의하여제어된다. 따라서 선택된 투과 크기에 근거하여, 투과 컬러 값을 갖는 투과 크기와 같은 데이타 부분의 동일성은 데스티네이션 안으로의 상기 데이타 기입을 중단시킨다. 이러한 기능은 많은 그래픽 응용에 있어서 매우 유용하다.
주변 장치 전송들은 패킷 전송 옵션 필드의 패킷 전송 엑세스 모드기 "001"과 같은 경우 주변 장치가 선택된 때에 수행된다. 이러한 모드는 주변장치가 멀티프로세서 집적 회로(100)의 외부 메모리에 기입 또는 메모리로부터 판독하기 위하여 전송 제어기(80)의 메모리 제어기를 사용할 수 있게 허용하도록 설계된다. 주변 장치 전송이 생길 때에는, 전송 제어기(80)이 정상적으로 메모리 어드레스 및 제어 라인들을 구동시키나, 데이타를 기입하거나 판독하지는 않는다. 이는 영상 시스템 버스에 접속된 호스트 시스템(1)과 같은 주변장치가 데이타를 기입하거나 판독할 수 있도록 허용한다. 주변 전송의 판독 또는 기입은 패킷 전송 파라메타들이 프로그래밍되는 방법과 같은 방법에 의하여 수행된다.
메모리로부터 주변 장치로의 주변 판독 전송은 주변 장치에 의하여 필요한 메모리 데이타를 억세싱하기 위하여 패킷 전송의 소스 파라메타들을 프로그래밍하여 발생된다. 소스 엑세스 모드는 차원화 또는 가이딩되나 필-위드-밸류일 수는 없다. 데스티네이션 전송은 "000"으로 데스티네이션 전송 모드를 셋팅시키고 데스티네이션 A 카운트를 0으로 셋팅시킴에 의하여 사용 불가능해져야만 한다.
메모리에서 주변장치로의 기입인 주변 기입 전송은 주변 장치가 기입을 필요로하는 메모리 영역을 억세싱하기 위하여 데스티네이션을 프로그래밍하여 발생된다. 데스티네이션 엑세스 모드는 차원화 또는 디멘존닝될 수 있다. 소스 전송은 소스 전송 모드를 "000"으로 소스 A 카운트를 0으로 셋팅시킴에 의하여 사용 불가능해 져야만 한다. 패킷 전송 오류는 바이트의 데스티네이션 수가 바이트의 소스의 수를 초과할 때일지라도 이러한 경우에는 생기지 않는다.
주변 장치 패킷 전송 요구는 어떠한 프로세서에 의해서라도 어떠한 우선 순위로도 제출될 수 있으며 정상 우선순위 방법을 사용하여 제공될 수 있을 것이다. 그러나 정상의 동작은 데이타의 판독 또는 기입을 원하는 때에, 주변장치로 전송을 개시시킬 것이다. 이는 외부 인터럽트들을 사용하여 이룰 수 있다. 주변 장치가 서비스를 요구할 때에는, 외부 인터럽트 입력인 멀티프로세서 집적 회로(100) 중의 하나를 통하여 마스터 프로세서(60)을 인터럽팅시킬 수 있다. 한편 마스터 프로세서(60)은 인터럽트 서비스 루틴의 부분으로서 주변 장치 패킷 전송을 제출할 수 있다. 만일 서비스 루틴 내에서 인터럽트들이 사용 불가능 하다면, 전송은 "긴급" 우선순위를 내놓으므로써 디지탈 영상/그래픽 프로세서(71, 72, 73 및 74) 캐시 요구들보다 우선하는 우선순위가 될 수 있다.
일단 주변 장치가 마스터 프로세서(60)을 인터럽팅했다면, 마스터 프로세서는 그것이 데이타를 판독 또는 기입할 수 있기 전에 패킷 전송을 시작할 때까지 기다려야만 한다. 주변 장치 전송의 시작은 로우 타입시 STATUS[4:0] 상의 특별 사이클 형식 코드에 의하여 신호를 받는다. 값 "00100"이 판독을 위하여 사용되며, 값 "00101"이 기입을 위하여 사용된다. 주변 장치 전송의 시작과 끝은 항상 로우 엑세스를 강제하는 LASTPAGE 레지스터(360)을 무효로 만든다. 주변 장치는 데이타 전송을 시작한 때를 결정하기 위하여 STATUS[4:0] 핀들을 모니터링하여야 한다. 메모리사이클 버스의 크기, 컬럼타이밍, 기타 전송 제어기(80)에 의하여 발생된 것들의 포맷은 버스 크기 선택 BS[1:0], 컬럼 타이밍 선택 CT[1:0], 기타 사이클의 시작시의 메모리 동일 입력들로 어떠한 것들이 선택되더라도 일치할 것이다. 따라서 주변 장치는 자신의 데이타 전송을 /CAS[7:0], CLKOUT 등을 사용하는 이하 순차적인 컬럼 엑세스들에 동기화시킬 수 있다.
메모리 어드레싱이 패킷 전송 파라메타들에 의하여 발생되기 때문에, 전송하는 주변 장치는 전송 제어기(80)에 의하여 억세싱된 순서에 따라서 데이타를 보내거나 받아들일 준비가 되어 있어야만 한다. 주변 장치는 역시 전송 제어기(80)의 전송 율(rate)에 적합할 수 있거나 전송을 늦추기 위한 대기 상태를 삽입시킬 수 있어야 한다.
주변 장치가 전송을 위하여 영상 시스템을 사용하기 때문에, 그것은 주변 전송이 시작할 때까지 버스를 구동시키면 안된다. 이는 주변 장치와 멀티프로세서 집적 회로(100) 데이타 버스들 사이에 송수신기를 두고 주변 전송동안에만 그들을 사용 가능하게 함으로써 이룰 수 있다. 멀티프로세서 집적 회로(100)은 자신의 데이타 버스를 전송 동안 고임피던스 상태로 두며 역시 만일 자신의 외부 수신기가 있다면 그를 사용 불가능하게 만들기 위하여 /DBEN을 인액티브 하이로 구동시킬 것이다.
전송 제어기(80)은 빅 엔디언 또는 리틀 엔디언 포맷 중 어느 하나의 포맷으로 데이타를 억세싱할 수 있다. 엔디언 모드는 바이트들이 억세싱되는 방법을 선택한다. 리틀 엔디언 모드에서, 바이트 0은 워드 내의 가장 우측의 바이트이며 연속된 바이트들은 좌측 방향으로 번호 매겨진다. 빅 엔디언에서는, 바이트 0이 워드 내의 가장 좌측의 바이트이며 연속된 바이트들은 우측 방향으로 번호 매겨진다.
어드레스의 3개의 최하위 비트들 및 전송될 바이트의 수들은 유효 데이타 바이트들의 위치들을 결정한다. 표(24a)와 (24b)는 리틀 엔디언 모드에서의 64 비트 버스 전송들을 위한 바이트 위치들을 도시한다. 표(24a)와 (24b)에서, V들은 유효 바이트 위치들을 나타내며 0들은 비유효 바이트들을 나타낸다. 대쉬(dash)들은 동작이 수행될 수 없음을 나타낸다.
표 24a
표 24b
표(25a)와 (25b)는 빅 엔디언 모드에서의 64 비트 버스 전송들을 위한 바이트 위치들을 도시한다.
표 25a
표 25b
외부 버스가 32 비트로 제한된 경우는, 버스의 단지 4개 최하위 바이트들이데이타를 전송하기 위하여 사용된다. 이는 D[31:0]들이 리틀 엔디언 전송에서 사용되며 D[63:32]들이 빅 엔디언 전송들을 위하여 사용된다. 리틀 엔디언을 위한 어드레스의 2개의 최하위 비트들에 근거된 바이트 위치들이 표(26)에 도시된다. X들은 무시된 64 비트 버스의 바이트들을 나타낸다. 대쉬들은 다시 수행될 수 없는 전송들을 나타낸다.
표 26
빅 엔디언을 위한 어드레스의 2개의 최하위 비트들에 근거된 바이트 위치들은 표(27)에 도시된다.
표 27
외부 버스가 16 비트로 제한된 때에는, 단지 리틀 엔디언을 위한 2개의 최하위 바이트 D[15:0] 또는 빅 엔디언을 위한 D[63:48]들이 데이타를 전송시키기 위하여 사용된다. 표(28)은 어드레스의 최하위 비트에 근거된 리틀 엔디언 모드를 위한 바이트 위치들을 도시한다.
표 28
표(29)는 어드레스의 최하위 비트에 근거된 리틀 엔디언 모드를 위한 바이트 위치들을 도시한다.
표 29
외부 버스가 8 비트들을 위하여 구성된 경우에는, 단지 리틀 엔디언에 대해서는 최하위 바이트 D[7:0] 또는 빅 엔디언 모드에 대해서는 D[63:56]이 데이타를 전송하기 위하여 사용된다. 따라서 이러한 버스 크기에 대하여는 바이트의 위치들이 고정된다.
내부 크로스바 버스 상으로의 32 비트 외부 데이타 전송의 경우, 전송 제어기(80)은 표(24a)와 (24b) 및 표(25a)와 (25b)로부터의 "1 바이트", "2 바이트","3 바이트" 및 "4 바이트"의 바이트 위치들을 사용하는 일반적인 64 비트 엑세스들을 수행한다. 내부 크로스바 버스 상으로의 16 비트 외부 데이타를 전송하는 경우에는, 전송 제어기(80)은 표(24a)와 (24b) 및 표(25a)와 (25b)로부터의 "1 바이트" 및 "2 바이트"의 바이트 위치들을 사용하는 일반적인 64 비트 엑세스들을 수행한다.
멀티프로세서 집적 회로(100)을 위한 엔디언 모드는 /UTIME 입력을 사용하는 리셋시 선택된다. 멀티프로세서 집적 회로(100)은 RESET 입력 상의 라이징 에지(rising edge) 전의 클럭 사이클 상의 /UTIME의 값을 샘플링하여 래칭한다. 만일 /UTIME이 리셋의 끝에서 로우("0")로 샘플링되었다면, 멀티프로세서 집적 회로(100)은 다음의 하드웨어 리셋이 생길 때까지 빅 엔디언 모드로 동작할 것이다. 만일 /UTIME이 하이("1")로 샘플링되었다면, 멀티프로세서 집적 회로(100)은 리틀 엔디언 모드로 동작할 것이다.
위에서 검토된 바와 같이, 패킷 전송 파라메카들은 워드(32 비트) 레벨인 경우에만 엔디언에 독립적이다. 전송 제어기(80)은 언제나 패킷 전송 파라메타들을 더블-워드(64 비트) 전송들로서 패칭하여 저장한다. 전송 제어기(80)은 선택된 엔디언에 따라서 32 비트 워드들을 교환한다. A 카운트 및 B 카운트와 같은 워드 내의 어떠한 16 비트 크기들은 이러한 값들을 갖는 필드가 단 하나의 32 비트 크기로 여겨지기 때문에 엔디언에 따라 교환되지 않는다. 마찬가지로, 64 비트 투과 워드 및 64 비트 컬러 레지스터 값 필드는 언제나 단 하나의 64 비트 크기로 다루어지며 그것의 바이트들은 엔디언에 따라서 교환되지 않는다.
로컬 메모리 판독 및 기입 사이클들은 메모리와 멀티프로세서 집적 회로(100) 사이의 데이타 및 인스트럭션들을 전송하기 위하여 사용된다. 이러한 사이클들은 패킷 전송, 캐시 요구 또는 전송 제어기(80)으로의 직접 외부 엑세스 요구 등의 결과로서 생길 수 있다. 판독 사이클들은 메모리로부터 멀티프로세서 집적 회로(100)로 데이타를 전송시킨다. 전송 제어기(80)은 판독이 일어났음을 나타내기 위하여 사이클의 시작시 STATUS[4:0] 상에 "00000"을 출력한다. 사이클 동안, /WE는 인액티브 하이로, /TRG는 메모리 출력 구동기를 사용 가능하게 하기 위하여 /RAS의 폴링 후에 로우로 구동되며 /DDIN은 데이타 송수신기가 멀티프로세서 집적 회로(100) 안으로 구동할 수 있도록 사이클 동안 액티브 로우 상태가 된다. 전송 제어기(80)은 D[63:0]을 그것이 메모리로부터 구동되며 적절한 컬럼 상태 동안 입력 데이타를 래칭하는 것을 허용하기 위하여 하이 임피던스 상태로 스위칭한다. 전송 제어기(80)은 언제나 64 비트 더블-워드를 판독하며 그 다음으로 적절한 데이타 바이트들을 추출하여 정렬시킨다. 따라서 64 비트보다 작은 버스 크기에 대하여는 유효하지 않은 바이트들이 무시된다.
제39도는 본 발명의 멀티프로세서 집적 회로(100)의 고해상도(high definition) 텔레비젼 시스템에서의 사용을 도시한다. 제39도는 고해상도 텔레비젼 신호의 3개의 소스들을 도시한다. 이러한 것들은 방송 텔레비젼 신호, 컴팩트 디스크 롬(read only memory) 신호 및 케이블 텔레비젼 신호들이다.
안테나(801)은 고해상도 텔레비젼 신호를 포함하는 방송 무선 주파수 신호들을 수신한다. 텔레비젼 튜너(802)는 특정의 무선 주파수 신호를 선택하는 튜닝된수신기, 무선 주파수 신호 상에 인코딩된 영상 데이타를 추출하는 복조기 및 애널로그 대 디지탈 변환기 등을 포함한다. 한편 텔레비젼 튜너(802)는 고해상도 텔레비젼 영상에 따르는 디지탈 신호를 발생시킨다. 이러한 디지탈 신호들은 역시 영상 시스템 버스에 접속된 버퍼(803) 내에 일시적으로 저장된다.
컴팩트 디스크 롬(CD ROM) 플레이어(811)은 컴팩트 디스크 상에 영구적으로 저장된 데이타들을 판독한다. 이러한 것들은 원하는 고해상도 텔레비젼 프로그램에 따르는 영상 데이타들을 포함한다. 컴팩트 디스크 롬 플레이어(811)은 일시적인 저장을 위하여 컴팩트 디스크로부터 버퍼(812)로 판독된 디지탈 데이타를 제공한다. 버퍼(812)는 역시 영상 시스템 버스에 접속된다.
케이블 시스템 박스(821)은 케이블 시스템에 양방향 접속된다. 이러한 양방향 접속은 케이블 시스템으로부터 사용자에게 고해상도 텔레비젼 신호의 트랜스미션과 사용자로부터 케이블 시스템으로의 요구, 퀴어리 및 그와 유사한 것들의 트랜스미션을 허용한다. 케이블 시스템은 사용자에게 디지탈 트랜스미션을 사용할 수 있거나 또는 위에 언급된 무선 주파수 방송과 유사한 무선 주파수 트랜스미션을 포함할 수 있다. 케이블 시스템 박스(821)은 일시적인 저장을 위하여 버퍼(822)로 디지탈 영상 데이타를 제공하기 위하여 어떠한 필요 변환 회로라도 포함할 수 있다. 버퍼(822)가 역시 영상 시스템 버스에 접속된다는 점을 주목해야 한다.
고해상도 텔레비젼은 트랜스미션의 모드에 상관없이 데이타 압축 포맷으로 매우 유사하게 전송될 것이다. 멀티프로세서 집적 회로(100)은 압축된 데이타를 수신하기 위하여, 이러한 데이타를 개개의 텔레비젼 프레임으로 펼치기 위하여, 또비디오 램(random access memory, 6)으로 프레임 데이타를 제공하기 위하여 프로그래밍된다. 위에 이미 설명된 바와 같이, 이러한 데이타는 비디오 램(6)으로부터 재호출되며 비디오 팰리트(7)에 제공된다. 비디오 팰리트(7)은 비디오 디스플레이(8)에 적절한 비디오 신호들을 발생시킨다. 디스플레이를 위하여 데이타를 제공할 때 영상 데이타를 펼치는 이러한 프로세싱은 멀티프로세서 집적 회로(100) 안에서 또 영상 시스템 버스를 따르는 많은 데이타 이동을 포함한다. 전송 제어기(80)은 이러한 데이타 이동을 제어하기 위하여 마스터 프로세서(60) 및 디지탈 영상/ 그래픽 프로세서(71, 72, 73 및 74)로부터의 패킷 전송을 위한 요구에 응하며, 이러한 데이타 이동을 메모리 리프레시와 같은 다른 영상 시스템 버스 사용과 동등하게 한다.
제40도는 본 발명의 다른 시스템 실시예를 도시한다. 제40도에서는 멀티프로세서 집적 회로(101)이 마스터 프로세서(60) 및 단 하나의 디지탈 영상/그래픽 프로세서(71)을 포함한다. 멀티프로세서 집적 회로(101)은 멀티프로세서 집적 회로(100)보다 작은 실리콘 기판 영역을 필요로 하며 결과적으로 적은 비용으로 구현될 수 있다. 멀티프로세서 집적 회로(101)은 멀티프로세서 집적회로(100)의 구현에 이미 인용된 바와 같은 방법을 사용하여 구현된다. 각각의 디지탈 영상/그래픽 프로세서의 폭이 자신의 해당 메모리 및 크로스바(50)의 관련 부분의 폭과 같기 때문에, 멀티프로세서 집적 회로(100)은 멀티프로세서 집적 회로(101)의 설계를 얻기 위하여 디지탈 영상/그래픽 프로세서(71 및 72) 사이에서 짤릴 수 있다. 멀티프로세서 집적 회로(101)은 4개의 디지탈 영상/그래픽 프로세서의 프로세싱 용량이 필요하지 않을 때에 응용에 사용될 수 있다.
멀티프로세서 집적 회로(101)이 제40도에 컬러 팩시밀리 장치의 부분으로서 도시된다. 모뎀(1301)은 발신과 수신을 위하여 전화선과 양방향 결합된다. 모뎀(1301)은 버퍼(1302)에 일시적으로 저장되는 이러한 신호들을 복조한다. 전송 제어기(80)은 디지탈 영상/그래픽 프로세서(71)에 의한 프로세싱을 위해 데이타를 데이타 메모리(22, 23 및 24)로 전송함으로써 버퍼(1302)에 서비스한다. 디지탈 영상/그래픽 프로세서(71)이 들어오는 데이타의 앞단을 따를 수 없는 경우에는, 전송 제어기(80)은 역시 버퍼(1302)로부터 메모리(9)로 데이타를 전송시킬 수 있다. 디지탈 영상/그래픽 프로세서(71)은 들어온 팩시밀리의 영상 데이타를 프로세싱한다. 이러한 것은 영상 펼침, 잡음 제거, 오류 보정, 컬러 베이스 보정 및 이러한 것들을 포함한다. 일단 처리되었다면, 전송 제어기(80)은 데이타 메모리(22, 23 및 24)로부터 비디오 램(VRAM, 1303)으로 영상 데이타들을 전송 한다. 프린터 제어기(1304)는 프레임 제어기(90)의 제어 아래 영상 데이타를 재호출하며 그것을 하드 카피(hard copy)를 형성하는 컬러 프린터(1305)로 제공한다.
제40도의 장치는 역시 컬러 팩시밀리를 송신할 수 있다. 영상 장치(3)은 소스 도규멘트를 스캔닝한다. 영상 장치(3)은 프레임 제어기(90)의 제어 아래 동작하는 영상 포착 제어기(image capture controller, 4)에 처리 않된(raw) 영상 데이타들을 제공한다. 이러한 영상 데이타는 비디오 램(1303)에 저장된다. 제40도에 도시된 실시예는 분리된 비디오 램을 사용하는 제1도의 실시예와는 달리, 영상 포착 및 영상 디스플레이 모두를 위한 비디오 램(1303)을 공유한다는 것을 주목하여야 한다. 전송 제어기(80)은 이러한 영상 데이타를 데이타 메모리(22, 23 및 24)로 전송한다. 한편 디지탈 영상/그래픽 프로세서(71)은 영상 압축, 오류 보정 리던던시, 컬러 베이스 보정 및 이와 같은 것들을 위하여 영상 데이타를 프로세싱한다. 프로세싱된 데이타는 팩시밀리 트랜스미션을 지원할 필요가 있을 때에, 전송 제어기(80)에 의하여 버퍼(1303)으로 전송된다. 상대적인 데이타 율에 좌우되어, 전송 제어기(80)은 버퍼(1303)으로의 전송 전에 데이타를 메모리(9)에 일시적으로 저장시킬 수 있다. 이러한 버퍼(1302)에 있는 영상 데이타는 모뎀(1301)에 의하여 변조되어 전화선을 통하여 전송된다.
같은 시스템에 영상 장치 및 컬러 프린터가 함께 있는 것은 이러한 시스템이 역시 컬러 복사기로서 동작할 수 있도록 허용한다. 이러한 경우, 데이타 비교 및 펼침은 필요없을 수 있다. 그러나, 디지탈 영상/그래픽 프로세서(71)은 여전히 잡음 제거 및 컬러 베이스 보정을 위하여 유용하다. 또한 디지탈 영상/그래픽 프로세서(71)이 원래와는 달리 다른 컬러를 갖는 복사가 가능하도록 하기 위하여 컬러들을 미묘하게 변경(deliberarely shifting cokor)시킬 수 있도록 프로그래밍되는 것이 가능하다. 폴스 컬러링(false coloring)으로 알려진 이러한 기법은 데이타의 유동적인 범위를 사용 가능한 프린트 컬러의 유동 범위로 맞추는 데 유용하다.
제1도는 본 발명의 영상 프로세싱 시스템 실시예의 시스템 아키텍처를 도시한 도면.
제2도는 단일 집적 회로 멀티프로세서의 아키텍처를 도시한 도면.
제3도는 디지탈 영상/그래픽 프로세서의 인터럽트 인에이블 및 인터럽트 플래그 레지스터를 도시한 도면.
제4도는 명령 워드의 필드를 도시한 도면.
제5도는 디지탈 영상/그래픽 프로세서의 통신 레지스터를 도시한 도면.
제6도는 영상 시스템 버스 우선 순위와 동작 방법을 도시한 도면.
제7도는 멀티프로세서 집적 회로내의 크로스바 우선 순위 및 동작 방법을 도시한 도면.
제8도는 본 발명의 실시예의 전송 프로세서 구조를 도시한 도면.
제9도는 LASTPAGE 레지스터의 사용을 도시한 도면.
제10도는 외부 메모리 시퀀스의 상태도와 동작 방법을 도시한 도면.
제11도는 소스 머신 구조를 도시한 도면.
제12도는 패킷 전송 FIFO 버퍼와 캐시 버퍼 산술 동작 및 블럭의 예를 도시한 도면.
제13도는 버퍼 카운트 산술 동작 및 블럭의 예를 도시한 도면.
제14a도는 리틀 엔디언 패킷 전송 FIFO 버퍼 예와 방법을 도시한 도면.
제14b도는 빅 엔디언 패킷 전송 FIFO 버퍼 예와 방법을 도시한 도면.
제15도는 프로세서의 파라메타 메모리의 사용을 도시한 도면.
제16도는 링크 리스트 패킷 전송 방법 예를 도시한 도면.
제17도는 차원 패킷 전송 방법 예를 도시한 도면.
제18도는 고정-패치 델타-가이드 패킷 전송 방법 예를 도시한 도면.
제19도는 고정-패치 오프셋-가이드 패킷 전송 방법 예를 도시한 도면.
제20도는 고정-패치 오프셋-가이드 룩업 테이블 패킷 전송 방법 예를 도시한 도면.
제21도는 리틀 엔디언 가변-패치 가이드 테이블 포맷을 도시한 도면.
제22도는 빅 엔디언 가변-패치 가이드 테이블 포맷을 도시한 도면.
제23도는 가변-패치 델타-가이드 패킷 전송 방법 예를 도시한 도면.
제24도는 가변-패치 오프셋-가이드 패킷 전송 방법 예를 도시한 도면.
제25도는 소스 투과 전송 파라메타 예를 갖는 차원 패킷 전송을 도시한 도면.
제26도는 필 파라메타 예를 갖는 차원 패킷 전송을 도시한 도면.
제27도는 차원 소스 및 고정된 패치 가이드 데스티네이션 패킷 전송 파라메타 예를 도시한 도면.
제28도는 차원 소스 및 가변 패치 가이드 데스티네이션 패킷 전송 파라메타 예를 도시한 도면.
제29도는 차원 블럭 기입 패킷 전송 파라메타 예를 도시한 도면.
제30도는 패킷 전송 파라메타의 패킷 전송 옵션 필드의 엔코딩을 도시한 도면.
제31도는 패킷 전송 타이머 구조를 도시한 도면.
제32도는 중지된 패킷 전송 파라메타의 저장 방식의 예를 도시한 도면.
제33도는 중지된 패킷 서비스 파라메타의 엔코딩을 도시한 도면.
제34도는 리틀 엔디언 모드에서 8x 블럭-기입 비트 리맵핑에서의 비트 리맵핑의 예를 도시한 도면.
제35도는 리틀 엔디언 모드에서 4x 블럭-기입 비트 리맵핑에서의 비트 리맵핑의 예를 도시한 도면.
제36도는 직렬 레지스터 전송 방법 예를 도시한 도면.
제37도는 투과 전송 동작을 도시한 도면
제38도는 투과 전송 및 바이트 기입 로직 회로 실시예를 도시한 도면.
제39도는 고품위 텔레비전 시스템의 일예의 실시예를 도시한 도면.
제40도는 단일 디지탈 영상/그래픽 프로세서를 갖는 멀티프로세서 집적 회로를 포함하는 컬러 팩시밀리 시스템의 일예의 실시예를 도시한 도면.
도면의 주요 부분에 대한 부호의 설명
1 : 호스트 프로세싱 시스템 2 : 호스트 주변
3 : 영상 장치 4 : 영상 포착 제어기
5 : 비디오 RAM 6 : 비디오 RAM
7 : 비디오 펠럿 8 : 비디오 디스플레이
9 : 메모리
100 : 멀티 프로세서 집적 회로
60 : 마스터 프로세서
71, 72 , 73, 74 : 디지탈 영상/그래픽 프로세서
80 : 전송 제어기 90 : 프레임 제어기
202 : 프레임 제어기 203 : 어전트 리프레시
208 : 트리클 리프레시 301 : 내부 메모리 인터페이스
302 : 외부 메모리 인터페이스
303 : 요구 큐잉 및 우선 순위화 로직
310 : 캐시, VRAM, 및 리프레시 제어기
311 : 패킷 전송 FIFO 버퍼 312 : 캐시 버퍼
320 : 소스 머신
330 : 소스 멀티플렉서 및 정렬 로직 340 : 데스티네이션 머신
341 : 데스티네이션 제어 레지스터 342 : 데스티네이션 제어기
350 : 데스티네이션 멀티플렉서 및 정렬 로직
360 : LASTPAGE 레지스터 370 : r1 상태
371 : r2 상태 372 : r3 상태
373 : rf3 상태 374 : tr3 상태
375 : r4 상태 376 : r5 상태
377 : r6 상태 378 : rf6 상태
379 : rf7 상태 380 : rf8 상태
381 : rf9 상태 382 : rhiz 상태
383 : C1, 2 상태 384 : C1, 3 상태
385 : C2, 3 상태 386 : C3 상태
387 : CS1 상태 388 : CS2 상태
389 : CP 상태 390 : CDR 상태
391 : CDW 상태 392 : C1 상태
401 : CACHEADR 레지스터 402 : ABPITCH 레지스터
403 : GTPIPE 레지스터 404 : ASTART 레지스터
405 : BSTART 레지스터 406 : CRNTAPR 레지스터
407 : BCPITCH 레지스터 408 : ACOVINT 레지스터
409 : ACVRRENT 레지스터 410 : BCOVNT 레지스터
411 : BCVRRENT 레지스터 412 : CCVRRENT 레지스터
413 : CBYTES 레지스터 414 : BVFPTR 레지스터
421, 422, 424, 425 : 멀티플렉서 420, 423 : 32 비트 합산기
427 : 어드레스 파이프 라인 428 : 바이트 파이프 라인
429 : 요구 파이프 라인 431 : FCOVNT 레지스터
432 : CHCOVNT 레지스터 433 멀티플렉서 1
434 : 합산기 435 : 멀티플렉서 2
436 : 감산기 437 : 멀티플렉서 3
441 : BVFCOVNT 레지스터 442, 443 : 멀티플렉서
444 : 전 합산기 501 : 테이블 포인터
502 : 가이드 테이블 503 : 엔트리의 수 카운터
504 : 최종 패치스타트 505 : 베이스 어드레스 레지스터
506 : 오프셋 레지스터 511 : 최소 레지스터 PTMIN
512 : 최대 레지스터 PTMAX 513 : 패킷 전송 카운터
514 : 제로 검출기 515 : 타이머 시퀀서
601 : 투과 레지스터
611, 612, 613, 614, 615, 616, 617, 618 : 8 비트 비교기
621, 622, 623, 624 : ½ 워드 AND 게이트들의 집합
631, 632 : 워드 AND 게이트 645 : 멀티플렉서
802 : TV 튜너 803, 812, 822 : 버퍼
811 : CD ROM 플레이어 821 : 케이블 시스템 버스
1301 : 모뎀 1302 : 버퍼
1303 : 비디오 RAM 1304 : 프린터 제어기
1305 ; 컬러 프린터

Claims (14)

  1. 데이타 프로세싱 장치에 있어서,
    복수의 대응하는 어드레스에 데이타를 저장하는 메모리;
    패킷 전송 요구와, 스타트 어드레스, 어드레스 블럭을 정의하는 차원값, 가이드 테이블 엔트리의 개수 및 테이블 포인터를 포함하는 패킷 전송 파라메타를 수신하도록 동작하는 제어회로;
    상기 개수만큼의 가이드 테이블 엔트리를 포함하는 가이드 테이블 - 각각의 가이드 테이블 엔트리는 어드레스 값을 포함하고, 상기 테이블 포인터는 초기에는 상기 가이드 테이블 내의 제1 가이드 테이블 엔트리를 가리킴- ; 및
    상기 제어 회로 및 상기 가이드 테이블에 결합되어 상기 패킷 전송 파라메타로부터 상기 스타트 어드레스, 상기 차원값, 상기 가이드 테이블 엔트리의 개수 및 상기 테이블 포인터를 수신하도록 동작하는 어드레스 발생 회로를 포함하고,
    상기 어드레스 발생 회로는,
    상기 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 상기 어드레스 값의 선정된 조합으로부터 블록 스타트 어드레스를 형성하며, 제1 블럭 스타트 어드레스가 상기 스타트 어드레스이고;
    상기 블럭 스타트 어드레스 및 상기 차원 값으로부터 어드레스 블럭을 형성하고,
    상기 어드레스 블럭에서 메모리 엑세스를 수행하고,
    가이드 테이블 엔트리의 상기 개수보다 적은 메모리 엑세스가 수행되었다면 살기 메모리 엑세스 이후의 상기 가이드 테이블 내의 다음 엔트리를 가리키도록 상기 테이블 포인터를 갱신함으로써,
    상기 가이드 테이블 엔트리에 대응하는 메모리 엑세스를 위한 어드레스 블럭 셋트를 형성하는 것을 특징으로 하는 데이타 프로세싱 장치.
  2. 제1항에 있어서,
    상기 패킷 전송 파라메타들은, 가이드 테이블 엔트리들의 개수와 상기 메모리에서의 한 어드레스를 가리키는 초기 테이블 포인터의 표시를 포함하며, 상기 메모리의 선정된 어드레스 세트에 저장되고;
    상기 가이드 테이블 엔트리들 각각은, 스타트 어드레스, 어드래스값, 및 어드레스 블럭을 정의하는 차원값을 포함하는 상기 메모리 내의 초기 어드레스에 저장되며, 각각의 가이드 테이블 엔트리는 다음 가이드 테이블 엔트리의 초기 어드레스를 가리키는 테이블 포인터를 포함하며, 제1 가이드 테이블 엔트리는 상기 패킷 전송 파라메타들의 상기 테이블 엔트리에 대응하는 초기 어드레스를 갖는 것을 특징으로 하는 데이타 프로세싱 장치.
  3. 제1항에 있어서,
    상기 어드레스 발생 회로는, 상기 어드레스 값을 상기 이전의 블럭 스타트 어드레스에 가산함으로써 상기 스타트 어드레스와 상기 테이블 포인터가 가리키는상기 가이드 테이블 엔트리의 상기 어드레스 값의 상기 선정된 조합을 형성하는 것을 특징으로 하는 데이타 프로세싱 장치.
  4. 제1항에 있어서,
    상기 어드레스 발생 회로는, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 값을 상기 스타트 어드레스에 가산함으로써, 상기 스타트 어드레스와 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 상기 어드레스 값의 상기 선정된 조합을 형성하는 것을 특징으로 하는 데이타 프로세싱 장치.
  5. 제1항에 있어서, 각각의 가이드 테이블 엔트리의 상기 차원 값은, 픽셀 어레이의 수평 차원 값과 수직 차원 값을 포함하는 것을 특징으로 하는 데이타 프로세싱 장치.
  6. 제1항에 있어서, 상기 메모리 엑세스는 상기 어드레스 블럭으로부터의 메모리 판독으로 구성되는 것을 특징으로 하는 데이타 프로세싱 장치.
  7. 제1항에 있어시, 상기 메모리 엑세스는 상기 어드레스 블럭으로의 메모리 기입으로 구성되는 것을 특징으로 하는 데이타 프로세싱 장치.
  8. 제1항에 있어서, 상기 패킷 전송 파라메타 및 상기 가이드 테이블을 저장하는 내부 메모리 - 상기 내부 메모리는 복수개의 대응하는 어드레스들에서 데이타를 저장하며, 상기 내부 메모리의 상기 복수개의 어드레스는 모든 가능한 어드레스보다 작은 내부 어드레스 서브세트를 포함함- , 상기 제어 회로, 및 상기 어드레스 발생 회로를 포함하며, 상기 내부 어드레스 서브세트 내에 있지 않은 어드레스를 갖는 외부 메모리에 액세스하도록 동작하는 외부 메모리 인터페이스를 더 포함하는 단일 반도체 칩상에 배치된 집적 회로를 더 포함하며, 상기 내부 메모리와 외부 메모리는 하나의 어드레스 공간을 포함하는 것을 특징으로 하는 데이타 프로세싱 장치.
  9. 제1항에 있어서, 상기 어드레스 발생 회로는,
    소스 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 소스 어드레스값의 선정된 조합으로부터 소스 블럭 스타트 어드레스를 형성하고 - 제1 소스 블럭 스타트 어드레스가 상기 스타트 어드레스임- ,
    상기 소스 블럭 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 소스 차원값으로부터 소스 어드레스 블럭을 형성하고,
    목적지 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 목적지 어드레스값의 선정된 조합으로부터 목적지 블럭 스타트 어드레스를 형성하고 - 제1 목적지 블럭 스타트 어드레스가 상기 스타트 어드레스임- ,
    상기 목적지 블럭 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 목적지 차원값으로부터 목적지 어드레스 블랙을 형성함으로써,
    상기 가이드 테이블에 대응하는 메모리 액세스를 위한 소스 및 목적지 어드레스 블럭의 상기 세트를 형성하는 것을 특징으로 하는 데이타 프로세싱 장치.
  10. 제9항에 있어서,
    상기 어드레스 발생 회로는, 상기 소스 어드레스값을 상기 이전의 소스 블럭 스타트 어드레스에 가산함으로써, 상기 소스 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 상기 소스 어드레스 값의 상기 선정된 조합을 형성하는 것을 특징으로 하는 데이타 프로세싱 장치.
  11. 제9항에 있어서,
    상기 어드레스 발생 회로는, 상기 목적지 어드레스값을 상기 이전의 목적지 블럭 스타트 어드레스에 가산함으로써, 상기 목적지 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 상기 목적지 어드레스 값의 상기 선정된 조합을 형성하는 것을 특징으로 하는 데이타 프로세싱 장치.
  12. 제9항에 있어서,
    상기 어드레스 발생 회로는, 상기 소스 어드레스값을 상기 스타트 어드레스에 가산함으로써, 상기 소스 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 상기 소스 어드레스 값의 상기 선정된 조합을 형성하는 것을 특징으로 하는 데이타 프로세싱 장치.
  13. 제9항에 있어서,
    상기 어드레스 발생 회로는, 상기 목적지 어드레스값을 상기 스타트 어드레스에 가산함으로써, 상기 목적지 스타트 어드레스와, 상기 테이블 포인터가 가리키는 상기 가이드 테이블 엔트리의 상기 목적지 어드레스 값의 상기 선정된 조합을 형성하는 것을 특징으로 하는 데이타 프로세싱 장치.
  14. 제9항에 있어서, 각각의 가이드 테이블 엔트리의 상기 소스 차원값은, 픽셀 어레이의 수평 소스 차원값과 수직 소스 차원값을 포함하며,
    각각의 가이드 테이블 엔트리의 상기 목적지 차원값은, 픽셀 어레이의 수평 목적지 차원값과 수평 목적지 차원값을 포함하는 것을 특징으로 하는 데이타 프로세싱 장치.
KR1019950005074A 1994-03-08 1995-03-08 데이터전송에의해제어되는가이드테이블을갖는데이터프로세싱장치 KR100372061B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US8/209,123 1994-03-08
US8/209,124 1994-03-08
US08/209,124 US5487146A (en) 1994-03-08 1994-03-08 Plural memory access address generation employing guide table entries forming linked list
US08/209124 1994-03-08
US08/209,123 US5651127A (en) 1994-03-08 1994-03-08 Guided transfers with variable stepping
US08/209123 1994-03-08

Publications (2)

Publication Number Publication Date
KR950033816A KR950033816A (ko) 1995-12-26
KR100372061B1 true KR100372061B1 (ko) 2003-03-12

Family

ID=26903840

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950005074A KR100372061B1 (ko) 1994-03-08 1995-03-08 데이터전송에의해제어되는가이드테이블을갖는데이터프로세싱장치

Country Status (4)

Country Link
EP (1) EP0671718B1 (ko)
JP (1) JPH0877347A (ko)
KR (1) KR100372061B1 (ko)
DE (1) DE69524798T2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3062418B2 (ja) 1995-06-02 2000-07-10 キヤノン株式会社 表示装置並びに表示システム及び表示制御方法
DE10303095A1 (de) * 2003-01-27 2004-08-12 Infineon Technologies Ag Datenverarbeitungsvorrichtung
JP4331488B2 (ja) 2003-02-20 2009-09-16 パナソニック株式会社 集積回路及びそれを用いた電子機器
EP1591906A1 (en) 2004-04-27 2005-11-02 Texas Instruments Incorporated Efficient data transfer from an ASIC to a host using DMA
US8416251B2 (en) 2004-11-15 2013-04-09 Nvidia Corporation Stream processing in a video processor
CA2585157A1 (en) * 2004-11-15 2006-05-26 Nvidia Corporation Video processing
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1981002487A1 (en) * 1980-02-29 1981-09-03 Calma Graphics display system and method
US5251303A (en) * 1989-01-13 1993-10-05 International Business Machines Corporation System for DMA block data transfer based on linked control blocks
WO1992002879A1 (en) * 1990-08-03 1992-02-20 Du Pont Pixel Systems Limited Virtual memory system
GB2250615B (en) * 1990-11-21 1995-06-14 Apple Computer Apparatus for performing direct memory access with stride

Also Published As

Publication number Publication date
JPH0877347A (ja) 1996-03-22
EP0671718B1 (en) 2002-01-02
EP0671718A1 (en) 1995-09-13
KR950033816A (ko) 1995-12-26
DE69524798T2 (de) 2002-08-14
DE69524798D1 (de) 2002-02-07

Similar Documents

Publication Publication Date Title
KR100372061B1 (ko) 데이터전송에의해제어되는가이드테이블을갖는데이터프로세싱장치
US6185629B1 (en) Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5560030A (en) Transfer processor with transparency
US5487146A (en) Plural memory access address generation employing guide table entries forming linked list
US5524265A (en) Architecture of transfer processor
US5724599A (en) Message passing and blast interrupt from processor
US5651127A (en) Guided transfers with variable stepping
US5493646A (en) Pixel block transfer with transparency
US5956744A (en) Memory configuration cache with multilevel hierarchy least recently used cache entry replacement
US5850632A (en) Memory access controller utilizing cache memory to store configuration information
KR100246067B1 (ko) 집적회로 장치와 디지탈 데이타 처리 및 비디오 디스플레이 신호 발생 시스템
TWI423161B (zh) 繪圖處理單元、元命令處理系統以及元命令執行方法
US6247084B1 (en) Integrated circuit with unified memory system and dual bus architecture
AU714338B2 (en) System for allowing I/O processor to operate under different transfer algorithms
US6948050B1 (en) Single integrated circuit embodying a dual heterogenous processors with separate instruction handling hardware
US20090259789A1 (en) Multi-processor, direct memory access controller, and serial data transmitting/receiving apparatus
US20010021971A1 (en) System for executing instructions having flag for indicating direct or indirect specification of a length of operand data
US20070091102A1 (en) GPU Pipeline Multiple Level Synchronization Controller Processor and Method
US7016984B2 (en) System controller using plural CPU&#39;s
US20060010261A1 (en) Highly concurrent DMA controller with programmable DMA channels
JPH0749676A (ja) フルカラー2次元グラフイツクスのためのグラフイツクスエンジン
US6339427B1 (en) Graphics display list handler and method
JP3518788B2 (ja) デジタル・データ及びビデオ信号の処理デバイス及びシステム
KR100356884B1 (ko) 투과기록제어를위한투과레지스터를구비한데이터프로세서
KR100218619B1 (ko) 집적회로 장치와, 디지탈 데이타 처리 및 비디오 디스플레이신호발생시스템

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: 20121227

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20131227

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 13

EXPY Expiration of term