KR20010072490A - 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치 - Google Patents

레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치 Download PDF

Info

Publication number
KR20010072490A
KR20010072490A KR1020017001914A KR20017001914A KR20010072490A KR 20010072490 A KR20010072490 A KR 20010072490A KR 1020017001914 A KR1020017001914 A KR 1020017001914A KR 20017001914 A KR20017001914 A KR 20017001914A KR 20010072490 A KR20010072490 A KR 20010072490A
Authority
KR
South Korea
Prior art keywords
data
instruction
stack
alu
processor
Prior art date
Application number
KR1020017001914A
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/333,633 external-priority patent/US6405301B1/en
Application filed by 롤페스 요하네스 게라투스 알베르투스, 코닌클리즈케 필립스 일렉트로닉스 엔.브이. filed Critical 롤페스 요하네스 게라투스 알베르투스
Publication of KR20010072490A publication Critical patent/KR20010072490A/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Abstract

본 발명은 제 1 및 제 2 입력 데이터(OP1,OP2)에 대하여 산술 또는 논리 연산을 수행하는 산술 논리 유닛(ALU)을 포함하는 데이터 프로세서에 관한 것이다. 상기 프로세서는 스택(STCK)을 더 포함하여 데이터를 저장하며, 스택내에 특정 위치(P(1))를 가지는 데이터를 제 1 입력 데이터(OP1)로서 산술 논리 유닛(ALU)에 이용한다. 데이터 프로세서는 다수의 메모리 위치(REG)중의 메모리 위치(REG(i))를 나타내는 어드레스(ADDR)를 포함하는 인스트럭션(INSTR)을 수행할 수 있다. 어드레스(ADDR)는, 데이터를 나타내는 메모리 위치(REG(i))에 포함된 데이터가 제 2 입력 데이터(OP2)로서 산술 논리 유닛(ALU)에 이용되도록 한다.

Description

레지스터 스택을 포함하는 데이터 프로세서, 그 처리 방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치{DATA PROCESSOR COMPRISING A REGISTER STACK}
산술 논리 유닛(ALU)은 통상적으로 피연산자(operand)라고도 불리는 2개의 입력 데이터에 대한 연산을 수행하여 출력 데이터를 획득한다. ALU가 수행하는 연산은 통상적으로 마이크로 코드(micro code)라고도 불리는 비트의 스트링(a string of bits)형태의 인스트럭션(an instruction)에 의해서 정의된다. 인스트럭션은 ALU가, 예를 들면 가산(an addition)-Z = X + Y, X 및 Y는 입력 데이터, Z는 출력 데이터-과 같은 산술 연산을 수행하도록 한다. 또한 인스트럭션은 ALU가, 예를 들면 AND, OR, NAND 및 NOR 함수와 같은 논리 연산을 수행하도록 한다.
ALU는 스택과 상호 작용할 수 있다. 스택은 저장 요소(storage element)의 집합(assembly)인데, 각각의 저장 요소는 데이터를 포함할 수 있다. ALU에 의해서 곧 처리될 입력 데이터는 스택내에 임시로 저장된다. ALU로부터의 출력 데이터 또한 스택에 임시로 저장될 수 있다. 스택 포인터(a stack pointer)는 통상적으로 스택의 최상부(top-of-stack)를 구성하는 저장 요소를 지시한다. 스택상에 위치한 데이터는 통상적으로 스택의 최상부에 기록되며, 스택으로부터 제거되는 데이터 또한 스택의 최상부로부터 판독된다. 스택에의 데이터 기록 및 스택으로부터의 데이터 판독은 이후에 푸쉬(push) 및 팝(pop)으로 불릴 것이다. 통상적으로, ALU의 입력 데이터는 스택으로부터 데이터를 팝(pop)하여 획득되며, 출력 데이터는 스택상에 데이터를 푸쉬(push)하여 저장된다. 이러한 방식으로 동작하는 프로세서는 국제 출원 번호 WO95/30954에서 스택 기반 프로세서(a stack-based processor)라고 불린다.
발명의 개요
본 발명의 목적은 비용을 절감하는 것이다.
본 발명에 따르면, 데이터 프로세서는 제 1 및 제 2 입력 데이터에 대한 산술 또는 논리 연산을 수행하는 산술 논리 유닛을 포함한다. 상기 프로세서는 데이터를 저장하는 스택을 더 포함한다. 스택내에 특정 위치를 가지는 데이터는 제 1 입력 데이터로서 산술 논리 유닛에 입력된다. 데이터 프로세서는 다수의 메모리 위치들중 소정의 메모리 위치를 지시하는 어드레스(an address)를 포함하는 인스트럭션을 실행할 수 있다. 어드레스는 그 어드레스가 지시하는 메모리 위치에 포함된 데이터가 제 2 입력 데이터로서 산술 논리 유닛에 입력되도록 한다.
본 발명은 다음과 같은 측면을 고려한다. 통상적으로, 스택 기반 프로세서가 산술 또는 논리 연산을 수행하는 데에는 소정의 수의 단계를 요구한다. ALU에 의해서 수행되는 산술 또는 논리 연산 자체가 하나의 단계를 구성한다. 원하는 입력 데이터가 ALU에 입력되도록 하기 위하여 하나이상의 부가적인 단계가 요구될 수 있다. 이러한 부가적인 단계는 통상적으로, 예를 들면 하나이상의 푸쉬(push) 또는 팝(pop) 연산 또는 이들 양 연산의 조합과 같은 스택 조작을 포함한다. 원칙적으로, 각각의 단계는 적어도 하나의 클럭 싸이클(clock cycle)을 요구한다. 결과적으로, 스택 기반 프로세서가 산술 또는 논리 연산을 수행하는 데에는 수 클럭 싸이클이 소요될 것이다. 즉, 데이터 처리가 늦을 것이다. 결과적으로, 상대적으로 짧은 시간 간격내에 일련의 산술 및 논리 연산을 수행할 필요가 있는 스택 기반 프로세서는 상대적으로 빠른 요소를 이용하여 수행되어야 한다. 이러한 수행은 상대적으로 높은 비용을 요구한다.
상기된 스피드 문제의 해결책은 산술 및 논리 연산을 수행하는 데에 스택 기반 프로세서 대신에 레지스터 기반 프로세서(a register-based processor)를 이용하는 것이다. 레지스터 기반 프로세서에서는, ALU의 입력 데이터는 각기 ALU의 입력 데이터를 제공하는 2개의 레지스터를 어드레싱(addressing)함으로써 레지스터의 세트로부터 인출된다. 따라서, 레지스터 기반 프로세서의 인스트럭션은 2개의 어드레스 필드(address fields)를 포함한다. 각각의 어드레스 필드는 레지스터의 세트중 특정 레지스터를 지시하는 값을 포함한다. 결과적으로, 통상적으로 레지스터 기반 프로세서가 원하는 입력 데이터를 ALU에 입력하는 데에는 스택 기반 프로세서의 경우에서 보다 적은 클럭 싸이클을 요구할 것이다. 결과적으로, 레지스터 기반 프로세서는 스택 기반 프로세서와 비교하여 상대적으로 느린 요소를 이용하여 수행될 수 있다. 이러한 관점에서, 레지스터 기반 프로세서는 비용면에서 보다 효율적인 수행을 가능케한다.
그러나, 일련의 산술 및 논리 연산을 정의하는 소프트웨어 프로그램을 저장하는 데에 요구되는 메모리 양 또한 비용적인 측면에 있어서 중요한 요인이 될 것이다. 이것은 소프트웨어 프로그램이 저장된 메모리가 주요 메모리 회로가 아닌 집적 회로의 일부를 형성하는 경우에 특히 적용된다. 이러한 이용의 예는 소위 매립 소프트웨어 저장 메모리를 포함하는 집적 회로 형태의 디지털 신호 프로세서이다. 이러한 메모리는 상대적으로 고가이다.
메모리 비용 측면에 있어서 스택 기반 또는 레지스터 기반중 어느 타입의 프로세서가 바람직한가 하는 것은 항상 명확한 것은 아니다. 한편으로는, 통상적으로 산술 또는 논리 연산을 수행하는 데에 있어서 레지스터 기반 프로세서보다 스택 기반 프로세서가 보다 많은 인스트럭션을 요구할 것이다. 따라서, 인스트럭션의 수의 관점에서 보면 레지스터 기반 프로세서가 스택 기반 프로세서보다 효율적이다. 다른 한편으로, 레지스터 기반 프로세서의 인스트럭션은 스택 기반 프로세서의 인스트럭션보다 길다. 그 이유는 스택 기반 프로세서는 어떠한 어드레스 필드도 포함하지 않는 반면에, 이전에 기술된 바와 같이 레지스터 기반 프로세서는 2개의 어드레스 필드를 포함하기 때문이다. 따라서, 인스트럭션의 길이의 관점에서 보면 스택 기반 프로세서가 레지스터 기반 프로세서보다 효율적이다. 스택 기반 또는 레지스터 기반 프로세서중 어느 타입의 프로세서가 어떤 기능을위한 가장 컴팩트(compact)한 소프트웨어를 가능하게 하는가하는 문제는 무엇보다도 기능 그 자체에 영향을 받는다. 본 발명에 따르면, 프로세서는 스택 및 기능상 레지스터와 대등한 다수의 메모리 위치를 포함한다. 프로세서는 다음과 같이 동작할 수 있다. 스택내에 특정 위치를 가진 데이터가 제 1 입력 데이터로서 ALU에 입력된다. 메모리 위치(레지스터)로부터의 데이터가 제 2 입력 데이터로서 ALU에 입력된다. 제 2 입력 데이터를 제공하는 메모리 위치는 인스트럭션내의 어드레스에 의해서 어드레싱된다.
따라서, 제 2 입력 데이터는 스택상에 존재할 필요가 없다. 또한 스택상에 특정 위치를 가질 필요도 없다. 결과적으로, 본 발명에 따른 프로세서는 보다 적은 스택 조작을 요구한다. 결과적으로, 본 발명에 따른 프로세서는 스택 기반 프로세서보다 적은 인스트럭션을 요구하는데, 이것은 메모리 비용 측면에서 바람직하다. 더욱이, 본 발명에 따른 프로세서가 산술 또는 논리 연산을 수행하는 데에는 스택 기반 프로세서보다 적은 클럭 싸이클이 요구된다. 이것은 비용 절감에 더 공헌한다.
더욱이, 본 발명에 따른 프로세서는 단지 하나의 어드레스만을 포함하는 인스트럭션을 가능케한다. 결과적으로, 본 발명에 따른 프로세서는 레지스터 기반 프로세서의 인스트럭션보다 짧은 인스트럭션을 가능케한다. 이처럼, 이것은 메모리비용을 절감에 기여한다. 더욱이, 본 발명에 따른 프로세서의 소프트웨어 프로그램은 통상적으로 유사한 레지스터 기반 프로세서의 소프트웨어 프로그램보다 훨씬 많은 인스트럭션을 요구하지 않을 것이다. 그 이유는 산술 또는 논리 연산의 결과는 통상적으로 입력 데이터를 ALU에 제공하는 스택의 위치상에 위치하며, 실로 자주 그 결과가 후속하는 연산을 위한 입력 데이터를 형성하기 때문이다. 결과적으로, 상대적으로 보다 적은 스택 조작이 요구될 것이다.
요약하면, 본 발명에 따른 프로세서는 인스트럭션의 수 및 인스트럭션의 길이의 관점에서 볼 때 효율적이다. 결과적으로, 본 발명은 상대적으로 작은 메모리내에 저장될 수 있는 컴팩트한 소프트웨어 프로그램을 가능케한다. 결과적으로, 본 발명은 비용 절감을 가능케한다.
본 발명의 이러한 측면과 다른 다양한 측면은 도면을 참조하여 이후에 기술되는 발명의 상세한 설명에서 명확하게 설명될 것이다.
본 발명은 스택(stack)과 상호 작용하는 산술 논리 유닛(arithmetic logic unit)에 의한 데이터 처리에 관한 것이다. 본 발명은, 예를 들면 제어 데이터(control data)를 다양한 기능 유닛(functional units)에 제공하는 프로세서(processor) 형태의 제어기를 포함하는 멀티미디어(multimedia) 제품에서 이용될 수 있다.
도 1은 청구의 범위의 청구항 1에서 청구된 본 발명의 기본적인 특징뿐만 아니라 청구항 2에서 청구된 부가적인 특징을 설명하는 개념도,
도 2는 본 발명에 따른 멀티미디어 장치의 한 예를 설명하는 블록도,
도 3은 도 2에 설명된 멀티미디어 장치내의 비디오 출력 유닛의 프로그래밍 체계(a programming scheme)를 설명하는 매트릭스(matrix),
도 4는 비디오 출력 유닛이 디스플레이 장치에 제공하여야하는프레임(frame)을 설명하는 개념도,
도 5는 비디오 출력 유닛내의 마스터 제어 프로세서(a master control processor)에 제공되는 일련의 메인 인스트럭션(a series of main instructions)을 설명하는 흐름도,
도 6은 마스터 제어 프로세서의 실행을 설명하는 블록도,
도 7은 마스터 제어 프로세서의 다양한 타입의 인스트럭션과 이러한 인스트럭션내에 포함된 비트(bit)사이의 관계를 설명하는 도표,
도 8 은 마스터 제어 프로세서가 인스트럭션을 수행하는 방식을 설명하는 도.
다음의 설명은 참조 부호에 관한 것이다. 모든 도면에서 동일한 개체는 동일한 참조 문자로 표시된다. 몇몇의 유사한 개체가 하나의 도면에 표시될 것이다. 이러한 경우에, 동일한 개체를 구별하기 위해 숫자 혹은 접미사가 참조 문자에 부가된다. 숫자 혹은 접미사는 편의상 생략될 수도 있고, 또는 그 값이 중요치 않은 경우(값이 무관할 경우)에는 별표로 대체될 수도 있다. 이것은 설명뿐만 아니라 청구의 범위에도 적용된다.
도 1은 본 발명의 기본적인 특징을 실선으로 도시한다. 데이터 프로세서는 제 1 및 제 2 입력 데이터(OP1,OP2)의 산술 또는 논리 연산을 수행하는 산술 논리 유닛(ALU)을 포함한다. 데이터 프로세서는 데이터를 저장하는 스택(STCK)을 더 포함한다. 스택내의 특정 위치(P(1))를 가지는 데이터는 제 1 입력 데이터(OP1)로서 산술 논리 유닛(ALU)으로 입력된다. 데이터 프로세서는 다수의 메모리 위치(REG)중 하나의 메모리 위치(REG(i))를 지시하는 어드레스(ADDR)를 포함하는 인스트럭션(INSTR)을 실행할 수 있다. 어드레스(ADDR)는 그 어드레스가 지시하는 메모리 위치(REG(i))내에 포함된 데이터가 제 2 입력 데이터(OP2)로서 산술 논리 유닛(ALU)에 입력되도록 한다.
도 1은 파선으로 부가적인 특징을 또한 도시한다. 다양한 스택 위치(P)는 다수의 메모리 위치중 일부를 형성하는데, 이중 어떠한 것이라도 인스트럭션(INSTR)내의 어드레스(ADDR)에 의해서 지시될 수 있다. 즉, 스택(STCK)은 인스트럭션(INSTR)내의 어드레스(ADDR)에 의해서 어드레싱될 수 있는 레지스터 메모리 공간내에 포함될 수 있다. 따라서, 하나의 인스트럭션에 의해서 스택의 최상부 데이터 및 스택내의 다른 데이터에 대한 산술 또는 논리 연산을 정의하는 것이 가능할 것이다.
도 1 의 특징은, 예를 들면 멀티미디어 장치와 같은 멀티프로세서 장치의 일부를 형성하는 제어 프로세서에서 이용될 수 있다. 제어 프로세서는 제어 프로세서가 제어 데이터를 멀티프로세서 장치내에 포함된 다양한 프로세서에 입력하는 명령 세트를 실행한다. 명령 세트는 전체적으로 또는 부분적으로 내부 프로그램 메모리내에 포함될 수 있다.
도 2는 상기된 도 1의 특징을 포함하는 멀티미디어 장치의 한 예를 도시한다. 멀티미디어 장치는 부호화된 비디오 데이터를 포함하는 입력 데이터(IN)를 처리하여, 무엇보다도 디스플레이 장치상에 디스플레이하기 위한 비디오 데이터 스트림(video data stream)(VDS)을 제공한다. 멀티미디어 장치는 메인 인터페이스(main interface)(MIF), 메인 버스(HWY), 중앙 처리 유닛(CPU), 메인 인스트럭션 레지스터(REG) 및 다양한 메인 프로세서를 포함한다. 2개의 메인 프로세서가 도시되는데, 이는 비디오 복호기(VDEC) 및 비디오 출력 유닛(HDVO)이다. 비디오 출력 유닛(HDVO)은 마스터 제어 프로세서(a master control processor)(MCP) 및 다음과 같은 데이터 조작 요소, 즉 인터페이스(IF), 판독 크로스바(a read corssbar)(XB/R), 메모리 블록(MB), 프로세서(P) 스트리밍 아웃 회로(streaming-out circuit)(SO)를 포함한다. 스트리밍 아웃 회로(SO)는 버퍼(BUF), 멀티플렉서(MUX) 및 제어기(CON)를 포함한다. 각각의 데이터 조작 요소는 제어 레지스터를 가진다. 도 2에 도시되지 않은 제어 레지스터는 도 3에 예시된 것과 같은 구조를 가진다. 즉, 제어 레지스터는 프론트 레지스터(a front register) 및 섀도우 레지스터(a shadow register)를 포함한다.
멀티미디어 장치는 기본적으로 다음과 같이 동작한다. 중앙 처리 유닛(CPU)은 메인 인스트럭션 워드(main instruction words)에 의해서 멀티미디어 장치의 다양한 요소를 제어한다. 메인 인터페이스(MIF)는, 예를 들면 외부 메인 메모리로부터 입력 데이터(IN)를 패치(fetch)한다. 이러한 메모리는 도 2에 도시되어 있지 않다. 비디오 복호기(VDEC)는 입력 데이터내에 포함된 부호화된 비디오 데이터를 복호화한다. 따라서, 외부 메인 메모리에 임시로 저장될 복호화된 비디오 데이터는 획득된다. 비디오 출력 유닛(HDVO)은 복호화된 비디오 데이터를 특정 디스플레이장치상에 디스플레이한다. 부가적으로, 비디오 출력 유닛(HDVO)은 복호화된 비디오 데이터를 다른 비디오 데이터와 결합하여 픽쳐-인-픽쳐(picture-in-picture)(PIP) 또는 블랜딩(blending)과 같은 특징을 제공할 수 있다.
아래에서 비디오 출력 유닛(HDVO)의 동작이 보다 상세히 설명될 것이다. 비디오 출력 유닛(HDVO)은 구성 단계 및 처리 단계를 번갈아 수행한다. 구성 단계에서, 마스터 제어 프로세서(MCP)는 로드 명령(a load command)을 데이터 조작 요소의 제어 레지스터에 제공한다. 도 3에 도시된 바와 같이, 각각의 제어 레지스터는 프론트 레지스터 및 섀도우 레지스터를 포함함은 이전에 언급되었다. 따라서, 섀도우 레지스터는 로드 명령에 응답하여 인스트럭션 워드(an instruction word)를 로딩한다. 따라서, 인스트럭션 워드는 구성 단계에 뒤이은 처리 단계동안에 관련된 데이터 조작 요소의 동작을 결정할 것이다. 예를 들면, 크로스바(XB/W,XB/R)의 섀도우 레지스터에 로딩된 인스트럭션 워드는, 한편으로는 메모리 블록(MB)과, 다른 한편으로는 인터페이스(IF), 스트리밍 아웃 회로(SO) 및 프로세서(P)사이의 접속을 결정한다. 제어 레지스터의 섀도우 레지스터가 인스트럭션 워드를 로딩하였을 때에, 제어 레지스터는 구성 완료 신호(a configuration-done signal)를 마스터 제어 프로세서(MCP)에 제공한다. 마스터 제어 신호가 모든 데이터 조작 요소의 제어 레지스터로부터 구성 완료 신호를 수신하였을 때에, 마스터 제어 프로세서(MCP)는 처리 개시 신호(a start-processing signal)를 프로세서(P)에 제공한다. 처리 개시 신호는 처리 단계의 시작을 나타낸다.
처리 단계에서, 각각의 프로세서(P)는 프로세서(P)가 접속된 메모리블록(MB)에 저장된 특정한 수의 픽셀(pixel)을 처리한다. 처리 단계에서 프로세서(P)가 처리하는 픽셀의 수는 256을 초과하지 않는다. 처리될 픽셀의 수는, 예를 들면 인스트럭션 워드에 의해서 정의될 수 있다. 프로세서(P)가 픽셀을 처리하는 동안에, 마스터 제어 프로세서(MCP)는 새로운 인스트럭션 워드를 데이터 조작 요소의 프론트 레지스터에 기록함으로써 새로운 VLIW를 구성할 수 있다. 일단 프로세서(P)가 정해진 수의 픽셀을 처리한 때에는, 프로세서는 처리를 정지하며 동작 종료 신호(an end-of-operation signal)를 마스터 제어 프로세서(MCP)에 제공할 것이다. 이에 응답하여, 마스터 제어 프로세서(MCP)는 새로운 구성 단계를 수행할 것이다.
따라서, 비디오 출력 유닛(HDVO)은 복호화된 비디오 데이터를 블록 단위의 방식으로(in a block-wise-manner) 처리한다. 예를 들면, 제 1 처리 단계에서, 인터페이스(IF)는 256 픽셀의 블록을 기록 크로스바(XB/W)를 경유하여 메모리 블록(MB1)에 기록한다. 제 2 처리 단계에서, 프로세서(P1)는 메모리 블록(MB1)으로부터 256 픽셀의 블록을 판독하여 이것을 처리한다. 프로세서(P1)는, 예를 들면 동일한 라인(line)상의 다수의 픽셀에 가중치를 주어 조합하는 수평 비디오 필터일 수 있다. 따라서, 프로세서(P1)는 수평으로 필터링된 픽셀의 블록을 제공하여 이러한 블록을 메모리 블록(MB2)에 기록한다. 제 3 처리 단계에서, 프로세서(P2)는 메모리 블록(MB2)으로부터 처리된 수평으로 필터링된 블록을 판독하여 이를 처리한다. 프로세서(P2)는, 예를 들면 이웃하는 라인에 속하는 해당 픽셀에 가중치를 주어 조합하는 수직 비디오 필터일 수 있다. 수평으로 필터링된 픽셀의 블록이 한 라인에 속하는 경우에는, 프로세서(P2)는 이웃하는 라인에 속하는 다른 수평으로 필터링된 픽셀의 블록을 판독할 것이다. 따라서, 프로세서(P2)는 수평 및 수직으로 필터링된 픽셀의 블록을 제공하며, 이러한 블록을 메모리 블록(MB3)에 기록한다. 프로세서 P3 또는 P4 또는 이들 모두가 메모리 블록(MB3)에 포함된 수평 및 수직으로 필터링된 픽셀을 더 처리하는 부가하는 처리 단계가 존재할 수 있다. 예로서, 수평 및 수직으로 필터링된 픽셀의 블록은 비디오 데이터 스트림(VDS)의 일부를 형성할 준비가 되었음이 가정된다. 따라서, 제 4 처리 단계에서, 관계 블록은 메모리 블록(MB3)으로부터 스트리밍 아웃 회로(SO)의 버퍼(BUF)로 전송될 것이다.
통상적으로 스트리밍 아웃 회로(SO)는 각각의 처리 단계에서 처리된 픽셀의 블록을 수신하여 이를 버퍼(BUF)에 저장한다. 스트리밍 아웃 회로(SO)는 버퍼(BUF)로부터 처리된 픽셀을 판독하여 비디오 데이터 스트림(VDS)에 제공한다. 제어기(CON)는, 예를 들면 라인 주파수, 필드 주파수, 라인당 픽셀 수 및 필드당 라인 수에 관한 비디오 데이터 스트림(VDS)의 원하는 포맷(format) 정보를 가지고 있다. 제어기(CON)는 처리된 픽셀이 적당한 순간에, 원하는 레이트(rate)로 버퍼(BUF)로부터 판독되도록 한다. 제어기(CON)는 픽셀과, 예를 들면 수평 및 수직 동기화 신호(HS,VS)와 같은 다수의 제어 신호를 수신하는 멀티플렉서(MUX)를 또한 제어한다. 따라서, 적절한 제어 신호가 적당한 순간에 픽셀들 사이에 삽입된다.
그 결과, 비디오 출력 유닛(HDVO)은 데이터 조작 요소, 즉 인터페이스(IF), 판독 크로스바(XB/R), 기록 크로스바(XB/W), 메모리 블록(MB), 프로세서(P) 및 스트리밍 아웃 회로(SO)로 구성된 데이터 처리 체인(a data-processing chain)이 된다. 마스터 제어 프로세서(MCP)는 데이터 처리 체인의 구성을 결정한다. 마스터 제어 프로세서는 또한 체인내의 각각의 요소의 데이터 조작 특성을 결정한다. 마스터 제어 프로세서(MCP)는 적절한 인스트럭션 워드를 데이터 조작 요소의 제어 레지스터에 기록함으로써 상기 결정을 행한다. 요컨데, 마스터 제어 프로세서(MCP)는 다양한 기계를 갖춘 작업장의 감독관으로 여겨질 수 있다. 작업장은 비디오 출력 유닛(HDVO)에 해당하며, 기계는 비디오 출력 유닛(HDVO)내의 데이터 조작 요소에 해당한다. 감독관은 생산 라인을 구성하며, 기계가 그 안에서 무엇을 할지를 결정한다. 생산 라인은 데이터 처리 체인에 해당한다.
비디오 출력 유닛(HDVO)이 하나의 비디오 신호를 프레임당 라인 수 및 라인당 픽셀 수에 관하여 소정의 포맷에서 다른 포맷으로 변환해야 한다고 가정하자. 이것은 적절한 수평 및 수직 필터링 단계를 포함하는 데이터 처리 체인에 의해서 획득될 수 있다. 포맷 변환의 시작 단계에서, 데이터 처리 체인은 전체적으로 동작하기 전에 먼저 픽셀로 채워져야 한다. 포맷 변환의 마지막 단계에서, 말하자면 정지하거나 중지하기 전에 데이터 처리 체인은 비워져야 한다.
예를 들면, 변환될 비디오 신호의 제 1 픽셀 블록은 비디오 출력 유닛(HDVO)에 제공되는 경우에, 데이터 처리 체인의 시작 단계에 있는 데이터 조작 요소만이 활성 상태가 되어야 한다. 이 시간에, 메모리 블록(MB)은 아직까지 프레임의 픽셀로 채워지지 않는다. 각각의 처리 단계에서, 보다 많은 메모리 블록이 픽셀로 채워질 것이며, 보다 많은 데이터 조작 요소가 활성 상태가 될 것이다. 이러한 현상은 데이터 처리 체인내의 각각의 메모리 블록(MB)이 픽셀로 채워질 때까지 계속될 것이다. 그런 다음 데이터 처리 체인은 전체적으로 동작할 것이며, 스트리밍 아웃 회로(SO)는 픽셀 제공을 개시할 수 있다.
도 3은 비디오 출력 유닛(HDVO)의 프로그래밍 구조을 도시한다. 도 3은 매트릭스이다. 이러한 매트릭스의 열(column)은 데이터 조작 요소를 나타낸다. 보다 구체적으로, 열은 관련 데이터 조작 요소의 섀도우 레지스터를 나타낸다. 매트릭스의 행(row)은 처린 단계(PS)를 나타낸다. 매트릭스 셀(cell)은 인스트럭션 워드를 나타낸다. VLIW는 매트릭스의 특정 행에 속하는 셀의 합성(composition)이다. 즉, VLIW는 특정 처리 단계(PS)에 대한 인스트럭션 워드의 합성이다. VLIW는 관련 데이터 조작 요소들이 병렬적으로 수행하여야 할 연산을 정의한다.
마스터 제어 프로세서(MCP)는 다양한 방식으로 VLIW를 구성할 수 있다. 예를 들면, 마스터 제어 프로세서(MCP)는 인스트럭션 워드를 각각의 제어 레지스터에 기록함으로써 특정 처리 단계에 대한 VLIW를 구성할 수 있다. 그러나, 마스터 제어 프로세서(MCP)는 인스트럭션 워드를 하나이상의 특정 제어 레지스터에 기록하며, 다른 제어 레지스터에는 기록하지 않음으로써 VLIW를 더 포함할 수 있다. 후자의 제어 레지스터는 인스트럭션 워드를 이전의 처리 단계에서 포함된 상태로 유지한다.
도 3에 도시된 매트릭스는, 예를 들면 프레임의 디스플레이에 해당할 수 있다. 처리 단계(PS[1])는 프레임을 디스플레이하기 위하여 수행되는 제 1 처리 단계이며, 처리 단계(PS[N])는 마지막 처리 단계이다. 예를 들면, 프레임이 700 라인 및 라인당 1024 픽셀을 가진다고 가정하자. 또한, 처리 단계에서 256 출력 픽셀이통상적으로 스트리밍 아웃 회로(SO)에 제공된다고 가정하자. 이것은 통상적으로 비디오 신호내의 라인당 4개의 처리 단계(PS)가 존재하며, 결과적으로, 플레임당 700 처리 단계(PS)의 4배, 즉 프레임당 2800 처리 단계가 존재할 것이라는 것을 의미한다(N = 2800).
처음의 몇몇 처리 단계(PS)는 프레임의 디스플레이를 위한 초기화 단계를 구성하며, 마지막 몇몇 처리 단계(PS)는 종결 단계를 구성한다. 이전에 기술된 바와 같이, 처리 체인은 단계별로 채워지고 비워져야 한다. 이것은, 초기화 단계 및 종결 단계에서, 소정의 처리 단계에서의 인스트럭션 워드가 후속하는 처리 단계에서의 상이한 인스트럭션 워드로 대체되는 적어도 하나의 데이터 조작 요소가 존재한다는 것을 의미한다. 또한, 이것은 초기화 단계 및 종결 단계에서, 각각의 처리 단계에 대한 상이한 VLIW가 존재할 것이라는 것을 의미한다. 초기화 단계 및 종결 단계사이의 처리 단계는 또한 다양한 상이한 VLIW를 요구할 것이다. 동일한 처리 체인이 프레임동안에 이용되는 경우에, 하나의 VLIW가 초기화 단계와 종결 단계사이의 처리 단계동안에 이용될 수 있다. 예를 들면, 비디오 출력 유닛(HDVO)이 하나의 비디오 신호를 소정의 포맷에서 다른 포맷으로 변환해야 한다면 이러한 경우에 해당할 것이다.
도 4는 비디오 출력 유닛(HDVO)이 디스플레이 장치에 제공하여야 하는 프레임을 도시한다. 프레임은 서브 픽쳐(SPIC)가 삽입된 메인 픽쳐(MPIC)로 구성된다. 또한 도 4는 프레임내의 상이한 프레임 영역(FZ1-FZ6)을 도시한다. 각각의 프레임 영역(FZ)은 도 2에 도시된 마스터 제어 프로세서(MCP)에 의해서 수행될 제어 동작에 관한 특정 상태와 관련되어 있다.
프레임 영역(FZ1)에서, 마스터 제어 프로세서(MCP)는 메인 픽쳐(MPIC)에 대한 처리 체인을 형성한다. 프레임 영역(FZ2)에서 마스터 제어 프로세서(MCP)는 나중의 처리 체인을 유지한다. 프레임 영역(FZ2)는 X 라인(X는 정수)을 포함한다. 프레임 영역(FZ3)에서, 마스터 제어 프로세서(MCP)는 메인 픽쳐를 디스플레이하는 프로세싱 체인을 중지하며, 메인 픽쳐(MPIC) 및 거기에 삽입된 서브 픽쳐(SPIC)를 디스플레이하는 처리 체인을 형성한다. 프레임 영역(FZ4)에서, 마스터 제어 프로세서(MCP)는 나중의 처리 체인을 유지한다. 프레임 영역(FZ4)은 Y 라인(Y는 정수)을 포함한다. 프레임 영역(FZ5)에서, 마스터 제어 프로세서(MCP)는 메인 픽쳐(MPIC) 및 거기에 삽입된 서브 픽쳐(SPIC)를 디스플레이하는 처리 체인을 중지하며, 메인 픽쳐(MPIC)를 디스플레이하는 처리 체인을 다시 형성한다. 프레임 영역(FZ6)에서, 마스터 제어 프로세서는 나중의 처리 체인을 유지한다. 프레임 영역(FZ6)은 Z 라인(Z는 정수)을 포함한다.
도 5는 이전에 기술된 제어 작동을 수행하기 위하여 마스터 제어 프로세서(MCP)에 제공되는 일련의 메인 인스트럭션(MI1-MI8)을 도시한다. 메인 인스트럭션(MI1)은 마스터 제어 프로세서(MCP)가 내부 메모리에 저장된 서브루틴(subroutine)(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)가 삽입된 메인 픽쳐(MPIC)를 디스플레이하는 처리 체인이 처리 단계마다 형성되도록 한다.
메인 인스트럭션(MI5)은 마스터 제어 프로세서(MCP)가 서브루틴(PIP)을 연속해서 Y 회 실행하도록 한다. 즉, Y ×PIP. 서브루틴(PIP)을 실행하면 라인에 포함된 처리 단계에서 이용되는 VLIW를 생성하게 된다. 따라서, 이러한 VLIW는 프레임 영역(FZ4)동안 이용된다. 이것은 데이터 조작 요소가 서브픽쳐(SPIC)가 삽입된 메인 픽쳐(MPIC)를 디스플레이 하는 데에 필요한 처리를 수행하도록 한다.
메인 인스트럭션(MI6)은 마스터 제어 프로세서(MCP)가 서브루틴(END_PIP)을 실행하도록 한다. 서브루틴(END_PIP)을 실행하면 프레임 영역(FZ5) 상부에 포함된 처리 단계에 대한 일련의 VLIW를 생성한다. 각각의 처리 단계에 대하여, 상이한 VLIW가 생성되어 비디오 출력 유닛(HDVO)의 데이터 조작 요소에 제공된다. 일련의 VLIW는 서브루틴(SPIC)이 삽입된 메인 픽쳐(MPIC)를 디스플레이하는 처리 체인이 처리 단계마다 중지되도록 한다.
메인 인스트럭션(MI7)은 마스터 제어 프로세서(MCP)가 서브루틴(STRT_MAIN)을 재실행하도록 하는데, 이러한 서브루틴은 이전에 기술된 바 있다. 메인 인스트럭션(MI8)은 마스터 제어 프로세서(MCP)가 서브루틴(MAIN)을 Z 회 연속하여 실행한다. 즉 Z ×MAIN. 서브루틴(MAIN)은 이전에 기술된 바 있다.
요컨데, 마스터 제어 프로세서(MCP)는 다양한 기계를 갖춘 작업장의 감독관으로 여겨질 수 있음은 이미 기술된 바와 같다. 작업장은 비디오 출력 유닛(HDVO)에 해당하며, 기계는 비디오 출력 유닛(HDVO)내의 데이터 조작 요소에 해당한다. 요컨데, 메인 인스트럭션(MI)은 감독관이 관리자로부터 수신하는 생산 주문으로 여겨질 수 있다. 감독관은 생산 주문을 기계용 인스트럭션으로 변환한다. 동시에, 그리고 병렬적으로 수행될 인스트럭션의 집합은 VLIW에 해당한다.
메인 인스트럭션(MI1)은 제품 A의 생산 라인을 시작하는 주문으로 여겨질 수있다. 메인 인스트럭션(MI2)은 이러한 생산 라인상에서 제품 A의 X개 샘플을 생산하는 주문으로 여겨질 수 있다. 메인 인스트럭션(MI3,MI4)는 제품 A의 제품 라인을 중지하며 제품 B의 생산 라인을 개시하라는 주문으로 여겨질 수 있다. 메인 인스트럭션(MI5)은 이러한 생산 라인에서 제품 B의 Y개 샘플을 생산하는 주문으로 여겨질 수 있다. 이하 마찬가지이다.
도 6은 도 2는 마스터 제어 프로세서(MCP)의 실시를 도시한다. 마스터 제어 프로세서(MCP)는 도 2에 역시 도시되어 있는 메인 버스(HWY)를 통하여 비디오 출력 유닛(HDVO) 외부의 요소와 통신한다. 예를 들면, 마스터 제어 프로세서(MCP)는 메인 버스(HWY)를 통하여 메인 인스트럭션을 수신할 수 있다. 마스터 제어 프로세서(MCP)는 제어 버스(CBUS)를 통하여 비디오 출력 유닛(HDVO)내의 데이터 조작 요소와 통신한다. 예를 들면, 마스터 제어 프로세서는 인스트럭션 워드를 제어 버스(CBUS)를 통하여 데이터 조작 요소로 전송할 수 있다. 마스터 제어 프로세서(MCP)는 접속(XC)을 통하여 비디오 출력 유닛(HDVO)내의 메모리 블록(MB)으로부터/으로 데이터를 수신/전송할 수 있다.
마스터 제어 프로세서(MCP)는 메인 버스 인터페이스(HWYINT)와 제어 버스 인터페이스(CBUSINT)와 산술 논리 유닛(ALU)과 프로그램 카운터(a program counter)(PC), 인터럽트 유닛의 집합(an assembly of interrupt units)(IU), 연산 스택(a compute stack)(CSTCK), 리턴 스택(a return stack)(RSTCK), 프로그램 메모리(a program memory)(PMEM), 데이터 메모리(a data memory)(DMEM) 및 다이렉트 메모리 액세스 회로(a direct memory-access circuit)(DMAC)를 포함하는 레지스터의집합(REG)을 포함한다. 연산 스택(CSTCK) 및 리턴 스택(RSTCK)은 각기 스택 포인터(a stack pointer)를 가진다. 스택 포인터는 관련 스택내의 각각의 저장 요소의 위치를 정의한다. 연산 스택(CSTCK)내의 스택의 최상부 위치(top-of-stack position) 및 스택의 두번째 위치(second-of-stack position)는 이후에 각기 TOS 및 SOS라고 불릴 것이다. 리턴 스택(RSTCK)의 스택의 최상부 위치 및 스택의 두번째 위치는 이후에 각기 TOR 및 SOR로 불릴 것이다.
마스터 제어 프로세서(MCP)는 기본적으로 다음과 같이 동작한다. 프로그램 카운터(PC)는 통상적으로 각 싸이클마다 증가하는 프로그램 계수값(a program-count value)을 포함한다. 프로그램 계수값은 프로그램 카운터(PC)에 새로운 프로그램 계수값을 기록함으로써 변할 수 있다. 프로그램 계수값은 마스터 제어 프로세서(MCP)의 인스트럭션이 저장되는 프로그램 메모리(PMEM)의 어드레스를 구성한다. 이러한 인스트럭션은 이후에 MCP 인스트럭션이라고 불릴 것이다. MCP 인스트럭션은 산술 논리 유닛(ALU)이 수행하는 연산을 정의한다. 이후에 상세히 설명될 바와 같이, MCP 인스트럭션은 리턴 스택(RSTCK) 및 연산 스택(CSTCK)을 제어하는 연산을 또한 정의한다. 이전에 기술된 바와 같이, VLIW를 생성하는 서브루틴은 MCP 인스트럭션의 세트(a set of MCP instructions)에 의해서 형성된다.
인스트럭션의 세트는 다음과 같은 방식으로 프로그램 메모리(PMEM)내에 저장될 수 있다. 먼저 인스트럭션의 세트는 멀티미디어 장치 외부 소스로부터 메인 버스(HWY)를 통하여 메모리 블록(MB)내로 로딩(loading)된다. 그런 다음, 인스트럭션의 세트 또는 그 일부가 메모리 블록(MB)으로부터 접속(XC)을 통하여 프로그램 메모리(PMEM)로 복사된다. 프로그램 메모리(PMEM)는 다수의 뱅크(bank)를 포함할 수 있다. 이러한 경우에, 마스터 제어 프로세서(MCP)가 다른 뱅크내에 포함된 인스트럭션을 수행하는 동안, 메모리 블록(MB)으로부터 뱅크로 인스트럭션을 복사하는 것은 가능하다.
인스트럭션은 다음과 같은 방식으로 메모리 블록(MB)내에 저장될 수 있다. 제 1 메모리 블록(MB1)은 인스트럭션의 최상위 부분(a most-significant portion of the instruction)을 포함하며, 제 2 메모리 블록(MB2)은 중간 유효 부분(an intermediate significant portion)을 포함하며, 제 3 메모리 블록은 최하위 부분(a least significant portion)을 포함하는데, 이들 부분은 각기, 예를 들면 8 비트(bit)를 포함한다. 이러한 부분이 프로그램 메모리(PMEM)로 전송되는 경우에, 말하자면, 이들은 함께 묶여져 24 비트를 포함하는 인스트럭션을 형성한다. 인스트럭션이 저장된 메모리 블록(MB)은 처리될 데이터가 저장되는 메모리 블록(MB)에 부가적일 수도 있음은 주의되어야 한다. 즉, 멀티미디어 장치는, 예를 들면 하나는 데이터를 위한, 그리고 다른 하나는 제어를 위한 다수의 메모리 블록 세트를 포함할 수 있는데, 각각의 메모리 블록 세트는 자신의 크로스바(crossbar)를 가진다.
아래에 기술하는 내용은 MCP 인스트럭션 구조(syntax)의 예이다. MCP 인스트럭션은 b23 내지 b0의 24 비트를 포함한다. b23 비트는 MCP 인스트럭션이 무조건부인지 조건부인지 여부를 정의한다. MCP 인스트럭션의 b23 비트가 0의 값을 가지는 경우에는 MCP 인스트럭션은 무조건부이다. 무조건부 MCP 인스트럭션은 항상 실행된다. MCP 인스트럭션의 b23 비트가 1의 값을 가지는 경우에는 MCP 인스트럭션은 조건부이다. 조건부 MCP 인스트럭션은 특정 레지스터내의 최하위 비트가 0의 값을 가지는 경우에만 실행될 것이다. b22, b21 및 b12 비트는 상이한 타입의 인스트럭션들을 구분하는 데에 이용된다. 소정의 타입의 MCP 인스트럭션은 무조건부 또는 조건부일 수 있다. MCP 인스트럭션의 b22 비트가 1의 값을 가지는 경우에 MCP 인스트럭션은 타입 0 인스트럭션(a type-0 instruction)이다. 타입 0 인스트럭션은 데이터를 내부 메모리 위치, 예를 들면 레지스터에 기록하는 데에 기여한다. 타입 0 인스트럭션의 b21 내지 b12 비트는 기록될 데이터를 구성한다. b11 내지 b0 비트는 데이터가 기록될 메모리 위치의 어드레스를 정의한다. 메모리 위치가 10 비트보다 큰 크기를 가지는 경우에는 데이터는 부호 확장형(sign-extended)이 된다.
b22 및 b21 비트가 모두 0인경우에는 MCP 인스트럭션은 타입 1(type-1) 또는 타입 1A(type-1A)이다. 타입 1 및 타입 1A 인스트럭션은 데이터를 처리하는 데에 기여한다. 부가적으로, b12 비트가 0의 값을 가지는 경우에는 MCP 인스트럭션은 타입 1 인스트럭션이다. 타입 1 인스트럭션의 b11 내지 b0 비트는 어드레스를 정의한다. 이러한 어드레스에 저장된 데이터는 산술 논리 유닛(ALU)의 입력 데이터를 형성한다. b12 비트가 1의 값을 가지는 경우에는 MCP 인스트럭션은 타입 1A 인스트럭션이다. 타입 1A 인스트럭션의 b11 내지 b0 비트는 데이터를 나타낸다. 이러한 데이터는 산술 논리 유닛(ALU)의 입력 데이터를 형성한다. 데이터는 부호형이며, 확장되어 산술 논리 유닛(ALU)에 제공되기 전에 16 비트 2진 워드를 형성한다.
타입 1 또는 타입 1A 인스트럭션은 b20 내지 b17 비트에 의해서 형성된 연산 코드부(opcode portion)를 포함한다. 연산 코드부는 입력 데이터에 대하여 산술 논리 유닛(ALU)이 수행하는 처리 연산 및 이러한 처리 연산 결과가 저장되는 곳에 관하여 연산을 결정한다. 결과는 TOS에 기록되거나 프로그램 카운터(PC)에 기록된다. 타입 1 인스트럭션에 대하여 16개의 상이한 연산이 존재하며, 또한 타입 1A 인스트럭션에 대하여 16개의 상이한 연산이 존재한다. 예를 들면, 입력 데이터와 TOS의 컨텐츠(content)의 AND 조합을 취하여 이러한 AND 조합의 결과를 TOS에 기록하는 연산이 존재한다. 다른 연산들은 NOR, XOR, NAND, OR, XNOR 조합을 만들 수 있다.
b22 비트가 0의 값을 가지며 b21이 1의 값을 가지는 경우에는 MCP 연산은 타입 2 인스트럭션(a type-2 instruction)이다. 타입 2 인스트럭션은 데이터를 전송하는 데에 기여한다. 타입 2 인스트럭션은 b20 내지 b17 비트에 의해서 형성되는 전송 제어부를 포함한다. 전송 제어부는 전송될 데이터의 소스(source) 및 목적지(destination)을 정의한다. 보다 구체적으로, b18 내지 b17 비트는 소스를 정의하며, b20 내지 b19 비트는 데이터의 목적지 어드레스를 정의한다. TOS, SOS, TOR 또는 프로그램 카운터(PC)의 4개의 데이터 소스가 존재한다. TOS의 컨텐츠, SOS의 컨텐츠, 인덱스 값이 첨가되거나 첨가되지 않은 MCP 인스트럭션 자체의 b11 내지 b0 비트의 4개의 목적지 어드레스가 존재한다.
타입 0, 타입 1, 타입 1A 인스트럭션은 주로 도 2에 도시된 비디오 출력 유닛(HDVO)의 데이터 조작 요소에 대한 인스트럭션 워드를 생성하는 데에 기여한다. 타입 2 데이터 인스트럭션은 주로 이렇게 생성되어 데이터 조작 요소의 레지스터를 제어하는 인스트럭션 워드를 전송하는 데에 기여한다. 말하자면, 나중의 MCP 인스트럭션은 MCP 인스트럭션을 전송한다.
타입 1, 타입 1A, 타입 2의 MCP 인스트럭션은 b16 내지 b13 비트에 의해서 형성된 스택 제어부를 포함한다. 연산 스택(CSTCK)은 b16 내지 b15에 따라 제어되며, 리턴 스택(RSTCK)은 b14 내지 b13 비트에 따라 제어된다. 연산 스택(CSTCK)에 대한 4개의 제어 동작 및 리턴 스택(RSTCK)에 대한 4개의 제어 동작이 존재한다. b16 내지 b15 비트 및 b14 내지 b13 비트의 값은 각각의 4개의 제어 동작중 어느 것이 수행되어야 하는 지를 결정한다.
도 7은 이전에 기술된 다양한 타입의 MCP 인스트럭션과 이러한 인스트럭션에 포함된 b23 내지 b21 비트 사이의 관계를 도시한다. 도 7에서, 참조 문자는 다양한 타입의 MCP 인스트럭션을 지시하는 데에 이용되는데, UNCOND은 무조건부 인스트럭션을 지시하며, COND는 조건부 인스트럭션을 지시하며, TP0, TP1, TP1A 및 TP2는 각기 타입 0, 타입 1, 타입 1A 및 타입 2 인스트럭션을 지시한다. 도 7은 나중의 4개의 MCP 인스트럭션의 특성을 지시하는 참조 문자를 더 포함한다. 타입 0 인스트럭션은 데이터를 기록하는 데에 기여한다(WRT). 타입 1 인스트럭션은 내부 메모리로부터 데이터를 판독하여 이러한 데이터를 처리한다(RD&PROC). 타입 1A 인스트럭션은 인스트럭션내에 포함된 데이터를 처리하는 데에 기여한다. 즉, 데이터를 즉각 처리하는 데에 기여한다(IPROC). 타입 2 인스트럭션은 데이터를 전송하는 데에 기여한다(TRNSFER). 도 7은 연산 코드부(OPC), 전송 제어부(WOPC) 및 스택 제어부(STC)를 지시하는 참조문자를 더 포함한다.
이전에 기술된 바와 같이, b16, b15 비트는 연산 스택(CSTCK)에 대한 4개의 제어 동작을 정의한다. Nop, Cpy, Psh, 및 Pop 제어 동작이 존재한다. Nop 제어 동작은 연산 스택(CSTCK)을 변화시키지 않는다. Cpy 제어 동작은 TOS의 컨텐츠를 SOS에 복사한다. 이러한 복사는 산술 논리 유닛(ALU)이 인스트럭션을 수행하기 전에 행해진다. Psh 제어 동작은 스택 포인터를 증가시킨다. 그 결과, 인스트럭션전에 TOS인 저장 요소는 인스트럭션후에 SOS가 된다. 인스트럭션전에 TOS인 저장 요소의 컨텐츠는 인스트럭션후에 TOS인 저장 요소에 자동으로 복사된다. 따라서, 인스트럭션전의 TOS 컨텐츠는 인스트럭션후의 TOS 컨텐츠이다. 그러나, 인스트럭션이 산술 논리 유닛(ALU)이 데이터를 TOS에 기록하도록 하는 경우에는. 인스트럭션후의 TOS 컨텐츠는 그 데이터가 될 것이다. Pop 제어 동작은 스택 포인터를 감소시킨다. 그 결과, 인스트럭션전에 SOS인 저장 요소는 자동으로 인스트럭션후에 TOS가 된다.
이전에 기술된 바와 같이, b14, b13 비트는 리턴 스택(RSTCK)에 대한 4개의 제어 동작을 정의한다. Rnop, Rpc, Rpsh 및 Rpop 제어 동작이 존재한다. Rnop 동작은 리턴 스택(RSTCK)을 변화시키지 않는다. Rpc 제어 동작은 스택 포인터를 증가시킨다. 상수값이 프로그램 계수값에 가산되어, 이러한 가산의 결과가 TOR에 복사된다. 상수값은 실시에 따라 달라진다. Rpsh 동작은 스택 포인터를 증가시킨다. 그 결과, 인스트럭션전에 TOR인 저장 요소는 인스트럭션후에 SOR이 된다. 인스트럭션전에 TOS인 저장 요소에 포함된 데이터는 자동으로 리턴 스택(RSTCK)상에 푸쉬(push)된다. 즉, 인스트럭션후의 TOR의 컨텐츠는 인스트럭션전의 TOS 컨텐츠이다. 그러나, 인스트럭션이 산술 논리 유닛(ALU)이 데이터를 TOR에 기록하도록 하는 경우에는, 인스트럭션후의 TOR의 컨텐츠는 그 데이터가 될 것이다. Rpop 제어 동작은 스택 포인터를 감소시킨다. 그 결과, 인스트럭션전에 SOR인 스택내의 저장 요소는 인스트럭션후에 TOR이 된다. 즉, 인스트럭션후의 TOR의 컨텐츠는 인스트럭션전의 SOR의 컨텐츠이다.
원칙적으로, 이전에 기술된 스택 관련 제어 동작은 타입 1 및 타입 1A 인스트럭션의 연산 코드부에 정의된 연산에 영향을 받지 않고서 수행된다. 또한 스택 관련 제어 동작은 타입 2 인스트럭션의 전송 제어부에서 정의된 데이터 전송에 영향을 받지않고서 수행된다. 따라서, 많은 조합이 가능하다.
연산 스택(CSTCK) 및 리턴 스택(RSTCK)은 모두 다음과 같은 규칙에 따라서 제어된다. 스텍 포인터는 산술 논리 유닛(ALU)이 관련 인스트럭션을 수행하기 전에 증가되며, 그 후에 스택 포인터는 감소된다. 이리하여, 팝-타입 인스트럭션(a pop-type instruction)에 뒤이은 푸쉬-타입 인스트럭션(a push type instruction)은 스택 포인터를 변화시키지 않은 상태로 둘 것이다. 스택 제어가 하나의 스택에서 다른 스택으로 데이터를 복사하는 단계를 포함한다면, 복사되는 데이터는 항상 인스트럭션전에 스택 위치에 포함되는 데이터이다.
마스터 제어 프로세서(MCP)가 인스트럭션을 실행하는 경우에, 산술 논리 유닛(ALU)이 스택 위치에 기록하고자하며, 동일한 위치에 인스트럭션의 스택 제어부가 기록하고자 하는 경우가 발생할 수 있다. 이러한 경우에 충돌이 발생한다. 충돌은 산술 논리 유닛(ALU)이 우선 순위를 가진다는 점에서 해소된다. 산술 논리 유닛(ALU)의 출력 데이터는 관련 스택 위치에 기록된다. 어떠한 경우라도, 충돌이 존재하는 경우에도 스택 포인터는 인스트럭션의 스택 제어부에 따라서 변형된다.
MCP 인스트럭션의 b16, b15 비트 및 b14, b13 비트에 각기 응답하여 연산 스택(CSTCK) 및 리턴 스택(RSTCK)이 이전에 기술된 바와 같이 작동하도록 하는 다양한 방식이 존재한다. 예를 들면, 각각의 스택은 선입 후출 메모리(a first in, last out(FILO) memory)에 배열된 저장 요소에 의해서 형성될 수 있다. 통상적으로 이러한 메모리는 클럭의 양 또는 음의 에지(a positive or negative edge)에 응답하여 포함하고 있는 데이터를 한 위치만큼 쉬프트한다. 데이터가 쉬프트되는 방향은 통상적으로 FILO 메모리의 제어 입력에 입력되는 제어 데이터에 의해서 정의된다. 인스트럭션내의 관련 비트로부터 적절한 제어 데이터를 유도하는 데에는 상대적으로 간단한 논리 회로로 충분할 것이다.
도 8은 마스터 제어 프로세서(MCP)가 인스트럭션을 수행하는 방식을 도시한다. 도 8은 수평축은 시간을 나타내며 수직축은 인스트럭션(INSTR)을 나타내는 도식이다. 인스트럭션(INSTR)은 8개의 상이한 단계(S1-S8)에서 실행된다. 각각의 단계는 클럭 싸이클(CC)에 해당한다. 결과적으로, 인스트럭션을 모두 실행하는 데에는 8 클럭 싸이클을 필요로한다. 마스터 제어 프로세서(MCP)는 각각의 싸이클마다. 새로운 인스트럭션을 실행하기 시작한다. 따라서, 소정의 클럭 싸이클에서, 마스터 제어 프로세서(MCP)는 상이한 단계를 병렬적으로 수행하며, 각각의 단계는 상이한 인스트럭션에 속한다.
S1 단계에서, 마스터 제어 프로세서(MCP)는 인스트럭션을 패치한다. 이러한 단계에서 프로그램 카운터가 판독된다. S2 단계에서, 인스트럭션은 디코딩된다. S3 단계에서, 산술 논리 유닛(ALU)의 입력 데이터는 내부 저장 요소로부터 판독된다. S4 단계는 내부 데이터 지연(delay)이다. S5 단계에서, 산술 또는 논리 연산이 인스트럭션에서 정의된 바와 같이 수행된다. S6 단계에서, 산술 또는 논리 연산의 결과는 내부 저장 요소에 기록된다. 이러한 단계에서 TOS가 유효하게 기록된다. 더욱이, 프로그램 카운터는 갱신된다. S7 단계는 지연이다. S8 단계에서, 데이터는 마스터 제어 프로세서(MCP)를 멀티미디어 장치에 포함된 다양한 데이터 프로세서에 결합하는 제어 버스(CBUS)에 유효하게 입력될 수 있다.
마스터 제어 프로세서(MCP)는 필요한 파이프라인 단계(pipeline stages)를 포함하며, 스택 기록을 배제하여 스택 인스트럭션이 추가 대기 싸이클을 부가하지 않고서 차례로 실행되도록 한다. 예를 들면, 마스터 제어 프로세서(MCP)는 산술 논리 유닛(ALU)의 출력과 입력 사이의 데이터 전송 경로를 포함하여 산술 또는 논리 연산의 결과가 후속하는 산술 또는 논리 연산의 TOS 데이터로서 이용되도록 한다. 리턴 스택에서도 유사한 데이터 경로가 이용된다.
MCP 인스트럭션은 도 6에 도시된 다이렉트 메모리 액세스 회로(DMAC)가 다이렉트 메모리 액세스 세션(a direct memory-access session)을 수행하도록 한다. 다이렉트 액세스 세션에서, 다이렉스 액세스 회로(DMAC)는 자율적으로 메모리에 포함된 인스트럭션 워드의 블록을 전송하여 도 4에 도시된 비디오 출력 유닛(HDVO)내의 다양한 데이터 조작 요소의 레지스터를 제어한다. MCP 인스트럭션은 개시 어드레스 및 다이렉트 메모리 액세스 세션의 모드(a mode for direct memory-access session)를 정의한다. 3가지 상이한 다이렉트 메모리 액세스 모드가 존재한다.
제 1 다이렉트 메모리 액세스 모드에서, 다이렉트 메모리 액세스 회로(DMAC)는 인스트럭션 워드를 연속하는 어드레스를 가지는 소정의 범위의 제어 레지스터에기록한다. 블록의 제 1 인스트럭션 워드는 그 어드레스가 개시 어드레스인 제어 레지스터에 기록되며, 제 2 인스트럭션 워드는 그 어드레스가 개시 어드레스에 1만큼 가산한 어드레스를 가지는 제어 레지스터에 기록되며, 이하 동일한 방식을 따른다.
제 2 다이렉트 메모리 액세스 모드에서, 다이렉트 메모리 액세스 회로(DMAC)는 먼저 템플릿(a template)을 판독한다. 템플릿은 각각의 비트가 연속하는 어드레스를 가지는 소정의 범위의 제어 레지스터내의 상이한 제어 레지스터에 해당하는 2진 워드이다. 상기 범위는 개시 어드레스에서 시작한다. 결과적으로, 다이렉트 메모리 액세스 회로(DMAC)는 비트 단위로 템플릿을 판독하며, 블록의 제 1 인스트럭션 워드를 1의 값을 가지는 제 1 판독 비트에 해당하는 제어 레지스터에 기록하며, 제 2 인스트럭션 워드를 1의 값을 가지는 제 2 판독 비트에 해당하는 제어 레지스터에 기록하며, 이하 동일한 방식을 따른다.
제 3 다이렉트 메모리 액세스 모드에서, 다이렉트 메모리 액세스 회로(DMAC)는 인스트럭션 워드를 제어 레지스터에 기록하기 전에 먼저 오프셋 값(an offset value)을 판독한다. 인스트럭션 워드는 그 어드레스가 이전에 기록된 제어 레지스터의 어드레스에 오프셋 값을 가산한 어드레스인 제어 레지스터에 기록된다. 블록의 제 1 인스트럭션 워드는 그 어드레스가 개시 어드레스에 제 1 판독 오프셋 값을 가산한 어드레스인 제어 레지스터에 기록된다.
마스터 제어 프로세서(MCP)는 다이렉트 메모리 액세스 회로를 바람직하게 이용하여 선행하는 VLIW와 상당히 상이한 VLIW를 구성하며, 선행하는 VLIW가 없는 경우에도 VLIW를 구성한다. 예를 들면, 다이렉트 메모리 액세스 세션은 비디오 출력유닛(HDVO)를 초기화하는 데에 이용될 수 있다. 다이렉트 메모리 액세스 세션은 마스터 제어 프로세서(MCP) 자체가 상대적으로 많은 인스트럭션 워드를 제어 레지스터에 기록하여야 하는 것은 방지한다. 말하자면, 마스터 제어 프로세서(MCP)는 이러한 업무를 다이렉트 메모리 액세스 회로(DMAC)에 위임한다. 그런 다음, 다이렉트 메모리 액세스 회로(DMAC)는 제어 버스(CBUS)를 이용하여 인스트럭션 워드를 제어 레지스터에 기록할 것이다. 따라서, 다이렉트 메모미 액세스 세션동안에, 마스터 제어 프로세서(MCP)내의 다른 요소는 제어 버스(CBUS)에 액세스할 수 없다.
마스터 제어 프로세서(MCP)는 선행하는 VLIW와 유사한 VLIW를 구성하는 데에 다이렉트 메모리 액세스 회로(DMAC)를 이용할 필요가 없다. 이러한 유사 VLIW는 상대적으로 적은 제어 레지스터의 컨텐츠를 변형함으로써 구성될 수 있다. 그런 다음, 마스터 제어 프로세서(MCP)는 새로운 인스트럭션 워드를 적절한 제어 레지스터에 직접적으로 기록할 수 있다.
따라서, 프로그래밍의 관점에서 볼 때에, VLIW를 구성하는 데에는 2가지 기술이 존재한다. 제 1 기술은 하나이상의 MCP 인스트럭션을 이용하여 마스터 제어 프로세서(MCP)가 새로운 인스트럭션을 특정 제어 레지스터에 기록하도록 하는 것이다. 이러한 기술은 바람직하게 유사 VLIW를 구성하는 데에 이용된다. 제 2 기술은 MCP 인스트럭션을 이용하여 마스터 제어 프로세서(MCP)가 다이렉트 메모리 액세스 세션을 초기화하도록 하는 것이다. 이러한 기술은 바람직하게 선행하는 VLIW와 상당히 상이한 VLIW를 구성하거나 비디오 출력 유닛(HDVO)을 초기화하는 데에 이용된다.
도 6에 도시된 마스터 제어 프로세서(MCP)는 다양한 방식으로 실시될 수 있다. 마스터 제어 프로세서(MCP)는 통상적으로 인스트럭션 디코더(an instruction decoder)를 포함할 것이다. 마스터 제어 프로세서는 다양한 데이터 경로에 위치하여 입력 데이터를 산술 논리 유닛(ALU)에 입력하며 출력 데이터를 산술 논리 유닛(ALU)으로부터, 예를 들면 스택의 최상부와 같은 저장 요소로 전송하는 멀티플렉서를 더 포함할 것이다. 예를 들면, 산술 논리 유닛(ALU)의 각각의 입력 및 출력에 멀티플렉서가 존재할 수 있다. 스택의 최상부, 스택의 제 2 위치 및 각각의 다수의 레지스터와 같은 다양한 가능한 입력 데이터 소스가 산술 논리 유닛(ALU)의 입력에서 멀티플렉서에 결합된다. 멀티플렉서는 인스트럭션 디코더에 의해서 제어되어 소스중 하나가 인스트럭션의 타입 및 인스트럭션에 포함된 데이터에 따라 산술 논리 유닛의 입력에 결합된다. 따라서, 이러한 멀티플렉서를 제어하는 신호는 산술 논리 유닛(ALU)에 이용되는 인스트럭션에 근거하여 생성된다. 전술한 신호는, 예를 들면 인스트럭션의 연산 코드 비트 b3 내지 b0 및 비트 b12를 선택 신호로서 수신하며, 비트 b11 내지 b0를 선택될 신호중 하나로서 수신하는 부가하는 멀티플렉서에 의해서 생성될 수 있다. 선택될 다른 신호는 비트 b11 내지 b0를 인덱싱(indexing)함으로써 형성될 수 있다.
도면과 그 설명은 본 발명을 한정하는 것이 아니라 예시적인 것이다. 첨부된 청구의 범위의 사상내에 놓이는 다양한 대안이 존재할 수 있음이 자명할 것이다. 이런 견지에서 다음의 맺음말이 작성되었다.
도 1에 도시된 인스트럭션-워드 구성 소프트웨어(IWCS)는, 예를 들면 메모리내에 포함될 수 있다. 이것은 팩토리(a factory)내의 메모리에 기록될 수 있다. 그러나, 이용자가 인스트럭션-워드 구성 소프트웨어(IWSC)를 정보 캐리어(an information carrier)로부터 메모리에 복사하는 것은 가능하다. 따라서, 이용자는 도 1에 도시된 데이터 처리 장치(DPA)가 특정 기능을 수행하도록 한다. 소프트웨어(IWSC)를 구성하는 인스트럭션-워드를 포함하는 정보 캐리어는, 예를 들면 디스크(a disk)일 수 있다. 또한, 소프트웨어를 구성하는 인스트럭션-워드는, 예를 들면 인터넷과 같은 통신 네트워크를 통하여 이용가능하게 될 수 있다.
다양한 유닛에 대해서 기능 혹은 기능적 요소를 물리적으로 분산시키는 다양한 방법이 존재한다. 이런 견지에서, 도면은 단순히 도식적인 것이고, 그 각각은 단지 본 발명의 가능한 실시예를 나타내고 있다. 따라서, 도면이 상이한 기능 요소를 도시하고 있지만, 이것은 하나의 물리적 유닛으로 몇몇 기능 요소 또는 모든 기능 요소를 배제하기 위함이 아니다.
청구항의 참조 부호는 청구항을 제한하는 것으로 구성되어서는 안될 것이다.

Claims (5)

  1. 제 1 및 제 2 입력 데이터(OP1,OP2)에 대하여 산술 또는 논리 연산을 수행하는 산술 논리 유닛(ALU)과, 데이터를 저장하며 스택내의 특정 위치(P(1))를 가지는 데이터를 상기 산술 논리 유닛(ALU)에 제 1 입력(OP1)으로서 입력하는 스택(STCK)을 포함하는 데이터 프로세서에 있어서,
    상기 데이터 프로세서는 다수의 메모리 위치(REG)중 소정의 메모리 위치(REG(i))를 지시하는 어드레스(ADDR)를 포함하는 인스트럭션(INSTR)을 실행하며, 상기 어드레스(ADDR)는 상기 메모리 위치(REG(i))에 포함된 데이터가 상기 산술 논리 유닛(ALU)에 제 2 입력 데이터(OP2)로서 입력되도록 하는 데이터 프로세서.

  2. 제 1 항에 있어서,
    다양한 스택 위치(P)는 상기 인스트럭션(INSTR)내의 어드레스(ADDR)에 의해서 지시될 수 있는 상기 다수의 메모리 위치중 일부를 형성하는 데이터 프로세서.

  3. 제 1 및 제 2 입력 데이터(OP1,OP2)에 대하여 산술 또는 논리 연산을 수행하는 산술 논리 유닛(ALU)과,
    데이터를 저장하며 스택내의 특정 위치(P)를 가지는 데이터를 산술 논리 유닛(ALU)에 제 1 입력 데이터(OP1)로서 입력하는 스택(STCK)을 포함하는
    데이터 프로세서에 의해서 데이터를 처리하는 방법에 있어서,
    다수의 메모리 위치(REG)중 소정의 메모리 위치(REG(i))를 지시하는 어드레스(ADDR)를 포함하는 인스트럭션(INSTR)을 실행하고, 상기 어드레스(ADDR)는 상기 메모리 위치(REG(i))에 포함된 데이터가 상기 산술 논리 유닛(ALU)에 제 2 입력 데이터(OP2)로서 입력되도록 하는 데이터 처리 방법.

  4. 제 1 및 제 2 입력 데이터(OP1,OP2)에 대하여 산술 또는 논리 연산을 수행하는 산술 논리 유닛(ALU)과,
    데이터를 저장하며 스택내의 소정의 위치(P)를 가지는 데이터를 상기 산술 논리 유닛(ALU)에 제 1 입력 데이터(OP1)로서 입력하는 스택(STCK)
    을 포함하는 데이터 프로세서를 위한 컴퓨터 프로그램 제품에 있어서,
    다수의 메모리 위치(REG)중 소정의 메모리 위치(REG(i))를 지시하는 어드레스(ADDR)를 포함하는 인스트럭션(INSTR)을 포함하되, 상기 인스트럭션(INSTR)은 실행되었을 때에 상기 데이터 프로세서가 상기 메모리 위치(REG)에 포함된 데이터가 상기 산술 논리 유닛(ALU)에 제 2 입력 데이터(OP2)로서 입력되도록 하는
    컴퓨터 프로그램 제품.

  5. 제 1 및 제 2 입력 데이터(OP1,OP2)에 대하여 산술 또는 논리 연산을 수행하는 산술 논리 유닛(ALU)과,
    데이터를 저장하며 스택내의 특정 위치(P(1))를 가지는 데이터를 상기 산술 논리 유닛(ALU)에 제 1 입력(OP1)으로서 입력하는 스택(STCK)을 포함하며, 제어 데이터를 다양한 기능 유닛에 제공하는 제어기를 포함하는 멀티미디어 장치에 있어서,
    상기 제어기는 다수의 메모리 위치(REG)중 소정의 메모리 위치(REG(i))를 지시하는 어드레스(ADDR)를 포함하는 인스트럭션(INSTR)을 실행하도록 위치하며, 상기 어드레스(ADDR)는 상기 메모리 위치(REG(i))에 포함된 데이터가 상기 산술 논리 유닛(ALU)에 제 2 입력 데이터(OP2)로서 입력되도록 하는 멀티미디어 장치.
KR1020017001914A 1999-06-15 2000-06-13 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치 KR20010072490A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US09/333,633 US6405301B1 (en) 1999-06-15 1999-06-15 Parallel data processing
US09/333,633 1999-06-15
US09/584,812 US6564312B1 (en) 1999-06-15 2000-05-31 Data processor comprising an arithmetic logic unit
US09/584,812 2000-05-31
PCT/EP2000/005461 WO2000077622A1 (en) 1999-06-15 2000-06-13 Data processor comprising a register stack

Publications (1)

Publication Number Publication Date
KR20010072490A true KR20010072490A (ko) 2001-07-31

Family

ID=26988828

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017001914A KR20010072490A (ko) 1999-06-15 2000-06-13 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치

Country Status (7)

Country Link
US (1) US6564312B1 (ko)
EP (1) EP1104558A1 (ko)
JP (1) JP2003502753A (ko)
KR (1) KR20010072490A (ko)
CN (1) CN1151432C (ko)
TW (1) TW476887B (ko)
WO (1) WO2000077622A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100602374B1 (ko) * 2000-08-31 2006-07-14 어보브반도체 주식회사 스택 구조를 사용하여 코드 집적도를 높인 리스크 프로세서
KR100974751B1 (ko) * 2005-11-10 2010-08-06 콸콤 인코포레이티드 섀도우 레지스터들을 사용하여 스택 레지스터 파일을 확장하는 방법 및 장치

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7975127B2 (en) * 2000-08-31 2011-07-05 Hajime Seki Computer system for processing instructions each containing a group of operations to be executed out of order
JP2005327078A (ja) * 2004-05-14 2005-11-24 Matsushita Electric Ind Co Ltd レジスタ設定方法及びレジスタ設定装置
US20060265555A1 (en) * 2005-05-19 2006-11-23 International Business Machines Corporation Methods and apparatus for sharing processor resources

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522051A (en) 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
EP0938703B1 (en) 1996-11-13 2003-07-02 Paran, Arik Real time program language accelerator
EP0851343B1 (en) * 1996-12-31 2005-08-31 Metaflow Technologies, Inc. System for processing floating point operations
US5859998A (en) 1997-03-19 1999-01-12 Advanced Micro Devices, Inc. Hierarchical microcode implementation of floating point instructions for a microprocessor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100602374B1 (ko) * 2000-08-31 2006-07-14 어보브반도체 주식회사 스택 구조를 사용하여 코드 집적도를 높인 리스크 프로세서
KR100974751B1 (ko) * 2005-11-10 2010-08-06 콸콤 인코포레이티드 섀도우 레지스터들을 사용하여 스택 레지스터 파일을 확장하는 방법 및 장치

Also Published As

Publication number Publication date
CN1151432C (zh) 2004-05-26
JP2003502753A (ja) 2003-01-21
CN1320235A (zh) 2001-10-31
US6564312B1 (en) 2003-05-13
TW476887B (en) 2002-02-21
EP1104558A1 (en) 2001-06-06
WO2000077622A1 (en) 2000-12-21

Similar Documents

Publication Publication Date Title
US6816961B2 (en) Processing architecture having field swapping capability
JP3592230B2 (ja) データ処理装置
US20040193837A1 (en) CPU datapaths and local memory that executes either vector or superscalar instructions
JP2014505916A (ja) Simdレジスタファイルから汎用レジスタファイルへデータを移動させるための方法及び装置
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
KR100227277B1 (ko) 컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
KR100765567B1 (ko) 산술 논리 유닛 및 스택을 가지는 데이터 프로세서, 멀티미디어 장치 및 컴퓨터 판독가능 기록 매체
US7788472B2 (en) Instruction encoding within a data processing apparatus having multiple instruction sets
JP2001134436A (ja) 効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法
US5307300A (en) High speed processing unit
JP2001504959A (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
US7558816B2 (en) Methods and apparatus for performing pixel average operations
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
JP2690406B2 (ja) プロセッサおよびデータ処理システム
EP1088266B1 (en) Parallel data processing
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
US20030009652A1 (en) Data processing system and control method
EP1220092A2 (en) System and method for executing variable latency load operations in a data processor
JPS62156742A (ja) デ−タ書込み制御方式
EP0305752A2 (en) Programmable data path width in a programmable unit having plural levels of subinstruction sets
US7249239B1 (en) Using run-time generated instructions in processors supporting wider immediate addressing than register addressing
JP2622026B2 (ja) 中央処理装置におけるレジスタ書込制御方式
JPH0658629B2 (ja) データ処理装置
JPH03229324A (ja) 情報処理装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid