KR20010052436A - 병렬 데이터 처리 - Google Patents

병렬 데이터 처리 Download PDF

Info

Publication number
KR20010052436A
KR20010052436A KR1020007013446A KR20007013446A KR20010052436A KR 20010052436 A KR20010052436 A KR 20010052436A KR 1020007013446 A KR1020007013446 A KR 1020007013446A KR 20007013446 A KR20007013446 A KR 20007013446A KR 20010052436 A KR20010052436 A KR 20010052436A
Authority
KR
South Korea
Prior art keywords
data
instruction word
instruction
processor
control processor
Prior art date
Application number
KR1020007013446A
Other languages
English (en)
Inventor
듀란톤마르크
Original Assignee
롤페스 요하네스 게라투스 알베르투스
코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/282,325 external-priority patent/US6349378B1/en
Priority claimed from US09/333,633 external-priority patent/US6405301B1/en
Application filed by 롤페스 요하네스 게라투스 알베르투스, 코닌클리즈케 필립스 일렉트로닉스 엔.브이. filed Critical 롤페스 요하네스 게라투스 알베르투스
Publication of KR20010052436A publication Critical patent/KR20010052436A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

데이터 처리 장치(DPA)는 동작(O)을 병렬로 수행하는 다수의 데이터 처리기(P)를 포한한다. 처리기(P)에 의해 수행되는 동작(O)은 데이터 처리기(P)에 공급되는 명령어 워드(IW)에 의해 정의된다. 데이터 처리 장치(DPA)는 명령어 워드 구성 소프트웨어(IWSC)에 근거하여 명령어 워드의 합성어(VLIW)를 만드는 제어 처리기(CP)를 포함한다. 명령어 워드의 합성어(VLIW)는 병렬로 수행되는 동작(O)을 정의한다. 명령어 워드 구성 소프트웨어의 기억장치는 일반적으로 VLIW의 기억장치가 필요로 하는 메모리 공간보다 더 작은 메모리 공간을 필요로 할 것이다. 이것이 제공하는 비용 절감은 명령어 워드의 합성어를 만드는 제어 처리기와 관련된 추가 비용보다 더 가치가 있을 것이다. 따라서, 전술한 데이터 처리 장치는 더 나은 비용 효율을 산출한다.

Description

병렬 데이터 처리{PARALLEL DATA PROCESSING}
유럽 특허 출원 공개 번호 제 0,373,714 호(대리인 관리 번호 제 PHN12.762 호)에는 다수의 병렬 동작하는 처리기 소자를 포함하는 데이터 처리기가 개시되어 있다. 이 데이터 처리기는 각각의 처리기 소자를 위한 프로그램 메모리도 포함한다. 프로그램 메모리는 마이크로 명령어(micro-instruction)를 포함한다. 활성화된 마이크로 명령어는 프로세서 소자의 동작을 제어한다. 프로그램 메모리는 두 개의 라인에 접속된다. 이들 라인상에는, 리셋 신호가, 예를 들면 어드레스 카운터가 초기 위치로 설정되도록 메모리에 대해 실릴 수 있다. 따라서, 다양한 프로그램의 시작이 동기화된다. 이 접속상에는 또한 초기화 정보도 실릴 수 있는데, 이로써 소정의 메모리가 어드레스 지정된 뒤, 프로그램 정보로 채워질 수 있다.
본 발명은 동작을 병렬로 수행하는 다수의 데이터 처리기를 포함하는 데이터 처리 장치에 관한 것으로, 이때 데이터 처리기에 의해 수행되는 동작은 데이터 처리기에 공급되는 명령어 워드(instruction word)에 의해 정의된다.
도 1a, 도 1b는 청구항 제 1 항에 청구된 본 발명의 기본 특징을 설명하는 개념도이다.
도 2, 도 3, 도 4는 청구항 제 2 항, 제 3 항, 제 4 항에 각기 청구된 추가적인 특징을 예시하는 개념도이다.
도 5는 본 발명에 따른 멀티미디어 처리기의 일 예를 예시하는 블록도이다.
도 6은 도 5에 예시된 멀티미디어 처리기내의 비디오 출력 유닛을 위한 프로그래밍 구도를 예시하는 매트릭스이다.
도 7은 비디오 출력 유닛이 디스플레이 장치에 공급해야 하는 프레임을 예시하는 개념도이다.
도 8은 비디오 출력 유닛내의 주 제어 처리기에 공급되는 주 명령어 시리즈(a series of main instructions)를 예시하는 흐름도이다.
도 9는 주 제어 처리기의 구현을 예시하는 블록도이다.
도 10은 주 제어 치리기를 위한 다양한 유형의 명령어들과 이들 명령어내에 포함된 비트들 사이의 관계를 예시하는 차트이다.
본 발명의 목적은 비용 효율이 더 나은 데이터 처리 장치를 제공하는 것이다.
본 발명은 다음의 측면들을 고려한 것이다. 데이터 처리 장치는 흔히 특정한 데이터 처리 기능을 연속하는 처리 단계로 수행한다. 처리 단계에서 각각의 처리기는 특정 동작을 수행한다. 결국, 각각의 처리 단계에는 각각의 처리기를 위한 명령어 워드가 존재한다. 처리 단계에서 인가되는 명령어 워드들의 합성어(composition)는 하나의 매우 긴 명령어 워드(very long instruction word;VLIW)로 간주할 수 있다.
종래에는, 각각의 처리기 소자를 대해 프로그램 메모리가 존재하고, 각각의 프로그램 메모리는 각 처리 단계에 관한 명령어 워드를 포함한다. 즉, 프로그램 메모리는 각 처리 단계에 대해 VLIW를 하나의 전체(a whole)로서 고려한다. 따라서, 프로그램 메모리는 비교적 큰 크기를 가져야 하고, 그러므로 이런 메모리들은 비교적 비싸다. 이 문제는 특히 처리 단계의 수나 또는 처리기 개수가 비교적 클 때, 그리고 최악의 경우에는 이 둘 모두가 클 때에도 적용된다.
즉, 종래의 프로그램 메모리는 비교적 큰 크기를 가지므로, 이들을 데이터 처리 소자와 함께 단일 집적 회로로 구현하는 것이 불가능했다. 데이터 처리 소자를 구성하는 집적 회로와 프로그램 메모리 사이에는 버스 시스템이 필요할 것이다. 버스 시스템은 각 처리 단계에 VLIW를 운반하는 것을 필요로 한다. 따라서, 버스 시스템이 시간 단위당 비교적 큰 분량의 데이터를 운반하는 것이 요구된다. 그 결과로서, 비용이 비교적 비싸진다.
본 발명에 따르면, 데이터 처리 장치는 명령어 워드 구성 소프트웨어에 근거하여 명령어 워드의 합성어를 만드는 제어 처리기를 포함한다. 명령어 워드의 합성어는 병렬로 수행되는 동작을 정의한다. 즉, 제어 워드의 합성어는 VLIW를 구성한다.
명령어 워드 구성 소프트웨어의 기억장치는 일반적으로 VLIW의 기억장치가 필요로 하는 메모리 공간보다 더 작은 메모리 공간을 필요로 할 것이다. 이것이 제공하는 비용 절감은 명령어 워드의 합성어를 만드는 제어 처리기와 관련된 추가 비용보다 더 가치가 있을 것이다. 따라서, 본 발명은 더 나은 비용 효율을 산출한다.
본 발명은 데이터 처리 장치가 집적 회로의 형태일 때 특히 더 나은 비용 효율을 산출한다. 이것은 제어 프로세서가 집적 회로의 일부를 형성하므로 결국 VLIW가 집적 회로 내부에서 발생됨을 의미한다. 결과적으로, 외부 메모리와 집적 회로 사이에 존재하는 버스 시스템이 VLIW를 운반할 필요가 없어진다. 이것은 비용 효율에 기여하는 대역폭 관련 버스 시스템 요구 사항를 완화시킨다.
본 발명의 다른 이점은 다음의 측면에 관련된다. 데이터 처리기 소자에 연속적으로 공급되는 VLIW 시리즈(a series of VLIWs)는 데이터 처리 장치가 수행하는 데이터 처리 기능을 결정한다. 데이터 처리 장치가 다른 데이터 처리 기능을 수행한다고 가정해 보자. 이 경우, 새로운 VLIW 시리즈가 데이터 처리기로 공급되어야 한다. 만약 VLIW이 종래처럼 프로그램 메모리에 기억되어 있다면, 프로그램 메모리내의 VLIW 시리즈는 새로운 VLIW 시리즈로 대체될 필요가 있다. 이것은 일반적으로 노동 집약적이고 시간이 걸리는 작업이다. 대조적으로, 본 발명에서는, 명령어 워드 구성 프로그램을 새로운 명령어 구성 프로그램으로 대체하는 것만이 필요하다. 이것은 VLIW 시리즈를 대체하는 것보다 훨씬 덜 노동 집약적이고 시간이 덜 걸린다. 따라서, 본 발명은 이용을 더 많이 용이하게 한다.
본 발명을 유리하게 구현하기 위해 선택적으로 이용될 수 있는 본 발명의 추가 특징은 이후에 설명되는 도면과 관련하여 명확하게 설명될 것이다.
다음의 설명은 참조 부호에 관한 것이다. 모든 도면에서 동일한 개체는 동일한 참조 문자로 표시된다. 몇몇의 유사한 개체가 하나의 도면에 표시되었다. 이 경우, 동일한 개체를 구별하기 위해 숫자 혹은 접미사가 참조 문자에 부가된다. 숫자 혹은 접미사는 편의상 생략될 수도 있고, 또는 그 값이 중요치 않은 경우(값이 무관할 경우)에는 별표로 대체될 수도 있다. 이것은 설명뿐만 아니라 특허청구범위에도 적용된다.
도 1a 및 도 1b는 본 발명의 기본 특징을 실선으로 예시한다. 데이터 처리 장치 DPA는 동작 O을 병렬로 처리하는 다수의 데이터 처리기 P를 포함한다. 처리기 P에 의해 수행되는 동작 O은 데이터 처리기 P에 공급되는 명령어 워드 IW에 의해 정의된다. 데이터 처리 장치 DPA는 명령어 워드 구성 소프트웨어 IWCS에 근거하여 명령어 워드의 합성어 VLIW를 만드는 제어 처리기 CP도 포함한다. 명령어 워드의 합성어 VLIW는 병렬로 수행되는 동작 O을 정의한다. 도 1a는 시간 T=t[i]에서 명령어 워드의 합성어 VLIW[x]가 데이터 처리기 P에 인가되는 것을 예시한다. 도 1b는 다른 제어 워드 합성어 VLIW[y]가 시간 T=t[i+1]에서 데이터 처리기 P로 인가되는 것을 예시한다.
도 1a, 도 1b에 예시된 특징을 유리하게 구현하기 위해서, 다음의 측면이 고려된다. 원칙적으로, 데이터 처리 장치 DPA는 상이한 데이터 처리 기능들을 수행할 수 있다. 각각의 데이터 처리 기능은 일반적으로 특정한 VLIW 시리즈가 연속적으로 인가되는 것을 필요로 한다. 각각의 데이터 처리 기능에 대해 독립적으로 명령어 워드 구성 소프트웨어 IWCS를 개발하는 것이 가능하다. 다음, 특정 데이터 처리 기능에 대한 명령어 워드 구성 소프트웨어 IWCS는 필요한 VLIWs 시리즈를 발생한다.
실제, 데이터 처리 장치는 예컨대 비디오 데이터처럼 특별한 유형의 데이터를 처리하기 위해 이용되는 것이 일반적이다. 이러한 응용에서, 데이터 처리 장치가 수행할 수 있어야 하는 상이한 데이터 처리 기능들 사이에는 어느 정도 공통성이 있을 것이다. 즉, 비록 상이한 데이터 처리 기능들은 상이한 VLIWs 시리즈를 필요로 하지만, 상이한 VLIW 시리즈는 예컨대 VLIW 자체이거나 혹은 VLIWs의 서브 시리즈(subseries)인 요소들(elements)을 공통으로 가질 것이다.
도 2는 도 1a, 도 1b에 도시된 특징들에 덧붙여서 선택적으로 적용되는 다음의 특징들을 예시한다. 이 데이터 처리 장치는 명령어 워드 합성 서브루틴 SROU을 기억하는 프로그램 메모리 PMEM를 포함한다. 명령어 워드 합성 서브루틴 SROU은 제어 처리기 CP로 하여금 적어도 하나의 명령어 워드 합성어 VLIW를 만들게 한다.
도 2의 특징들은 다음의 이점들을 제공한다. 데이터 처리 기능을 위한 VLIWs의 시퀀스는 실행될 서브루틴의 시퀀스의 견지에서 설명될 수 있다. 따라서, 새로운 데이터 처리 기능은 새로운 서브루틴 시퀀스를 정의함으로써 얻어질 수 있다. 이것은 독립적인 명령어 워드 구성 프로그램을 개발하는 것보다 일반적으로 덜 노동 집약적이며, 시간이 덜 걸리는 작업이다. 결과적으로, 도 2에 예시된 특징은 이용을 용이하게 하는 것에 기여한다.
도 2에 예시된 특징의 다른 이점은 다음의 측면들과 관계있다. 이것은 서브루틴 시퀀스의 견지에서 데이터 처리 기능에 대해 VLIWs 시퀀스를 기술하기 위해 비교적 적은 데이터를 필요로 한다. 결과적으로, 이 데이터를 기억하기 위해 비교적 작은 메모리 공간이 필요할 것이다. 더욱이, 이 데이터가 제어 처리기에 공급되어야 하는 속도도 비교적 느릴 것이다. 이것은 제어 처리기가 데이터를 수신하는 모든 버스 시스템에 대한 요구를 완화시킨다. 결과적으로, 도 2에 예시된 특징들은 비용 효율에 기여한다.
도 1a, 도 1b에 예시된 특징들을 유리하게 구현하기 위해, 다음의 또다른 측면들이 고려되어야 한다. 실제로, 데이터 처리기 P는 일반적으로 그 내용이 데이터 처리기 P의 동작을 결정하는 제어 레지스터를 구비한다. 따라서, 제어 처리기 CP는 명령어 워드 IW를 다양한 제어 레지스터에 기입함으로써 VLIW를 구성할 것이다. 실제로 제어 처리기 CP는 클록 사이클당 비교적 적은 제어 레지스터에 기입할 수 있다. 예를 들면, 제어 처리기 CP는 클록 사이클당 하나의 제어 레지스터에만 기입할 수 있다. 결과적으로, 제어 처리기 CP는 VLIW를 구성하는데 몇 개의 클록 사이클만 소비할 것이다. 사실상, 제어 처리기ㅣ CP는 각 클록 사이클마다 변환형 VLIW(transitional VLIW)를 발생한다.
제어 처리기 CP가 명령어 워드 IW를 제어 레지스터에 기입하면 명령어 워드 IW는 즉시 영향을 미치는 것으로 가정하자. 이 경우, 제어 처리기 CP가 VLIW를 구성하는 동안에는 어떠한 데이터 처리도 존재하지 않아야 한다. 이것은 변환형 VLIW가 데이터 처리에 영향을 미치는 것을 막는 것이다. 결과적으로, 명령어 워드 IW가 즉시 영향을 미칠 경우, 새로운 VLIW는 비교적 오랜 데이터 처리 중단을 필요로 할 것이다. 이것은 특히 새로운 VLIW가 그 선행하는 VLIW와 상당히 다를 때 적용된다.
도 3은 도 1a, 도 1b에 예시된 특징에 추가하여 선택적으로 적용될 수 있는 다음의 특징들을 예시한다. 이 데이터 처리기 P는 프론트 레지스터(front registor) FREG를 갖는데, 이 프론트 레지스터에는 제어 처리기 CP가 명령어 워드 IW를 기입할 수 있다. 데이터 처리기 P는 또한 섀도 레지스터(shadow registor) SREG도 갖는데, 이 섀도 레지스터의 내용은 데이터 처리기 P의 동작을 결정한다. 섀도 레지스터 SREG는 제어 처리기 CP로부터의 적재 커맨드(load command)에 응답하여 프론트 레지스터 FREG로부터 명령어 워드 IW를 가져온다.
도 3은 다음의 이점을 제공한다. 제어 처리기 CP가 명령어 워드 IW를 프론트 레지스터 FREG에 기입할 때에는 명령어 워드 IW가 즉시 영향을 미치지 않는다. 명령어 워드 IW는 섀도 레지스터 SREG에 전송될 때에만 영향을 미친다. 결과적으로, 섀도 레지스터 SREG에 포함된 현재의 VLIW에 따라서 데이터 처리기 P가 데이터를 처리하는 동안에, 주 제어 처리기 MCP는 명령어 워드 IW를 프론트 레지스터 FREG에 기입하여 새로운 VLIW를 구성할 수 있다. 오로지 명령어 워드 IW가 프론트 레지스터 FREG에서 섀도 레지스터 SREG로 전송될 때에만 데이터 처리가 중단될 필요가 있다. 이러한 전송은 단 하나의 클록 사이클동안에 병렬로 행해질 수 있다. 결과적으로, 데이터 처리 장치는 비교적 많은 비율의 시간을 데이터 처리 그 자체에 충당할 수 있다. 따라서, 도 3에 예시된 특징은 데이터 처리 효율에 기여한다.
도 1a, 도 1b에 예시된 특징을 유리하게 구현하기 위해, 다음의 또다른 측면을 고려한다. 전술하였듯이, 제어 처리기 CP는 명령어 워드 IW를 다양한 제어 처리기에 속한 제어 레지스터에 기입함으로써 VLIW를 구성할 수 있다. 실제로, 제어 처리기 CP는 명령어 워드 구성 소프트웨어 IWSC에 속한 명령어를 실행하는 연산 처리 장치를 포함할 것이다. 명령어 워드 구성 소프트웨어 IWSC는 각각의 명령어 워드 IW가 제어 레지스터에 기입되도록 하는 기입 명령어를 포함할 수도 있다. 이 경우, 연산 처리 장치는 VLIW를 구성하기 위해 비교적 많은 기입 명령어를 처리할 필요가 있을 것이다. 따라서, 연산 처리 장치는 다른 유형의 명령어를 실행하기 위해 이용할 수 있는 시간이 상대적으로 작을 것이다.
도 4는 도 1a, 도 1b에 예시된 특징에 추가하여 선택적으로 적용할 수 있는 다음 특징들을 예시한다. 제어 프로세서 CP는 직접 메모리 접근 회로 DMAC를 포함한다. 직접 메모리 접근 회로 DMAC는 메모리 MEM로부터 명령어 워드 IW의 블록 B을 몇몇 데이터 처리기 P로 자율적으로 전송할 수 있다.
도 4에 예시된 특징들은 다음의 이점을 제공한다. 비교적 큰 명령어 워드 시리즈 IW가 기입되어야 할 경우에 제어 처리기 CP는 직접 메모리 접근 회로 DMAC를 이용한다. 명령어 워드 IW의 전송을 위해 직접 메모리 접근 회로 DMAC를 셋업하는 데에는 일반적으로 비교적 적은 명령어를 필요로 한다. 직접 메모리 접근 회로 DMAC는 전송을 자율적으로 수행할 수 있기 때문에, 예컨대 연산 처리 장치 같은 제어 처리기 CP의 다른 부분은 다른 임무를 수행할 수 있다. 결과적으로, 도 4에 예시된 특징은 제어 처리기 CP의 효율적인 이용에 기여한다.
도 5는 전술한 도 1 내지 도 4에 예시된 특징들을 병합한 멀티미디어 처리기의 일 예를 예시한다. 멀티미디어 처리기는 코드화된 비디오 데이터를 포함하는 입력 데이터 IN를 처리하여, 특히 디스플레이 장치상의 디스플레이에 적합한 비디오 데이터 스트림 VDS을 제공한다. 멀티미디어 처리기는 주 인터페이스 MIF, 주 버스 HWY, 중앙 처리 장치 CPU, 주 명령어 레지스터 REG, 여러가지 주 처리기를 포함한다. 두 개의 주 처리기, 즉, 비디오 디코더 VDEC와 비디오 출력 유닛 HDVO이 도시되어 있다. 비디오 출력 유닛 HDVO은 주 제어 처리기 MCP와, 다음의 데이터 처리 소자 즉, 인터페이스 IF, 판독 크로스바 XB/W, 기입 크로스바 XB/R, 메모리 블록 MB, 처리기 P, 스트림식 출력 회로(streaming-out circuit) SO를 포함한다. 스트림식 출력 회로 SO는 버퍼 BUF, 멀티플렉서 MUX, 제어기 CON를 포함한다. 각각의 데이터 처리 소자는 제어 레지스터를 구비한다. 도 5에 도시되지 않은 제어 레지스터는 도 3에 예시된 구조를 갖는다. 즉, 제어 레지스터는 프론트 레지스터와 섀도 레지스터를 포함한다.
멀티미디어 처리기는 기본적으로 다음과 같이 동작한다. 중앙 처리 장치 CPU는 주 명령어 워드로 멀티미디어 처리기의 여러가지 소자를 제어한다. 주 인터페이스 MIF는 입력 데이터 IN를 예컨대 외부 주 메모리로부터 페치한다. 이 메모리는 도 5에 도시하지 않았다. 비디오 디코더 VDEC는 입력 데이터 IN에 포함되어 있는 코드화된 비디오 데이터를 디코드한다. 따라서, 디코드된 비디오 데이터가 획득되고, 이것은 외부 주 메모리에 임시로 기억될 수 있다. 비디오 출력 유닛 HDVO은 디코드된 비디오 데이터가 특정 디스플레이 장치상에서의 디스플레이에 적합하게 되도록 한다. 또한, 비디오 출력 유닛 HDVO은 디코드된 비디오 데이터를 다른 비디오 데이터와 조합하여, 예컨대 PIP 또는 혼합(blending) 같은 특징을 제공하도록 할 수도 있다.
이제 비디오 출력 유닛 HDVO의 동작을 보다 상세히 설명하겠다. 비디오 출력 유닛 HDVO은 구성 단계와 처리 단계를 교대로 수행한다. 구성 단계에서, 주 제어 처리기 MCP는 적재 커맨드를 데이터 처리 소자의 제어 레지스터에 공급한다. 전술한 바와 같이, 각각의 제어 레지스터는 도 3에 예시되어 있는 프론트 레지스터와 섀도 레지스터를 포함한다. 따라서, 섀도 레지스터는 적재 커맨드에 응답하여 프론트 레지스터에 포함되어 있는 명령어 워드를 적재한다. 그러므로, 명령어 워드는 구성 단계에 후속하는 처리 단계 동안에 관련되는 데이터 처리 소자의 동작을 결정할 것이다. 예를 들면, 크로스바 XB/W, XB/R의 섀도 레지스터에 적재된 명령어 워드는 한편으로는 메모리 블록 MB와, 다른 한편으로는 인터페이스 IF, 스트림식 출력 회로 SO, 처리기 P 와의 사이의 접속을 결정한다. 제어 레지스터는 섀도 레지스터에 명령어 워드가 적재되면 구성 완료 신호(configuration-done signal)을 주 제어 처리기 MCP로 공급한다. 주 제어 처리기 MCP는 모든 데이터 처리 소자의 제어 레지스터로부터 구성 완료 신호를 수신하면 처리기 P로 처리 시작 신호(start-processing signal)를 공급한다. 처리 시작 신호는 처리 단계의 시작을 표시한다.
처리 단계에서, 각각의 처리기 P는 자신이 접속된 메모리 블록 MB에 기억되어 있는 특정 개수의 화소를 처리한다. 처리 단계에서 처리기 P가 처리하는 화소의 개수는 256을 초과하지 않는다. 처리될 화소의 개수는 예를 들면 명령어 워드에 의해 정의될 수도 있다. 처리기 P가 화소를 처리하는 동안, 주 제어 처리기 MCP는 데이터 처리 소자의 프론트 레지스터에 새로운 명령어를 기입함으로써 새로운 VLIW를 구성할 수 있을 것이다. 일단 처리기 P가 자신의 화소 개수를 처리하면, 이것은 처리를 중지하고, 동작 종료 신호(end-operation signal)를 주 제어 처리기 MCP로 공급한다. 모든 처리기 P가 주 제어 처리기 MCP로 동작 종료 신호를 공급하면 처리 단계는 종료한다. 이에 응답하여, 주 제어 처리기 MCP는 새로운 구성 단계를 수행할 것이다.
따라서, 비디오 출력 유닛 HDVO은 디코드된 비디오 데이터를 블록 단위 방식으로 처리한다. 예를 들면, 제 1 처리 단계에서, 인터페이스 IF는 기입 크로스바 XB/W를 통해 256개 화소의 블록을 메모리 블록 MB1에 기입한다. 제 2 처리 단계에서, 처리기 P1는 메모리 블록 MB1으로부터 256개 화소의 블록을 판독하여, 이것을 처리한다. 처리기 P1는 예를 들면 동일한 주사선에 속한 몇 개의 화소들의 가중 조합을 만드는 수평 비디오 필터일 수도 있다. 따라서, 처리기 P1는 수평방향으로 필터링된 화소들의 블록을 제공하고, 이 블록을 메모리 블록 MB2에 기입한다. 제 3 처리 단계에서, 처리기 P2는 처리되어 수평 방향으로 필터링된 화소들의 블록을 메모리 블록 MB2로부터 판독하여 이것을 처리한다. 처리기 P2는 예를 들면 이웃 주사선에 속하는 대응하는 화소들의 가중 조합을 만드는 수직 비디오 필터일 수도 있다. 만약 수평 방향으로 필터링된 화소들의 블록이 하나의 주사선에 속할 경우, 처리기 P2는 이웃 주사선에 속하는 수평 방향으로 필터링된 화소들의 다른 블록을 판독할 것이다. 따라서, 처리기 P2는 수평 및 수직 방향으로 필터링된 화소들의 블록을 제공하고, 이 블록을 메모리 블록 MB3에 기입한다. 처리기 P3 또는 P4, 혹은 이 둘 모두가 메모리 블록 MB3에 포함된 수평 및 수직 방향으로 필터링된 화소들의 블록을 다시 처리하는 또다른 처리 단계가 존재할 수도 있다. 예를 들자면, 수평 및 수직 방향으로 필터링된 화소들의 블록이 비디오 데이터 스트림 VDS의 일부를 형성할 준비가 되었다고 가정하자. 그러면, 제 4 처리 단계에서, 이 블록은 메모리 블록 MB3에서 스트림식 출력 회로 SO의 버퍼 BUF로 전송될 것이다.
스트림식 출력 회로 SO는 일반적으로 각각의 처리 단계에서 처리된 화소들의 블록을 수신하여, 이것을 버퍼 BUF에 기억한다. 스트림식 출력 회로 SO는 비디오 데이터 스트림을 제공하기 위해 버퍼 BUF로부터 처리된 화소들을 판독한다. 제어기 CON는 예컨대 주사선 주파수, 필드 주파수, 주사선당 화소 수, 필드당 주사선 수와 관련하여 원하는 비디오 데이터 스트림 포맷을 이미 알고 있다. 제어기 CON는 처리된 화소들이 제 때에 그리고 원하는 속도로 버퍼 BUF로부터 판독되도록 한다. 제어기 CON는 또한 이 화소들과 예컨대 수평 및 수직 동기 신호 HS, VS같은 몇몇 제어 신호를 수신하는 멀티플렉서 MUX를 제어한다. 따라서, 적절한 제어 신호가 제 때에 화소들 사이에 삽입된다.
사실상, 비디오 출력 유닛 HDVO은 데이터 처리 소자들 즉, 인터페이스 IF, 판독 크로스바 XB/W, 기입 크로스바 XB/R, 메모리 블록 MB, 처리기 P, 스트림식 출력 회로 SO로 구성된 데이터 처리 체인(dats processing chain)이다. 주 제어 처리기 MCP는 데이터 처리 체인의 구성을 결정한다. 이것은 또한 체인내의 각 소자의 데이터 처리 특성을 결정한다. 주 제어 처리기 MCP는 적절한 명령어 워드를 데이터 처리 소자의 제어 레지스터에 기입함으로써 전술한 결정을 행한다. 말하자면, 주 제어 처리기 MCP는 여러가지 기계를 갖는 생산장의 감독관처럼 간주될 수 있다. 생산장은 비디오 출력 유닛 HDVO에 해당하고, 기계는 비디오 출력 유닛 HDVO의 데이터 처리 소자에 해당한다. 감독관은 생산 라인을 구성하고 기계에게 무엇을 해야할지 지시한다. 생산 라인은 데이터 처리 체인에 해당한다.
비디오 출력 유닛 HDVO이 프레임당 주사선 수 및 주사선당 화소 수 등과 관련하여 하나의 비디오 신호를 어떤 포맷에서 다른 포맷으로 변환해야 하는 것을 가정해 보자. 이것은 적절한 수평 및 수직 필터링을 포함하는 데이터 처리 체인에 의해 달성될 수 있다. 포맷 변환의 시작시, 데이터 처리 체인은 완전히 동작하기 전에 먼저 화소들로 채워져야 한다. 포맷 변환의 종료시, 데이터 처리 체인은 중단되거나 해체되기 전에 예전처럼 비어 있어야 한다.
예를 들면, 변환될 비디오 신호의 제 1 화소 블록이 비디오 출력 유닛 HDVO에 공급될 때, 데이터 처리 체인의 도입부에 있는 데이터 처리 소자만이 활동상태이어야 한다. 이 때, 메모리 블록 MB은 아직 프레임 화소들로 채워지지 않는다. 각각의 처리 단계를 거치면서, 더 많은 메모리 블록들이 화소들로 채워질 것이고, 더 많은 데이터 처리 소자들이 활동 상태로 될 것이다. 이것은 데이터 처리 체인내의 메모리 블록 MB 마다 화소로 채워질 때까지 계속된다. 다음, 데이터 처리 체인은 완전히 동작적이 되고, 스트림식 출력 회로 SO는 화소를 제공하기 시작할 수 있다.
도 6은 비디오 출력 유닛 HDVO에 대한 프로그래밍 구도를 예시한다. 도 6은 매트릭스이다. 이 매트릭스의 컬럼은 데이터 처리 소자를 나타낸다. 더 구체적으로, 컬럼은 관련된 데이터 처리 소자의 섀도 레지스터를 나타낸다. 매트릭스의 로우는 처리 단계 PS를 나타낸다. 매트릭스의 셀은 명령어 워드를 나타낸다. VLIW는 매트릭스의 어떤 로우에 속한 셀들의 합성어로, 즉, VLIW는 처리 단계 PS에 대한 명령어 워드의 합성어이다. VLIW는 관련된 데이터 처리 소자가 병렬로 수행해야 하는 동작을 정의한다.
주 제어 처리기 MCP는 다양한 방식으로 VLIW를 구성할 수 있을 것이다. 예를 들면, 주 제어 처리기 MCP는 제어 레지스터마다 명령어 워드를 기입함으로써 특정 처리 단계에 대해 VLIW를 구성할 수도 있다. 그러나, 주 제어 처리기 MCP는 또한 하나 이상의 특정 제어 레지스터에는 명령어 워드를 기입하지만 다른 제어 레지스터에는 명령어 워드를 기입하지 않음으로써 VLIW를 구성할 수도 있다. 후자의 제어 처리기는 이전의 처리 단계에 포함되어 있을 때의 명령어 워드를 유지한다.
도 6에 예시된 매트릭스는 예를 들면 프레임의 디스플레이에 해당할 수도 있다. 처리 단계 PS[1]는 프레임을 디스플레이하기 위한 제 1 처리 단계이고, 처리 단계 PS[N]는 최종 처리 단계이다. 예를 들어, 프레임은 700개의 주사선을 갖고, 한 개의 주사선당 1024개의 화소가 있다고 가정하자. 또한, 하나의 처리 단계에서는 256개의 출력 화소가 통상적으로 스트림식 출력 회로 SO에 공급되는 것으로 가정하자. 이것은 비디오 신호의 1 주사선당 4번의 처리 단계가 존재하게 되므로 1 프레임당 4×700번의 처리 단계 PS가 존재함을 의미한다(즉, 프레임당 2800번의 처리 단계가 존재하고, N=2800임).
처음 몇 개의 처리 단계 PS는 프레임의 디스플레이를 위한 초기화 단계를 구성하고, 마지막 몇 개의 처리 단계 PS는 종료 단계를 구성한다. 전술한 바와 같이, 처리 체인은 단계별로 채워지고 비워져야 한다. 이것은 초기화 단계와 종료 단계에서, 적어도 하나의 데이터 처리 소자와 관련하여 어떤 처리 단계의 명령어 워드가 후속의 처리 단계의 다른 명령어 워드에 의해 대체된다는 것을 의미한다. 이것은 또한 초기화 단계와 종료 단계에서, 각각의 처리 단계와 관련하여 다른 VLIW가 존재할 것임을 의미한다. 초기화 단계와 종결 단계 사이의 처리 단계들은 또한 여러가지 상이한 VLIW를 요구할 수도 있다. 만일 동일한 처리 체인이 프레임이 끝날 때까지 이용된다면, 단일 VLIW가 처리 단계가 끝날 때까지 사용될 수 있다. 이것은 예컨대 비디오 출력 유닛 HDVO이 단일 비디오 신호를 어떤 포맷에서 다른 포맷으로 변환해야 하는 경우에 해당할 수 있다.
도 7은 비디오 출력 유닛 HDVO이 디스플레이 장치에 공급해야 하는 프레임을 예시한다. 이 프레임은 부 화면(subpicture) SPIC이 삽입되는 주 화면 MPIC으로 구성된다. 또한 도 7은 프레임내의 상이한 프레임 구역(frame zones) FZ1-FZ6도 예시한다. 각각의 프레임 구역 FZ은 도 5에 도시된 주 제어 처리기 MCP에 의해 수행되는 제어 행위와 관련한 특별한 단계와 관계가 있다.
프레임 구역 FZ1에서, 주 제어 처리기 MCP는 주 화면 MPIC의 디스플레이를 위한 처리 체인을 구성한다. 프레임 구역 FZ2에서, 주 제어 처리기 MCP는 이 처리 체인을 유지한다. 프레임 구역 FZ2은 X개의 주사선을 포함한다(단, X는 정수임). 프레임 구역 FZ3에서, 주 제어 처리기 MCP는 주 화면 MPIC을 디스플레이하기 위한 처리 체인을 해체하고, 주 화면 MPIC과 그 속에 삽일될 부 화면 SPIC을 디스플레이하기 위한 처리 체인을 구성한다. 프레임 구역 FZ4에서, 주 제어 처리기 MCP는 이 처리 체인을 유지한다. 프레임 구역 FZ4은 Y개의 주사선을 포함한다(단, Y는 정수임). 프레임 구역 FZ5에서, 주 제어 처리기 MCP는 주 화면 MPIC과 그 속에 삽입될 부 화면 SPIC을 디스플레이하기 위한 처리 체인을 해체하고, 자시 주 화면 MPIC을 디스플레이하기 위한 처리 체인을 구성한다. 프레임 FZ6에서, 주 제어 처리기 MCP는 이 처리 체인을 유지한다. 프레임 구역 FZ6은 Z개의 주사선을 포함한다(단, Z는 정수임).
도 8은 전술한 제어 행위를 수행하기 위해 주 제어 처리기 MCP에 공급되는 주 명령어 시리즈 MI1-MI8를 예시한다. 주 명령어 MI1는 주 제어 처리기가 내부 메모리에 기억된 서브루틴 STRT_MAIN을 실행하도록 한다. 주 명령어 MI1는 예를 들면 서브루틴 STRT_MAIN의 시작 어드레스일 수도 있다. 서브루틴 STRT_MAIN의 실행으로 프레임 구역 FZ1에 포함되는 처리 단계와 관련한 VLIW 시리즈가 발생된다. 각각의 처리 단계와 관련하여 다른 VLIW가 발생되어, 비디오 출력 유닛 HDVO의 데이터 처리 소자로 공급된다. VLIW 시리즈는 주 화면을 디스플레이하는 처리 체인이 처리 단계별로 구성되도록 만든다.
주 명령어 MI2는 주 제어 처리기 MCP가 서브루틴 MAIN을 연속하여 X번 실행하도록 만든다(즉, X×MAIN번 실행함). 서브루틴 MAIN의 실행으로, 주사선에 포함된 처리 단계들을 위해 인가되는 VLIW가 발생된다. 따라서, 이 VLIW는 프레임 구역 FZ2내내 인가된다. 이것은 데이터 처리 소자가 주 화면 MPIC을 디스플레이하는데 필요한 처리를 수행하도록 만든다.
주 명령어 MI3는 주 제어 처리기 MCP가 서브루틴 END_MAIN을 실행하도록 만든다. 서브루틴 END_MAIN의 실행으로, 프레임 구역 FZ3의 상부 부분에 포함된 처리 단계들을 위한 VLIW 시리즈가 발생된다. 각각의 처리 단계와 관련하여 다른 VLIW가 발생되어, 비디오 출력 유닛 HDVO의 데이터 처리 소자로 공급된다. VLIW 시리즈는 주 화면을 디스플레이하는 처리 체인이 처리 단계별로 해체되도록 만든다.
주 명령어 MI4는 주 제어 치리기 MCP가 서브루틴 STRT_PIP을 실행하도록 만든다. 서브루틴 STRT_PIP의 실행으로, 프레임 구역 FZ3의 하부 부분에 포함된 처리 단계들을 위한 VLIW 시리즈가 발생된다. 각각의 처리 단계와 관련하여 다른 VLIW가 발생되어, 비디오 출력 유닛 HDVO의 데이터 처리 소자로 공급된다. VLIW 시리즈는 주 화면과 그 속에 삽입되는 부 화면 SPIC을 디스플레이하는 처리 체인이 처리 단계별로 구성되도록 만든다.
주 명령어 MI5는 주 제어 처리기 MCP가 서브루틴 PIP을 연속하여 Y번 실행하도록 만든다(즉, Y×PIP번 실행함). 서브루틴 PIP의 실행으로, 주사선에 포함된 처리 단계들을 위해 인가되는 VLIW가 발생된다. 따라서, 이 VLIW는 프레임 구역 FZ4 내내 인가된다. 이것은 데이터 처리 소자가 주 화면 MPIC과 그 속에 삽입되는 부 화면 SPIC을 디스플레이하는데 필요한 처리를 수행하도록 만든다.
주 명령어 MI6는 주 제어 처리기 MCP가 서브루틴 END_PIP을 실행하도록 만든다. 서브루틴 END_PIP의 실행으로, 프레임 구역 FZ5의 상부 부분에 포함된 처리 단계들을 위한 VLIW 시리즈가 발생된다. 각각의 처리 단계와 관련하여 다른 VLIW가 발생되어, 비디오 출력 유닛 HDVO의 데이터 처리 소자로 공급된다. VLIW 시리즈는 주 화면과 그 속에 삽입되는 부 화면 SPIC을 디스플레이하는 처리 체인이 처리 단계별로 해체되도록 만든다.
주 명령어 MI7는 주 제어 처리기 MCP가 서브루틴 STRT_MAIN을 다시 실행하도록 만드는데, 이 서브루틴은 전술하였다. 주 명령어 MI8는 주 제어 처리기 MCP가 서브루틴 MAIN을 연속하여 Z번 실행하도록 만든다(즉, Z×MAIN 번 실행함). 서브루틴 MAIN은 전술하였다.
이미 전술하였듯이, 이를테면, 주 제어기 MCP는 여러가지 기계를 갖는 생산장의 감독관으로 간주될 수 있다. 생산장은 비디오 출력 유닛 HDVO에 해당하고, 기계는 비디오 출력 유닛 HDVO의 데이터 처리 소자에 해당한다. 말하자면, 주 명령어 MI는 감독관이 관리자로부터 수령하는 생산 지시로 간주될 수 있다. 감독관은 생산 지시를 기계를 위한 명령어로 번역한다. 동시에 즉, 병렬로 운반된 명령어를 수집항 것은 VLIW에 해당한다.
주 명령어는 상품 A을 위한 생산 라인을 가동하기 위한 지시로 간주될 수 있다. 주 명령어 MI2는 이 생산 라인에서 상품 A의 X개 샘플을 생산하기 위한 지시로 간주될 수 있다. 주 명령어 MI3와 MI4는 상품 A을 위한 생산 라인을 해체하고 상품 B를 위한 생산 라인을 가동하라는 지시로 간주될 수 있다. 주 명령어 MI5는 이 생산 라인에서 상품 B의 Y개 샘플을 생산하라는 지시로 간주될 수 있고, 계속해서 이런 방식으로 생각할 수 있다.
도 9는 도 5에 도시된 주 제어 처리기 MCP의 구현을 예시한다. 주 제어 처리기 MCP는 마찬가지로 도 5에 예시된 주 버스 HWY를 통해 비디오 출력 유닛 HDVO 외부의 소자와 통신한다. 예를 들면, 주 제어 치리기 MCP는 주 명령어를 주 버스 HWY를 통해 수신할 수 있다. 주 제어 처리기 MCP는 제어 버스 CBUS를 통해 비디오 출력 유닛 HDVO의 데이터 처리 소자와 통신한다. 예를 들면, 주 제어 처리기는 명령어 워드를 제어 버스 CBUS를 통해 데이터 치리 소자로 전송할 수 있다. 주 제어 처리기 MCP는 또한 접속부 XC를 통해 비디오 출력 유닛 HDVO 의 메모리 블록 MB으로/으로부터 데이터를 송수신할 수 있다.
주 제어 처리기 MCP는 주 버스 인터페이스 HWYINT, 제어 버스 인터페이스 CBUSINT, 연산 처리 장치 ALU, 프로그램 카운터 PC를 포함하는 레지스터 집합체 REG, 인터럽트 유닛의 집합체 IU, 연산 스택 CSTCK, 복귀 스택 RSTCK, 프로그램 메모리 PMEM, 데이터 메모리 DMEM, 직접 메모리 접근 회로 DMAC를 포함한다. 연산 스택 CSTCK과 복귀 스택 RSTCK은 각각 스택 포인터를 갖는다. 스택 포인터는 관련 스택의 최상부 위치와 두 번째 위치를 정의한다. 연산 스택 CSTCK의 최상부 위치와 두 번째 위치는 이후부터 TOS와 SOS로 각각 칭하겠다. 복귀 스택 RSTCK의 최상부 위치와 두 번째 위치는 이후부터 각각 TOR와 SOR로 칭하겠다.
주 제어 처리기 MCP는 기본적으로 다음과 같이 동작한다. 프로그램 PC은 전형적으로 각각의 블록 사이클과 함께 증가되는 프로그램 계수값을 포함한다. 프로그램 계수값은 프로그램 카운터 PC에 새로운 프로그램 계수값을 기입함으로써 변경될 수 있다. 프로그램 계수값은 주 제어 처리기 MCP가 기억되어 있는 프로그램 메모리 PMEM와 관련한 어드레스를 구성한다. 이 명령어들은 이후부터 MCP 명령어로 칭하겠다. MCP 명령어는 연산 처리 장치 ALU가 수행하는 동작을 정의한다. 이것은 또한 복귀 스택 RSTCK과 연산 스택 CSTCK을 이후에 상술하는 것처럼 제어하기 위한 동작을 정의한다. 전술한 VLIW를 발생하는 서브루틴은 MCP 명령어 세트에 의해 형성된다.
다음은 MCP 명령어와 관련한 신택스(syntax)의 일 예이다. MCP 명령어는 24비트를 포함한다. 비트 b23은 MCP 명령어가 조건형(conditional)인지 무조건형(unconditional)인지를 정의힌다. 만약 MCP 명령어의 비트 b23이 0의 값을 갖는다면 MCP 명령어는 무조건형이다. 무조건형 MCP 명령어는 항상 실행된다. 만약 비트 b23가 1의 값을 갖는다면 MCP 명령어는 조건형이다. 조건형 MCP 명령어는 특정 레비스터의 최하위 비트가 0의 값을 가질 경우에만 실행될 것이다. 비트 b22와 b21는 다른 유형의 MCP 명령어를 구별하기 위해 이용된다. 어떤 유형의 MCP 명령어는 무조건형일 수도 있고, 조건형일 수도 있다. MCP 명령어의 비트 b22가 1의 값을 가지면, MCP 명령어는 유형-0 명령어이다. 유형-0 명령어는 데이터가 내부 메모리 위치 예를 들면 레지스터에 기입되게 하는 것이다. 유형-0 명령어의 비트 b21 내지 b12는 기입될 데이터를 구성한다. 비트 b11 내지 b0은 데이터가 기입되는 메모리 위치의 어드레스를 정의한다. 만약 메모리 위치가 10비트를 초과하는 크기를 갖는다면, 이 데이터는 부호 확장형(aign-extended)으로 된다.
만약 비트 b22와 b21이 둘다 0이면, MCP 명령어는 유형-1 이거나 혹은 유형-1A 명령어이다. 유형-1과 유형-1A 명령어는 데이터를 처리한다. 가산(addition)에서 b12가 0의 값을 갖는다면, MCP 명령어는 유형-1 명령어이다. 유형-1의 비트 b11 내지 b0은 어드레스를 정의한다. 이 어드레스에 기억된 데이터는 연산 처리 장치 ALU를 위한 입력 데이터를 형성한다. 비트 b12가 0의 값을 가지면, MCP 명령어는 유형-1A 명령어이다. 유형-1A 명령어의 비트 b11 내지 b0은 데이터를 나타낸다. 이 데이터는 연산 처리 장치 ALU의 입력 데이터를 형성한다. 데이터는 연산 처리 장치 ALU에 공급되기 전에 16비트 2진 워드를 구성하도록 부호 확장형이 될 수도 있다.
유형-1 혹은 유형-1A 명령어는 비트 b20 내지 b17로 형성된 연산 코드부(opcode portion)를 포함한다. 연산 코드부는, 연산 처리 장치 ALU가 입력 데이터에 대해 어떤 처리 동작을 수행할 것인지, 그리고 그 처리 동작의 결과는 어디에 저장할 것인지와 관련하여 동작을 결정한다. 그 결과는 TOS에 기입되거나 혹은 프로그램 카운터 PC에 기입된다. 유형-1 명령어와 관련하여 16개의 상이한 동작이 존재하며, 또한 유형-1A 명령어와 관련하여서도 16개의 상이한 동작이 존재한다. 예를 들면, 동작은 입력 데이터와 TOS의 내용에 대해 AND 조합을 만들고, 이 AND 조합의 결과를 TOS에 기입한다. 다른 동작들은 NOR, XOR, NAND, OR, XNOR 조합을 만들 수 있다.
만약 비트 b22가 0의 값을 갖고 비트 b21가 0의 값을 가지면, MCP 명령어는 유형-2 명령어이다. 유형-2 명령어는 데이터를 전송한다. 유형-2 명령어는 비트 b20 내지 b17으로 이루어진 전송 제어부를 포함한다. 전송 제어부는 전송될 데이터의 발원지와 목적지를 정의한다. 더 구체적으로, 비트 b18과 b17은 발원지를 정의하고, 비트 b20과 b19는 데이터의 목적지 어드레스를 정의한다. 4개의 데이터 발원지 즉, TOS, SOS, TOR, 혹은 프로그램 카운터 PC가 존재한다. 목적지 어드레스도 4개가 존재하는데, 즉, TOS의 내용, SOS의 내용, 인덱스 값이 추가된 MCP 명령어 자신의 비트 b11 내지 b0, 인덱스 값이 추가되지 않은 MCP 명령어 자신의 비트 b11 내지 b0이 그것이다.
유형-0, 유형-1, 유형-1A 명령어는 기본적으로 도 5에 도시된 비디오 출력 유닛 HDVO의 데이터 처리 소자에 대해 명령어 워드를 발생시킨다. 유형-2 데이터 명령어는 기본적으로 이렇게 발생된 명령어 워드를 데이터 처리 소자의 제어 레지스터로 전송한다. 후자의 MCP 명령어는 말하자면 수출 MCP 명령어(export MCP instructions)이다.
유형-1, 유형-1A, 유형-2의 MCP 명령어들은 비트 b16 내지 b13으로 이루어진 스택 제어부를 포함한다. 연산 스택 CSTCK은 비트 b16과 b15에 의존하여 제어되고, 복귀 스택 RSTCK은 비트 b14와 b13에 의존하여 제어된다. 연산 스택 CSTCK에 대해 4개의 제어 행위가 존개하고, 복귀 스택 RSTCK에 대해서도 4개의 제어 행위가 존재한다. 비트 b16 내지 b15의 값과 비트 b14 내지 b13의 값은 이들 4개의 각각의 제어 행위중 어느 것이 수행될지를 결정한다.
연산 스택 CSTCL에 대한 4개의 제어 행위는 Nop, Cpy, Psh, Pop이다. Nop 제어 행위는 연산 스택 RSTCK를 변경시키지 않는다. Cpy 제어 행위는 TOS의 내용을 SOS로 복사한다. 이 복사는 연산 처리 장치 ALU가 MCP 명령어를 수행하기 전에 행해진다. Psh 제어 행위는 스택 포인터를 증가시킨다. 그 결과, 명령어 이전에는 TOS인 스택의 위치가 명령어 이후에는 SOS가 된다. 명령어 이전의 TOS의 내용은 명령어 이후에 새로운 위치인 TOS로 복사된다. 이렇게 복사된 내용은, MCP 명령어의 다른 부분에 의해 정의된 동작이 TOS를 변경시키는 경우라면 덮어쓰기될 수도 있다. Pop 제어 행위는 스택 포인터를 감소시킨다. 그 결과, 명령어 이전에는 SOS인 스택의 위치가 명령어 이후에는 TOS가 된다.
복귀 스택 RSTCK에 대한 4개의 제어 행위는 Rnop, Rpc, Rpsh, Rpop이다. Rnop은 복귀 스택 RSTCK을 변경시키지 않는다. 제어 행위 Rpc는 스택 포인터를 증가시킨다. 일정한 값이 프로그램 카운터 값에 가산되고, 그 가산의 결과는 TOR에 복사된다. 가산되는 일정한 값은 구현마다 다르다. Rpsh 행위는 스택 포인터를 증가시킨다. 그 결과, 명령어 이전에는 TOR인 스택의 위치가 명령어 이후에는 SOR이 된다. 명령어 이전의 TOR의 내용은 명령어 이후에 새로운 위치인 TOR에 복사된다. 이렇게 복사된 내용은, MCP 명령어의 다른 부분에 의해 정의된 동작이 TOR을 변경시키는 경우라면 덮어쓰기될 수도 있다. Rpop 제어 행위는 스택 포인터를 감소시킨다. 그 결과, 명령어 이전에는 SOR인 스택의 위치가 명령어 이후에는 TOR가 된다.
스택 포인터는 연산 처리 장치 ALU가 관련 MCP 명령어를 수행하기 전에 증가되고, 반면에 스택 포인터의 감소는 ALU가 관련 MCP 명령어를 수행한 이후에 이루어짐을 유의하자. 따라서, 팝형 MCP 명령어(pop-type MCP instruction) 바로 다음에 뒤따르는 푸시형 MCP 명령어(push-type MCP instruction)는 스택 포인터를 변화없이 유지시킬 것이다.
또한, 원칙적으로, 전술한 모든 스택 관련 제어 행위는 유형-1 및 유형-1A 명령어의 연산 코드부에 정의된 동작과 무관하게 수행됨을 유의하자. 마찬가지로, 모든 스택 관련 제어 행위는 유형-2 명령어의 전송 제어부에 정의된 데이터 전송과 무관하게 수행된다. 따라서, 다양한 조합이 가능하다. 만약 연산 코드부가 스택 위치, 예컨대 TOR의 내용 변경과 관련된 동작을 정의하고, MCP의 스택 제어부는 동일한 스택 위치의 내용 변경과 관련된 스택 제어 행위를 정의한다면, 우선권을 갖는 것은 연산 코드부이다.
도 10은 전술한 다양한 유형의 MCP 명령어와, 이 명령어에 포함된 비트 b23 내지 b21 및 b12 사이 관계를 예시한다. 도 10에서, 참조 문자들은 다양한 유형의 MCP 명령어를 표시하기 위해 이용되는데, UNCOND은 무조건형 명령어를 표시하고, COND은 조건형 명령어를 표시하며, TP0, TP1, TP1A, TP2는 유형-0, 유형-1, 유형-1A, 유형-2 명령어를 각각 표시한다. 또한, 도 10은 후자의 4개의 MCP 명령어의 특성을 나타내는 참조 문자들도 포함한다. 유형-0 명령어는 데이터를 기입하는 것으로 WRT이다. 유형-1 명령어는 내부 메모리로부터 데이터를 판독하여 이 데이터를 처리하는 것으로, RD&PROC이다. 유형-1A 명령어는 명령에 포함된 데이터를 처리하는 것으로, 즉, 데이터를 즉시 처리하는 것이며, IPROC이다. 유형-2 명령어는 데이터를 전송하는 것으로, TRNSFR이다. 도 10은 또한 연산 코드부를 나타내는 참조 문자 OPC와, 전송 제어부를 나타내는 WOPC와, 스택 제어부를 나타내는 STC도 포함한다.
MCP 명령어는 도 9에 도시된 직접 메모리 접근 회로 DMAC가 직접 메모리 접근 세션을 수행하도록 할 수도 있다. 직접 메모리 접근 세션에서, 직접 메모리 접근 회로 DMAC는 메모리에 포함된 명령어 워드의 블록을 도 7에 도시된 비디오 출력 유닛 HDVO의 다양한 데이터 처리 소자의 제어 레지스터들로 자율적으로 전송한다. MCP 명령어는 직접 메모리 접근 세션과 관련한 시작 어드레스와 모드를 정의한다. 직접 메모리 접근 모드에는 3가지가 있다.
제 1 직접 메모리 접근 모드에서, 직접 메모리 접근 회로 DMAC는 명령어 워드를 연속적인 어드레스를 갖는 제어 레지스터 범위내에 기입한다. 블록의 제 1 명령어 워드는 그 어드레스가 시작 어드레스인 제어 레지스터에 기입되고, 제 2 명령어 워드는 그 어드레스가 (시작 어드레스+1)인 제어 레지스터에 기입되는 식이다.
제 2 직접 메모리 접근 모드에서, 직접 메모리 접근 회로 DMAC는 먼저 템플릿(template)를 판독한다. 템플릿은 2진 워드인데, 그 각각의 비트는 연속하는 어드레스를 갖는 제어 레지스터 범위내의 상이한 제어 레지스터에 대응한다. 이 범위는 시작 어드레스에서 시작한다. 사실상, 직접 메모리 접근 회로 DMAC는 템플릿을 비트 단위로 판독하여, 블록의 제 1 명령어 워드를 1의 값을 갖는 제 1 판독 비트에 대응하는 제어 레지스터에 기입하고, 제 2 명령어 워드는 1의 값을 갖는 제 2 판독 비트에 대응하는 제어 레지스터에 기입하는 식이다.
제 3 직접 메모리 접근 모드에서, 직접 메모리 접근 회로 DMAC는 명령어 워드를 제어 레비스터에 기입하기 이전에 먼저 오프셋 값을 판독한다. 명령어 워드는 그 어드레스가 (기입 이전의 제어 레지스터의 어드레스+오프셋 값)인 제어 레지스터에 기입된다. 블록의 제 1 명령어 워드는 그 어드레스가 (시작 어드레스+제 1 판독 오프셋 값)인 제어 레지스터에 기입된다.
주 제어 처리기 MCP는 선행 VLIW와 상당히 다른 VLIW를 구성하거나 혹은 선행 VLIW가 없는 VLIW를 구성하는데 직접 메모리 접근 회로 DMAC를 유리하게 이용한다. 예를 들면, 직접 메모리 접근 세션은 주 제어 처리기 MCP 스스로가 비교적 많은 명령어 워드를 제어 레지스터에 기입해야 하는 것을 막아준다. 말하자면, 주 제어 처리기 MCP는 이 임무를 직접 메모리 접근 회로 DMAC에 위임한다. 그러면, 직접 메모리 접근 회로 DMAC는 명령어 워드를 제어 레지스터에 기입하기 위해 제어 버스 CBUS를 이용한다. 결국, 직접 메모리 접근 세션 동안, 주 제어 처리기 MCP의 다른 소자들은 제어 버스 CBUS에 접근하지 않는다.
주 제어 처리기 MCP는 선행 VLIW와 닮은 VLIW를 구성하기 위해서는 직접 메모리 접근 회로 DMAC를 이용할 필요가 없다. 이러한 닮은 VLIW는 비교적 소수의 제어 레지스터의 내용을 수정함으로써 구성될 수 있다. 이 때, 주 제어 처리기 MCP가 새로운 명령어를 적절한 제어 처리기로 직접 기입할 수도 있다.
결국, 프로그래밍 관점에서 보면, VLIW를 구성하는데 2가지 기술이 있다. 첫 번째 기술은, 주 제어 처리기 MCP가 새로운 명령어 워드를 특정 제어 레지스터에 기입하도록 만드는 하나 이상의 MCP 명령어를 이용하는 것이다. 이 기술은 닮은 VLIW를 구성하는데 바람직하게 덕용된다. 두 번째 기술은, 주 제어 처리기 MCP가 직접 메모리 접근 세션을 개시하도록 만드는 MCP 명령어를 이용하는 것이다. 이 기술은 선행 VLIW와 상당히 상이한 VLIW를 구성하거나 혹은 비디오 출력 유닛 HDVO을 개시시키기 위해 바람직하게 이용된다.
전술한 도면과 설명은 본 발명을 제한하려는 것이 아니라 예시하는 것이다. 첨부된 특허청구범위의 범주내에 있는 다양한 대체물이 존재함은 자명할 것이다. 이와 관련하여 다음의 맺음말이 만들어졌다.
도 1에 예시된 명령어 워드 구성 소프트웨어 IWCS는 예를 들면 메모리에 포함될 수도 있다. 이것은 공장에서 메모리에 기입될 수도 있다. 그러나, 정보 함유 매체로부터 메모리로 사용자가 명령어 워드 구성 소프트웨어 IWSC를 복사하는 것도 가능하다. 따라서, 사용자는 도 1에 예시된 데이터 처리 장치 DPA가 특정 기능을 수행하도록 만들 수 있다. 명령어 워드 구성 소프트웨어 IWSC를 담고 있는 정보 함유 매체는 예를 들면, 디스크일 수도 있다. 또한 명령어 워드 구성 소프트웨어는 예를 들면 인터넷 등의 통신 네트워크를 통해 입수할 수도 있다.
여러가지 유닛에 걸쳐 기능과 기능 소자를 물리적으로 확산시키는 다양한 방법이 존재한다. 이와 관련하여, 도면은 상당히 개략적인 것으로, 각각은 단지 본 발명의 간으한 실시예만을 나타내고 있다. 따라서, 비록 도면이 상이한 블록으로 상이한 기능 소자들을 보여주고 있더라도, 이것이 몇몇 기능 소자들 혹은 모든 기능 소자들을 단일 물리 유닛으로 구현하는 것을 배제하는 것은 아니다.
특허청구범위의 모든 참조 부호가 특허청구범위를 제한하는 것으로 해석되어어는 안된다.

Claims (6)

  1. 자신에게 공급되는 명령어 워드(IW)에 의해 정의되는 동작(O)을 병렬로 수행하는 다수의 데이터 처리기(P)를 포함하는 데이터 처리 장치(DPA)에 있어서,
    병렬로 수행되는 동작(O)을 정의하는 명령어 워드의 합성어(compositions of instruction words)(VLIW)를 명령어 워드 구성 소프트웨어(IWCS)에 근거하여 만드는 제어 처리기(CP)를 포함하는 데이터 처리 장치.
  2. 제 1 항에 있어서,
    상기 제어 처리기(CP)가 적어도 하나의 명령어 워드의 합성어를 만들도록 하는 명령어 워드 합성 서브루틴(SROU)을 기억하기 위한 프로그램 메모리(PMEM)를 더 포함하는 데이터 처리 장치.
  3. 제 1 항에 있어서,
    상기 데이터 처리기(P)는,
    상기 제어 처리기(CP)가 명령어 워드(IW)를 기입할 수도 있는 프론트 레지스터(front register)(FREG)와,
    그 내용(content)이 상기 데이터 처리기(P)의 동작을 결정하는 섀도 레지스터(shadow register)(SREG)를 포함하되,
    상기 섀도 레지스터(SREG)는 상기 제어 처리기(CP)로부터의 적재 커맨드(LC)에 응답하여 상기 프론트 레지스터(FREG)로부터 상기 명령어 워드(IW)를 인계받는 데이터 처리 장치.
  4. 제 1 항에 있어서,
    상기 제어 처리기(CP)는 명령어 워드(IW)의 블록(B)을 메모리(MEM)로부터 다수의 데이터 처리기(P)로 자율적으로 전송하는 직접 메모리 접근 회로(DMAC)를 포함하는 데이터 처리 장치.
  5. 제어 처리기(CP)와 다수의 데이터 처리기(P)를 포함하고, 상기 데이터 처리기(P)에 의해 수행되는 동작(O)은 상기 데이터 처리기(P)에 공급되는 명령어 워드(IW)에 의해 정의되는 데이터 처리 장치(DPA)를 위한 컴퓨터 프로그램 제품에 있어서,
    상기 제어 처리기(CP)로 하여금, 병렬로 수행되는 동작을 정의하는 명령어 워드의 합성어(VLIW)를 만들 수 있게 하는 명령어 워드 구성 소프트웨어(IESC)를 포함하는
    컴퓨터 프로그램 제품.
  6. 제어 처리기(CP)와 다수의 데이터 처리기(P)를 포함하고, 상기 데이터 처리기에 의해 수행되는 동작(O)은 상기 데이터 처리기(P)에 공급되는 명령어 워드(IW)에 의해 정의되는 데이터 처리 장치(DPA)가 특정 기능을 수행할 수 있게 하는 방법에 있어서,
    상기 제어 처리기(CP)로 하여금, 병렬로 수행되는 동작(O)을 정의하는 명령어 워드의 합성어(VLIW)를 만들 수 있게 하는 명령어 워드 구성 소프트웨어(IESC)를 제공하는 단계를 포함하는
    데이터 처리 장치(DPA)가 특정 기능을 수행할 수 있게 하는 방법.
KR1020007013446A 1999-03-31 2000-03-09 병렬 데이터 처리 KR20010052436A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US09/282,325 1999-03-31
US09/282,325 US6349378B1 (en) 1999-03-31 1999-03-31 Data processing using various data processors
US09/333,633 1999-06-15
US09/333,633 US6405301B1 (en) 1999-06-15 1999-06-15 Parallel data processing
PCT/EP2000/002105 WO2000060457A1 (en) 1999-03-31 2000-03-09 Parallel data processing

Publications (1)

Publication Number Publication Date
KR20010052436A true KR20010052436A (ko) 2001-06-25

Family

ID=26961376

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007013446A KR20010052436A (ko) 1999-03-31 2000-03-09 병렬 데이터 처리

Country Status (7)

Country Link
EP (1) EP1088266B1 (ko)
JP (1) JP2002541546A (ko)
KR (1) KR20010052436A (ko)
CN (1) CN1146785C (ko)
DE (1) DE60042230D1 (ko)
TW (1) TW504644B (ko)
WO (1) WO2000060457A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2397140A (en) * 2003-01-13 2004-07-14 Advanced Risc Mach Ltd Data processing performance control
GB2397667A (en) * 2003-01-27 2004-07-28 Imagination Tech Ltd Multiple register load using a very long instruction word
US7861062B2 (en) 2003-06-25 2010-12-28 Koninklijke Philips Electronics N.V. Data processing device with instruction controlled clock speed
CN101526893B (zh) * 2008-03-06 2014-02-19 华为技术有限公司 一种超长指令字指令并行执行方法及装置
US8731891B2 (en) * 2011-07-28 2014-05-20 Saudi Arabian Oil Company Cluster 3D petrophysical uncertainty modeling
US8924596B1 (en) * 2013-12-06 2014-12-30 Concurrent Ventures, LLC System and method for dividing and synchronizing a processing task across multiple processing elements/processors in hardware

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69431998T2 (de) * 1993-11-05 2004-08-05 Intergraph Hardware Technologies Co., Las Vegas Superskalare Rechnerarchitektur mit Softwarescheduling
US5787302A (en) * 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
US6313845B1 (en) * 1998-06-30 2001-11-06 3Dlabs Inc. Ltd. Method and apparatus for transporting information to a graphic accelerator card

Also Published As

Publication number Publication date
JP2002541546A (ja) 2002-12-03
TW504644B (en) 2002-10-01
EP1088266B1 (en) 2009-05-20
CN1146785C (zh) 2004-04-21
EP1088266A1 (en) 2001-04-04
DE60042230D1 (de) 2009-07-02
WO2000060457A1 (en) 2000-10-12
CN1306641A (zh) 2001-08-01

Similar Documents

Publication Publication Date Title
JP3149348B2 (ja) 代理命令を用いる並列処理システム及び方法
US9672033B2 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
US6611909B1 (en) Method and apparatus for dynamically translating program instructions to microcode instructions
JPH08241291A (ja) プロセッサ
JPH1011289A (ja) 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ
KR100765567B1 (ko) 산술 논리 유닛 및 스택을 가지는 데이터 프로세서, 멀티미디어 장치 및 컴퓨터 판독가능 기록 매체
US5307300A (en) High speed processing unit
US5696957A (en) Integrated circuit comprising a central processing unit for executing a plurality of programs
KR100287600B1 (ko) 확장가능한레지스터를제공하는데이타처리시스템및그방법
KR20010052436A (ko) 병렬 데이터 처리
US4674063A (en) Information processing apparatus having a sequence control function
US6072508A (en) Method and apparatus for shortening display list instructions
US6405301B1 (en) Parallel data processing
US11755516B2 (en) Direct memory access
US4975837A (en) Programmable unit having plural levels of subinstruction sets where a portion of the lower level is embedded in the code stream of the upper level of the subinstruction sets
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
US5999200A (en) Method and apparatus for automatically controlling the destination of a graphics command in a register file
US5452428A (en) Processor having different operand source information temporarily stored in plural holding registers to avoid using microprogram ROM capacity for such information
KR19990077799A (ko) 마이크로프로세서, 연산 처리 실행 방법 및 기억 매체
JP2003005954A (ja) データ処理装置およびその制御方法
EP0305752A2 (en) Programmable data path width in a programmable unit having plural levels of subinstruction sets
US20030126397A1 (en) Configurable addressing apparatus
KR100407452B1 (ko) 다중명령집합을 실행하기 위한 데이터처리장치
JP2001202351A (ja) Simd型プロセッサ
EP0333235A2 (en) Programmable data path width in a programmable unit having plural levels of subinstructions sets

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination