KR19980018067A - 비대칭 멀티프로세서 아키텍쳐의 인터럽트 및 예외사상을 핸들링하기 위한 시스템 및 방법 - Google Patents

비대칭 멀티프로세서 아키텍쳐의 인터럽트 및 예외사상을 핸들링하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR19980018067A
KR19980018067A KR1019970012760A KR19970012760A KR19980018067A KR 19980018067 A KR19980018067 A KR 19980018067A KR 1019970012760 A KR1019970012760 A KR 1019970012760A KR 19970012760 A KR19970012760 A KR 19970012760A KR 19980018067 A KR19980018067 A KR 19980018067A
Authority
KR
South Korea
Prior art keywords
processor
control
exception
data
interrupt
Prior art date
Application number
KR1019970012760A
Other languages
English (en)
Other versions
KR100257520B1 (ko
Inventor
피터 송 성윤
에이. 모하메드 모아타즈
누옌 르
박 헌철
Original Assignee
윤종용
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윤종용, 삼성전자 주식회사 filed Critical 윤종용
Publication of KR19980018067A publication Critical patent/KR19980018067A/ko
Application granted granted Critical
Publication of KR100257520B1 publication Critical patent/KR100257520B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Multi Processors (AREA)

Abstract

멀티미디어 컴퓨터 시스템은 비대칭 프로세서라 불리우는, 상호 이화 제어 및 데이터 핸들링특성을 갖는 복수개의 프로세서들을 구비한다. 각각의 프로세서들이 다른 프로세서들과는 상호 독립적으로 동작하는 명령세트들을 갖지만, 비대칭 프로세서들은 단일 운영체계에 의해 제어된다. 멀티프로세서 컴퓨터 시스템은, 데이터 또는 벡터 프로세서라 불리우며, 커다란 머신 스테이트와 커다란 데이터 폭을 갖는 프로세서가 예외를 검출하고 제어 프로세서라 불리우며 작은 머신 스테이트와 데이터 폭을 갖는 다른 프로세서에 대한 인터럽트 및 예외핸들링 동작을 지연시키는, 인터럽트 및 예외 핸들링의 멀티프로세서 구조적 정의를 사용한다. 제어 프로세서의 작은 머신 스테이트 및 작은 데이터 폭은, 제어 프로그램이 전형적으로 개별적인 플래그와 포인터의 모니터링과 제어에 관련되기 때문에 운영체계 프로그램을 실행하는 데 아주 적합하다. 데이터 프로세서는 리세트시 그리고 예외가 검출되어 시스템 디자인과 프로그래밍을 이용하고 시스템 리세트시 프로세서의 동기화를 단순화할 때 아이들상태로 들어간다. 멀티프로세서 컴퓨터 시스템은 데이터 프로세스내의 제어 및 스태터스 레지스터들을 기입 및 독출하는 제어 프로세서를 구비한다. 제어 프로세서는 즉, 운영체계 또는 응용 프로그램의 실행동안 데이터 프로세서의 동작을 제어한다. 제어 프로세서는 데이터 프로세서의 실행과는 별로로 데이터 프로세서의 제어 및 스테터스 레지스터를 억세스하여 동일 제어 및 스태터스 레지스터들은 병렬로 제어 프로세서 및 데이터 프로세서에 의해 억세스될 수 있다.

Description

비대칭 멀티프로세서 아키텍쳐의 인터럽트 및 예외사상을 핸들링하기 위한 시스템 및 방법
본 발명은 이화(異化)제어 및 데이터 핸들링 특성을 갖는 비대칭 프로세서를 구비한 멀티프로세서 시스템에 관한 것이다. 보다 구체적으로는 본 발명은 비대칭 멀티프로세서 시스템의 인터럽트 및 예외를 핸들링하기 위한 시스템 및 방법에 관한 것이다.
범용 프로세서는 전형적으로 인터럽트 및 예외를 핸들링하기 위한 회로 및 구조를 포함한다. 인터럽트는 프로세서가 현재 명령스레드(thread)의 실행을 중지하고 인터럽트 핸들러에 의해 지정되고 활성화되는 인터럽트 서비스 명령 스레드의 실행을 개시하는 사상이다. 인터럽트 서비스 명령 스레드가 완전히 실행될 때, 현재명령 스레드는 계속하여 실행한다. 인터럽트는 인터럽트 요인이 현재 명령 스레드의 실행명령과 직접적으로 관계하지 않는다는 점에서 외부사상이다. 인터럽트들은 대표적으로 프로세서의 스테이트 또는 문맥을 저장하고, 서비스 루틴을 실행하며, 그리고 프로세서의 스테이트나 문맥을 복원하고 인터럽트된 실행 스레드를 개시함으로써 핸들링된다.
예외는 프로세서의 현재 상태와 일치하지 않는 명령의 실행 또는 프로세서에 의해 명령을 실행하려는 시도중 하나에 의해 발생되는 사상이다. 예외조건을 발생시키는 사상의 일예는 프로세서에 의해 불법 또는 규정되지 않은 명령을 실행하려는 시도, 명령 어드레스 또는 데이터 어드레스가 정렬되지 않을 때 명령을 실행하려는 시도, 보호 에러, 세트 브레이크 포인트, 제로(0)에 의한 나눗셈 및 수치명령의 실행동안 오우버 플로우 조건을 포함한다.
프로세서는 예외 핸들러 명령 스레드를 실행하여 예외조건에 응답한다. 예외들은 통상적으로 예외조건을 일으킨 특별한 형태의 조건에 의존하는 선택된 세트의 명령을 실행함으로써 핸들링된다.
인터럽트와 예외 핸들링에 기인한 제어동작은 범용 프로세서에 의해 빠르고 용이하게 수행되고 실제적으로 커다란 문맥 벡터 프로세서에 대해 매우 어렵기 때문에, 멀티프로세서 아키텍쳐 시스템에 사용된 인터럽트 및 예외 핸들링 메카니즘은 일반적으로 이화제어 및 데이터 핸들링 특성을 갖는 프로세서를 구비한 비대칭 멀티프로세서 시스템에 사용에는 적합하지 못하다. 예외 및 인터럽트들을 사용하여 처리되는 멀티프로세서의 동작은 현재 처리되는 데이터 및 레지스터들의 저장을 포함하는 프로세서들의 스테이트를 흔히 구비한다. 많은 레지스터들은 구비한 프로세서는 멀티플 프로세서 문맥전환과 같은 동작동안 프로세서 스테이트를 용이하게 저장하고 재로드할 수 없다.
필요한 것은 커다란 머신 스테이트 또는 문맥을 구비한 비대칭프로세서용 예외 및 인터럽트 핸들링을 이용하는 멀티프로세서 아키텍쳐이다.
도 1 은 본 발명의 실시예에 따른 멀티미디어 멀티프로세서 시스템을 설명하기 위한 고레벨의 개략적인 블럭도.
도 2 는 도 1 의 멀티미디어 멀티프로세서 시스템에 포함된 멀티미디어 신호 프로세서를 나타내는 개략적인 블럭도.
도 3 은 멀티미디어 멀티프로세서 시스템의 제어 프로세서를 설명하기 위한 개략적인 블럭도.
도 4 는 제어 프로세서의 기능도.
도 5 는 도 2 의 멀티미디어 신호 프로세서의 벡터 프로세서를 나타내는 개략적인 블럭도.
도 6 은 도 5 의 벡터 프로세서의 벡터 프로세서 실행 데이터 패스를 나타내는 개략적인 블럭도.
도 7 은 도 2 의 멀티미디어 신호 프로세서의 코프로세서 인터페이스를 나타내는 개략적인 블럭도.
도 8 은 멀티미디어 신호 프로세서의 펌웨어 아키텍쳐를 설명하기 위한 개략적인 블럭도.
도 9 는 멀티미디어 멀티프로세서 시스템의 인터럽트 및 예외 핸들링에 관한 동작을 설명하기 위한 플로우챠트.
* 도면의 주요 부분에 대한 부호의 설명 *
100 : 멀티미디어 멀티프로세서 시스템102 : 호스트 컴퓨터
104 : 멀티미디어 신호 프로세서106 : 시스템 버스(PCI 버스)
108 : 통신 CODEC110 : 비디오 A/D 변환기
112 : 비디오 D/A 변환기 114 : 프레임 버퍼 SDRAM 버퍼
202 : DSP 코어 204 : RISC 제어 프로세서
204 : RISC 제어프로세서206 : 벡터 프로세서
208 : 캐쉬 서브 시스템210 : 고속버스(FBUS)
212 : IO 버스 304 : 기입 데이터 레지스터
306 :독출 데이터 레지스터 312 : 레지스터 뱅크
멀티미디어 컴퓨터 시스템은 비대칭 프로세서라 불리우는, 상호 이화 제어 및 데이터 핸들링특성을 갖는 복수개의 프로세서들을 구비한다. 각각의 프로세서들이 다른 프로세서들과는 상호 독립적으로 동작하는 명령세트들을 갖지만, 비대칭 프로세서들은 단일 운영체계에 의해 제어된다. 멀티프로세서 컴퓨터 시스템은, 데이터 또는 벡터 프로세서라 불리우며, 커다란 머신 스테이트와 커다란 데이터 폭을 갖는 프로세서가 예외를 검출하고 제어 프로세서라 불리우며 작은 머신 스테이트와 데이터 폭을 갖는 다른 프로세서에 대한 인터럽트 및 예외핸들링 동작을 지연시키는, 인터럽트 및 예외 핸들링의 멀티프로세서 구조적 정의를 사용한다. 제어 프로세서의 작은 머신 스테이트 및 작은 데이터 폭은, 제어 프로그램이 전형적으로 개별적인 플래그와 포인터의 모니터링과 제어에 관련되기 때문에 운영체계 프로그램을 실행하는 데 아주 적합하다. 대조적으로, 데이터 또는 벡터 프로세서의 커다란 머신 스테이트와 커다란 데이터폭은 비효율적으로 제어 태스크를 처리하여 제어 프로세서의 인터럽트 및 핸들링의 복종이 매우 편리하다.
본 발명의 다른 특징에 따르면, 멀티프로세서 컴퓨터 시스템은 리세트시 그리고 예외가 검출될 때 아이들상태로 들어가는 데이터 프로세서를 구비한다. 데이터 프로세서는 아이들상태로 들어가 시스템 디자인과 프로그래밍을 이용하고, 시스템 리세트시 프로세서의 동기화를 단순화한다.
본 발명의 실시예에 따르면, 멀티프로세서 컴퓨터 시스템은 데이터 프로세스내의 제어 및 스태터스 레지스터들을 기입 및 독출하는 제어 프로세서를 구비한다. 제어 프로세서는 즉, 운영체계 또는 응용 프로그램의 실행동안 데이터 프로세서의 동작을 제어한다. 제어 프로세서는 데이터 프로세서의 실행과는 별로로 데이터 프로세서의 제어 및 스테터스 레지스터를 억세스하여 동일 제어 및 스태터스 레지스터들은 병렬로 제어 프로세서 및 데이터 프로세서에 의해 억세스될 수 있다.
본 발명의 다른 실시예에 따르면, 멀티프로세서 컴퓨터 시스템은 데이터 프로세서가 아이들상태에 있을 때만 제어 및 스태터스 레지스터를 구비한 제어 프로세서가 데이터 프로세서의 초기상태를 엑세스하도록 제한되는 구조적 정의를 구비한다. 이러한 제한은 실제적으로 제어프로세서와 데이터 프로세서간의 프로그래밍 상호동작을 단순화하고 데이타 프로세서가 불일치상태 또는 무효상태로 들어가는 것을 보호한다.
많은 이점이 설명된 비대칭 멀티프로세서 아키텍쳐 및 동작방법에 의해 얻어진다. 그하나는 프로그래밍 모델과 데이터 프로세서 수행이 동일한 멀티플 프로세서를 사용하는 비대칭 아키텍쳐에 비해 실제적으로 단순화된다는 것이다.
이하, 첨부한 도면을 참조로 하여 본 발명의 바람직한 실시예를 상술하며, 도면 전체를 통하여 동일한 부분에는 동일한 도면부호를 사용하기로 한다.
도 1 을 참조하면, 고수준의 개략적 블록도는 호스트 프로세서(102)와 멀티미디어 신호 프로세서(104)를 구비한 멀티미디어 멀티프로세서 시스템(100)을 도시한 것이다. 대표적인 호스트 프로세서(102)는 펜티엄TM 또는 펜티엄 프로TM 프로세서와 같은 x86 프로세서이다. 호스트 컴퓨터(102)는 시스템 메모리(116)에 유지된 명령과 데이터에 근거한 프로그램을 실행한다. 호스트 프로세서(102)는 PCI 버스와 같은 시스템 버스(106)을 통해 멀티미디어 신호 프로세서(104)와 통신한다. 멀티미디어 신호 프로세서(104)는 오디오 및 통신 코덱(CODEC)(108), 비디오 A/D 변환기(110), 비디오 D/A 변환기(112)와 프레임 버퍼 SDRAM 메모리(114)와 같은 다양한 기능블럭과 인터페이스한다.
도 2 를 참조하면, 개략적 블록도는 멀티미디어 멀티프로세서 시스템(100)내의 멀티미디어 신호 프로세서(104)를 나타낸 것이다. 멀티미디어 신호 프로세서(104)는 복수개의 멀티미디어 인터페이스에 연결된 디지탈신호 처리기(DSP) 코어(202)를 구비한다.
DSP 코어(202)는 멀티미디어 신호 프로세서(104)의 계산 엔진으로, RISC 제어 프로세서(204), 벡터 프로세서(206), 캐쉬 서브시스템(208), 고속버스(FBUS) (210) 및 I/O 버스(212)를 구비한다. 제어프로세서(204)는 영국 ARM 회사에서 설계하고 제작한 32-bit ARMTM 제어 프로세서로서, 실시간 운영체계 동작, 인터럽트 및 예외핸들링, 입/출력 소자관리, 호스트 컴퓨터와의 통신등과 같은 일반적인 처리기능을 수행한다. 일실시예에서, 제어 프로세서(204)는 40MHz 로 동작한다. 제어 프로세서(204)는 코프로세서 인터페이스(242)를 통해 벡터 프로세서(206)와 인터페이스한다.
제어 프로세서(204)는 명령 처리동안 발생하는 일반적인 비정상 조건들, 즉 예외에 응답하여 예외 핸들링을 실행하여 실행제어 플로우를 변경시킨다. 제어 프로세서(204)는, 리세트 조건, 중단(데이타) 조건, FIQ, IRQ, 중단(프리페치)조건, 및 불명료한 명령 트랩 또는 소프트웨어 인터럽트를 포함하는 고차 우선순위부터 저차 우선순위까지 순서대로 나열된, 6가지의 예외에 응답한다.
도 3 을 참조하면, 개략적인 블록도는 명령 디코더 및 제어로직(302)에 의해 제어되는 ARM7 제어 프로세서(204)을 도시한 것이다. 제어 프로세서(204)는 기입 데이터 레지스터(304) 그리고 명령 파이프라인 및 독출 데이터 레지스터(306)을 통해 캐쉬 서브시스템(208)과 통신한다. 제어 프로세서(204)는 31x32-비트 레지스터 뱅크(312)의 데이터를 어드레싱하기 위한 어드레스 레지스터(308)과 어드레스 증분기(incrementer) (310)를 구비한다. 제어 프로세서(204)는 32-비트 ALU(314), 배럴 시프터(316) 및 부스 곱셈기(Booth's multiplier) (318)를 구비한다. 코프로세서 인터페이스(242)를 통해 제어 프로세서(204)와 벡터 프로세서(206)사이의 연산코드와 명령인수(argument)들을 전달하는 nOPC, nCPI, CPA 및 CPB 신호라인들을 경유하여 코프로세서 인터페이스(242)는 명령 디코더 및 제어로직(302)에 직접 연결된다.
도 4 는 제어프로세서(204)의 기능도를 도시한 것이다. 벡터 프로세서(206)는 멀티미디어 신호 프로세서(104)의 디지탈 신호처리엔진이다. 벡터 프로세서(206)는 단일 명령-멀티플 데이터 아키텍쳐를 갖으며, 이산 코사인변환(DCT, Discrete Cosine Transforms), FIR 필터링, 컨벌루션, 동화(動畵)추정 및 다른 처리 동작과 같은 신호처리기능을 병렬로 실행하기 위하여 멀티플 데이터요소들상에서 동작하는 파이프라인의 RISC 엔진을 구비한다. 벡터 프로세서(206)는 벡터처리와 마찬가지로, 복수개의 벡터실행유닛에 의해 멀티플 데이터요소들이 병렬로 동작되는 벡터연산을 지원한다. 벡터 프로세서(206)는 스칼라 연산 그리고 결합된 벡터-스칼라 연산 모두를 실행한다. 벡터 프로세서(206)의 멀티플 데이터요소들은, 1싸이클당(예를 들면, 12.5ns) 32 8/9-비트 고정 소수점 산술연산속도, 16 16-비트 고정 소수점 산술연산속도, 8 32-비트 고정 소수점 또는 부동 소수점 산술연산속도로 계산되는 576-비트 벡터로 팩(pack)되어진다. 대부분의 32-비트 스칼라 연산은 1싸이클당 1명령속도로 파이프라인되고, 반면 대부분의 576-비트 벡터 연산은 2싸이클내에서 1명령속도로 파이프라인된다. 로드 및 저장동작은 산술동작과 병행되고 별도의 로드 및 저장회로들에 의해 독립적으로 실행된다.
도 5 를 참조하면, 벡터 프로세서(206)는 명령 페치(fetch) 유닛(502), 명령 디코더 및 발행자(issuer) (504), 명령실행 데이터패스(506) 그리고 로드 및 저장유닛(508)의 4개의 기능블럭을 갖는다. 명령페치유닛(502)과 명령 디코더 및 발행자(504)는 벡터 프로세서(206)내에 포함되어, 벡터 프로세서(206)를 제어 프로세서(204)와 독립적으로 동작시킨다.
명령페치유닛(502)은 명령을 프리페치하여 서브루틴 명령으로의 브랜치(Branch) 및 점프(Jump)와 같은 제어 플로우명령을 처리한다. 명령페치유닛(502)은 현재 실행 스트림용 프리페치된 명령의 16-엔트리 큐(QUEUE)와 브랜치 타겟 스트림용 프리페치된 명령의 8-엔트리 큐를 포함한다. 명령페치유닛(502)은 1싸이클내에서 명령 캐쉬로부터 8개의 명령까지 받는다. 명령 디코더 및 발행자(504)는 벡터 프로세서(206)에 의해 실행된 모든 명령을 디코딩하여 스케줄링한다(schedule). 디코더는 명령페치유닛(502)으로부터 접수 순서대로 1싸이클내에서 1명령을 처리하는 반면, 발행자는 실행 자원(resource) 및 피연산자 데이터 사용가능도(availability) 모두에 관계하는 무질서한 대부분의 명령을 스케줄링한다.
도 6 을 참조하면, 명령실행 데이터 패스(506)은 4단자 레지스터 파일(602), 8개의 32x32 병렬 곱셈기(604)와 8개의 36-비트 ALU(606)을 구비한다. 레지스터 파일(602)은 싸이클당 2번의 독출동작 및 2번의 기입동작을 지원한다. 병렬곱셈기(604)는 싸이클당 정수 또는 부동 소수점 포맷으로 8개의 32-비트 곱셈, 16개의 16-비트 곱셈 또는 32개의 8-비트 곱셈을 한다. ALU(606)는 싸이클당(예를 들면, 12.5ns) 정수 또는 부동 소수점 포맷으로 8개의 36-비트 ALU 연산, 16개의 16-비트 ALU 연산 또는 32개의 8-비트 ALU 연산까지 실행한다.
레지스터 파일(602)는 복수개의 전용 레지스터와 복수개의 리턴 어드레스 레지스터를 구비한다. 전용 레지스터는 벡터 제어 및 스태터스 레지스터(VCSR), 벡터 프로그램 카운터(VPC), 벡터 예외 프로그램 카운터(VEPC), 벡터 인터럽트 소오스 레지스터(VISRC), 벡터 및 제어 프로세서 동기 레지스터(VASYNC) 그리고 다양한 카운트, 마스크, 오버 플로우 및 브레이크 포인트 레지스터와 같은 다른 레지스터들을 구비한다. 벡터 프로그램 카운터(VPC)는 벡터 프로세서(206)에 의해 실행될 다음 명령의 어드레스이다.
벡터 인터럽트 소오스 레지스터(VISRC)는 제어 프로세스(204)에 대한 인터럽트 소오스이다. VISRC 의 적절한 비트는 예외검출시 하드웨어에 의해 설정된다. 비트들은 벡터프로세서(206)의 실행개시전에 소프트웨어에 의해 리세트된다. VISRC의 어느 한 비트는 벡터 프로세서(206)가 VP_IDLE 상태로 들어가도록 한다. 대응하는 인터럽트 인에이블 비트는 코프로세서 인터페이스(242)내의 VIMSK 레지스터에서 세트되지만, IRQ 인터럽트는 제어 프로세서(204)로 전송된다.
벡터 프로세서(206)는 명확한(precise) 예외 및 불명확한(imprecise) 예외를 포함한 예외조건들을 검출한다. 명확한 예외는 벡터 프로세서(206)에 의해 검출되어 폴팅(faulting) 명령이전에 보고된다. 명확한 예외는 명령 어드레스 브레이크 포인트 예외, 데이터 어드레스 브레이크 포인트 예외, 무효명령예외, 단일단계예외, 리턴 어드레스 스택 오버플로우 예외, VCINT 예외 그리고 VCJOIN 예외를 포함한다. 벡터 프로세서(206)의 불명확한 예외는 폴팅 명령에 대하여 프로그램 순서가 늦은 명령의 변수실행후 검출되고 보고된다. 불명확한 예외는 무효명령 어드레스 예외, 무효데이타 어드레스 예외, 정렬되지 않은 데이터 억세스예외, 정수 오버플로우 예외, 부동 소수점 오버플로우예외, 부동 소수점 무효 피연산자 예외, 제로에 의한 부동소수점 나눗셈 예외, 그리고 제로에 의한 정수 나눗셈 예외를 포함한다.
벡터 인터럽트명령 레지스터(VIINS)는 명령이 제어프로세서(204)를 인터럽트시키기 위하여 실행될 때 벡터 프로세서 VCINT 또는 VCJOIN 명령으로 업데이트된다.
벡터 프로세서(206)는 제어 프로세서(204)에 의해 실행되는 코프로세서 인터럽트(CPINT)명령과 멀티플 내포형(nested) 점프로부터 벡터 프로세서(206)내의 소프트웨어에 의해 실행된 서브루틴 명령으로 생기는 하드웨어 스택 오버플로우를 포함한 2개의 특수조건을 인식한다. 멀티미디어 신호 프로세서(104)에 의해 발생된 다른 인터럽트 및 예외조건들은 제어프로세서(204)에 의해 처리된다.
벡터 프로세서(206)는 벡터 프로세서(206)를 아이들(VP_IDLE)상태에 위치시키는 시스템 리세트시, 명령의 파워-업 시퀀스를 실행한다. 제어 프로세서(204)가 벡터 프로세서(206)내의 레지스터들을 초기화시키고 제어 프로세서 명령세트의 STARTVP 명령을 이용하여 벡터 프로세서(206)의 동작을 활성화시킬 때까지, 벡터 프로세서(206)는 VP_IDLE 상태에 머무른다.
도 2 를 참조하면, 제어프로세서(204)는 벡터 프로세서(206)의 동작을 초기화시킨다. 특별히, 제어 프로세서(204)는 제어 프로세서(204)의 명령세트에 대해 확장을 통해 벡터 프로세서(206)와의 상호작용을 제어한다. 명령세트확장은 STARTVP와 INTVP 명령과 같은 코프로세서 데이터연산, 코프로세서 데이터전송, TESTSET 명령그리고 벡터 프로세서(206)의 독출 및 기입 레지스터용 MFVP, MTVP, MFER 및 MTER 명령과 같은 코프로세서 레지스터 전송을 포함한다.
제어 프로세서(204)는 STARTVP 명령을 이용하여 벡터 프로세서(206)을 스타트시킨다. STARTVP 명령은 벡터프로세서(206)가 실행중임을 나타내는 VP_RUN 상태로 들어가도록 한다. STARTVP는 벡터 프로세서(206)가 이미 VP_RUN 상태에 있으면, 아무것도 하지 않는다. STARTVP 명령에 응답하여 제어 프로세서로 통신되는 결과는 없으며, 제어 프로세서(204)는 다음 STARTVP 의 실행을 계속한다. STARTVP 명령은 조건코드를 설정하는 코프로세서 데이터연산 포맷(CDP) 명령에 이어 호출된다. STARTVP 명령은 하기의 어셈블러 구문을 이용하여 호출된다:
CDP{cond} p7,0,c0,c0,c0
STARTVP{cond}
여기서, 조건들은 equal(eq), not equal(ne), carry set(cs), carry clear(cc), minus(mi), plus(pl), 그리고 다른 조건들을 포함한다. STARTVP는 조건이 참일 경우에만 실행된다. 제어 프로세서(204)는 STARTVP 명령을 사용하여 벡터 프로세서(206)로 실행 개시를 위한 요구신호를 전송하고, 벡터 인터럽트 소오스(VISRC) 레지스터의 벡터 프로세서 조인트 비트(VISRCvjp)와 벡터 프로세서 인터럽트 비트(VISRCvip)를 자동적으로 클리어시킨다. SRARTVP를 호출할 때, 제어 프로세서(204)는 벡터 프로세서(206)가 실행을 개시하는 것을 기다리지 않고 다음 명령을 계속하여 실행한다. 벡터 프로세서(206)의 상태는 STARTVP가 호출되기전 원하는 바와같이 초기화되어야 한다. 벡터 프로세서(206)가 이미 VP_RUN 상태에 있으면 STARTVP 명령은 아무런 영향을 미치지 못한다. 벡터 프로세서의 사용불가능 예외는 STARTVP 명령동안 발생되어질 것이다.
제어프로세서(204)는 인터럽트 벡터 프로세서(INTVP) 명령을 사용하여 벡터 프로세서(206)를 정지시킨다. INTVP 명령은 벡터 프로세서(206)가 실행되지 않음을 나타내는 VP_IDLE 상태로 벡터 프로세서(206)가 들어가도록 한다. INTVP는 벡터 프로세서가 실행되지 않으면 아무것도 하지 않는다. INTVP 명령에 응답하여 제어 프로세서로 통신되는 결과는 없으며 제어 프로세서(204)는 다음 INTVP를 계속 실행한다. INTVP 명령은 조건코드를 설정하는 코프로세서 데이터 연산포맷(CDP) 다음에 호출된다. INTVP 명령은 조건이 참(true)일 때만 실행된다. 즉, INTVP 명령은 하기의 어셈블러 구문를 사용하여 호출되어진다:
CDP{cond} p7,1,c0,c0,c0
INTVP{cond}
여기서, 조건들은 equal(eq), not equal(ne), carry set(cs), carry clear(cc), minus(mi), plus(pl) 그리고 다른 조건들을 포함한다. 제어 프로세서(204)는 INTVP 명령을 사용하여 벡터 프로세서(206)에 실행중지 요구신호를 전송한다. INTVP 명령을 호출할 때, 제어 프로세서(204)는 벡터 프로세서(206)의 중지를 기다리지 않고 다음 명령을 계속 실행한다. 확장된 레지스터(MFER) 명령으로부터 이동은 벡터 프로세서(206)가 중지되었는가를 결정하기 위하여 전형적으로 INTVP 명령 다음에 사용한다. INTVP 명령은 벡터 프로세서(206)가 이미 VP_IDLE 상태에 있다면 아무런 영향을 미치지 못한다. 벡터 프로세서의 사용불가능 예외는 INTVP 명령동안 발생되어질 것이다.
제어 프로세서(204)는 테스트 및 설정(TESTSET)명령을 사용하여, 동기용 테스트를 포함한 벡터 프로세서(206)의 동작상태를 테스트한다. TESTSET는 사용자-확장 레지스터를 독출하여 레지스터의 비트 30을 1 로 설정함으로써, 벡터 프로세서(206)와 제어프로세서(204)사이의 생산자/주문자형 동기를 제공한다. TESTSET 는 제어 프로세서(204)를 레지스터가 전송될 때까지 정지시킨다.
제어 프로세서(204)는 조건코드를 설정하는 코프로세서 레지스터 전송동작(MRC,MMCR) 명령에 이어 TESTSET 명령을 요구한다. TESTSET 명령은 조건이 참일 경우에만 실행된다. TESTSET 명령은 하기의 어셈블러 구문을 사용하여 호출되어진다.
MRC{cond} p7,0,Rd,c0,cER,0
TESTSET{cond} Rd,RNAME
여기서, 조건들은 equal(eq), not equal(ne), carry set(cs), carry clear(cc), minus(mi), plus(pl) 그리고 다른 조건들을 포함한다. Rd는 제어 프로세서(204)내의 레지스터이다. ER은 코프로세서 인터페이스(242)내의 확장된 레지스터이고, RNAME는 UER1 또는 VASYNC와 같은 구조적으로 특수한 레지스터 연상기호로 간주된다.
다른 제어 프로세서 명령들은 벡터 프로세서 스칼라/전용 레지스터를 제어프로세서 레지스터로 전송한다. 게다가, 다른 제어 프로세서 명령들은 제어프로세서 레지스터를 벡터 프로세서 스칼라/전용 레지스터로 전송한다.
예를 들면, MFVP 명령은 데이터를 벡터 프로세서 스칼라/전용 레지스터로 제어프로세서(204)의 일반 레지스터로 이동시킨다. MFVP 명령은 조건코드를 설정하는 코프로세서 레지스터 전송동작(MRC, MCR) 명령에 이어 호출된다. MFVP 명령은 조건이 참일 경우에만 실행된다. MFVP 명령은 하기의 어셈블러 구문을 사용하여 호출되어진다.
MRC{cond} p7,1,Rd,CRn,CRm,0
MTVP{cond} Rd,RNAME
여기서, 조건들은 equal(eq), not equal(ne), carry set(cs), carry clear(cc), minus(mi), plus(pl) 그리고 다른 조건들을 포함한다. 코프로세서 번호코드 p7은 벡터 프로세서(206)을 지정한다. Rd는 제어 프로세서(204)내의 레지스터이다. CRn과 CRm은 벡터 프로세서(206)내의 스칼라/전용 레지스터들이다. RNAME는 SP0 또는 VCSR와 같은 구조적으로 특수한 레지스터 연상기호로 간주된다. 제어 프로세서(204)는 MFVP 명령을 호출하여 벡터 프로세서(206)내의 스칼라/전용 레지스터 CRn과 CRm으로부터 데이타를 제어프로세서 레지스터(Rd)로 전송한다. 벡터 프로세서 사용불가능 예외는 MFVP 명령동안 발생되어질 것이다.
벡터 프로세서(MTVP) 명령에 대한 이동은 데이터를 제어 프로세서(204)내의 일반 레지스터로부터 벡터 프로세서 스칼라/전용 레지스터로 이동시키는 것이다. MTVP 명령은 조건코드를 설정하는 코프로세서 레지스터 전송동작(MRC, MCR) 명령에 이어 호출된다. MTVP 명령은 조건이 참일 경우에만 실행된다. MTVP 명령은 하기의 어셈블러 구문을 사용하여 호출되어진다.
MRC{cond} p7,1,Rd,CRn, CRm,0
MTVP{cond} Rd, RNAME
여기서, 조건들은 equal(eq), not equal(ne), carry set(cs), carry clear(cc), minus(mi), plus(pl) 그리고 다른 조건들을 포함한다. 코프로세서 번호코드 p7은 벡터 프로세서(206)을 지정한다. Rd는 제어 프로세서(204)내의 레지스터이다. CRn과 CRm은 벡터 프로세서(206)내의 스칼라/전용 레지스터들이다. RNAME는 SP0 또는 VCSR와 같은 구조적으로 특수한 레지스터 연상기호로 간주된다. 제어 프로세서(204)는 MTVP 명령을 호출하여 제어프로세서 레지스터(Rd)내의 데이터를 벡터 프로세서(206)내의 스칼라/전용 레지스터 CRn과 CRm으로 전송한다. 벡터 프로세서 사용불가능 예외는 MTVP 명령동안 발생되어질 것이다.
MFVP와 MTVP는 벡터 프로세서(206)가 VP_IDLE 상태에 있을 때에만 수행되어져야 한다. 제어프로세서(204)와 벡터 프로세서(206)간에 직접적인 통신을 이루어지지 않는다. 각 전송은 코프로세서 인터페이스(242)에 의해 예시적인 실시예에서 제공되는 중간 기억영역(intermediate storage)을 이용한다.
MFVP와 MTVP 명령은 제어 프로세서(204)가 벡터 프로세서(206)내의 제어 및 스태터스 레지스터들을 자유로이 독출 및 기입할 수 있도록 한다. 즉, 제어 프로세서는 운영체계 또는 응용 프로그램의 실행동안 벡터 프로세서의 동작을 제어한다. 제어 프로세서(204)가 벡터 프로세서(206)의 실행과는 관계없이 벡터 프로세서(206)의 제어 및 스태터스 레지스터에 엑세스하여, 동일 제어 및 스태터스 레지스터들이 제어 프로세서(204)와 벡터 프로세서(206)에 의해 병렬로 억세스되기 때문에 MFVP와 MTVP 명령은 벡터 프로세서(206)가 VP_IDLE 상태에 있을 경우에만 실행되어야 한다.
확장 레지스터(MTER) 명령에 대한 이동은 데이터를 제어 프로세서(204)로부터 특수 확장 레지스터로 이동시키는 것이다. MTER 명령은 조건코드를 설정하는 코프로세서 레지스터 전송동작(MRC, MCR) 명령에 이어 호출된다. MTER 명령은 조건이 참일 경우에만 실행된다. MTER 명령은 하기의 어셈블러 구문을 사용하여 호출되어진다.
MRC{cond} p7,1,Rd,cP,cER,0
MTER{cond} RNAME,Rd
여기서, 조건들은 equal(eq), not equal(ne), carry set(cs), carry clear(cc), minus(mi), plus(pl) 그리고 다른 조건들을 포함한다. 코프로세서 번호코드 p7은 벡터 프로세서(206)을 지정한다. Rd는 제어 프로세서(204)내의 레지스터이다. P는 선택된 코프로세서를 지정하는 것이고, ER은 코프로세서 P내의 확장레지스터를 지정한다. RNAME는 PER0 또는 CSR와 같은 구조적으로 특수한 레지스터 연상기호로 간주된다. 제어 프로세서(204)는 MTER 명령을 호출하여 제어프로세서 레지스터(Rd)내의 데이터를 지정된 코프로세서(P)내의 지정된 확장 레지스터 ER 로 이동시킨다. 지정된 코프로세서에 대해 시도된 억세스동안 보호위반은 MTER 명령동안 발생되어질 것이다.
확장 레지스터(MFER) 명령에 대한 이동은 지정된 코프로세서내의 확장된 레지스터로부터의 데이터를 제어프로세서(204)내의 레지스터로 이동시키는 것이다. MFER 명령은 조건코드를 설정하는 코프로세서 레지스터 전송동작(MRC, MCR) 명령에 이어 호출된다. MFER 명령은 조건이 참일 경우에만 실행된다. MFER 명령은 하기의 어셈블러 구문을 사용하여 호출되어진다.
MRC{cond} p7,2,Rd,cP,cER,0
MTER{cond} Rd,RNAME
여기서, 조건들은 equal(eq), not equal(ne), carry set(cs), carry clear(cc), minus(mi), plus(pl) 그리고 다른 조건들을 포함한다. 코프로세서 번호코드 p7은 벡터 프로세서(206)을 지정한다. Rd는 제어 프로세서(204)내의 레지스터이다. P는 선택된 코프로세서를 지정하는 것이고, ER은 코프로세서 P내의 확장레지스터를 지정한다. RNAME는 PER0 또는 CSR와 같은 구조적으로 특수한 레지스터 연상기호로 간주된다. 제어 프로세서(204)는 MFER 명령을 호출하여 지정된 코프로세서서(P)내의 지정된 확장 레지스터(ER)로부터의 데이터를 레지스터(Rd)로 이동시킨다. 지정된 코프로세서에 대해 시도된 억세스동안 보호위반은 MTER 명령동안 발생되어질 것이다.
코프로세서 인터페이스(242)에 대한 개략적 블록도는 도 7 에 도시되어 있다. 코프로세서 인터페이스(242)는 제어 프로세서(204)의 명령 세트를 확장하는 명령들을 수행하기 위한 레지스터들과 로직 기능들을 부가하여 제어 프로세서(204)의 기능성을 보충시킨다. 코프로세서 인터페이스(242)는 제어 프로세서(204)와 벡터 프로세서(206)간의 통신을 위한 레지스터들을 포함한다. 코프로세서 인터페이스(242)는 역시 다른 클럭속도로 동작하는 구조들간의 데이터와 신호통신을 위한 버퍼로서의 역할도 한다. 일실시예에서는, 제어 프로세서(204)는 40MHz 속도(rate)로 동작하고 벡터 프로세서(206)는 80MHZ로 실행한다.
코프로세서 인터페이스(242)는 디코더(702), 스테이트 머신(704), 특권 확장레지스터 블록(706) 및 사용자 확장 레지스터 블록(708)을 구비한다. 특권 확장 레지스터 블록(706)과 사용자 확장된 레지스터블럭(708)내의 레지스터들은 제어 프로세서(204) 및 벡터 프로세서(206)에 의해 독출 및 기입가능하다. 디코더(702)는 제어 프로세서 명령세트의 명령들을 디코드한다. 제어프로세서 명령세트는 제어 프로세서(204)상에서 실행가능한 명령들과 제어 프로세서에 의해 실행불가능하지만 대신 코프로세서 인터페이스(242)에 의해 실행되어 특수 코프로세서 기능성을 수행할 수 있는 명령들을 포함한다. 디코더(702)는 제어프로세서 명령들을 디코드하고 확장된 명령들을 검출하며 실행을 위한 스테이트 머신(704)으로 검출된 확장 명령들을 공급한다. 스테이트 머신(704)은 확장 명령들을 수행하기 위한 로직을 구비한다.
특권 확장 레지스터 블록(706)은 제어 프로세서(204)에 의해 특수 명령들의 실행동안 억세스되는 확장 레지스터들이다. 특권 확장 레지스터 블록(706)은 제어 레지스터(CTR), 프로세서 버전 레지스터(PVR), 벡터 인터럽트 마스크 레지스터(VIMSK), 명령 어드레스 브레이크 포인트 레지스터(AIABR), 데이터 어드레스 브레이크 포인트 레지스터(ADABR), 스크래치 패드 레지스터(SPREG) 및 스태터스 레지스터(STR)을 구비한다. 특권 확장 레지스터 블록(706)은 제어 프로세서(204)와 벡터 프로세서(206)의 동기를 위해 우선적으로 사용된다.
일실시예에서는, 사용자 확장 레지스터블럭(708) 레지스터들은 비트30에 맵핑된 단일 비트를 가지므로 비트31과 29:0은 0 으로 독출된다. 사용자 확장 레지스터 블록(708)은 벡터 프로세서 스테이트 플래그(VPSTATE)와 벡터 및 제어 프로세서 동기화(VASYNC) 플래그를 구비한다. VPSTATE는 비트30이 세트될 때 벡터 프로세서(206)가 VP_RUN 상태에 있음을 나타낸다. 비트30이 리세트될 때, 벡터 프로세서(206)는 VP_IDLE 상태에 있으며, 실행될 다음 명령을 어드레싱하는 프로그램 카운터와 함께 중지된다. VASYNC는 벡터 프로세서(206)와 제어 프로세서(204)간의 생산자-소비자 동기화를 허용한다. VASYNC 플래그는 벡터 프로세서(206)내에서 실행하는 VMOV 명령에 의해 세트 또는 리세트된다. VASYNC는 또한 확장 레지스터(MFER)로부터의 이동, 확장 레지스터(MTER)로의 이동 또는 TESTSET 명령을 사용하는 제어 프로세서(204)의 처리에 의해 세트 또는 리세트된다.
파워-업 리세트시, 특권 확장레지스터 블록(706)과 사용자 확장 레지스터 블럭(708)의 모든 비트들은 리세트되어 벡터 프로세서(206)는 IDEL 상태로 된다.
벡터 인터럽트 마스크 레지스터(VIMSK)는 벡터 프로세서(206)내에서 발생하되는 예외를 제어 프로세서(204)에 보고하는 것을 제어한다. 벡터 인터럽트 소오스(VISRC) 레지스터에서 대응하는 비트에 따라 세트될 때, VIMSK 비트들은 제어 프로세서(204)를 인터럽트하는 예외를 인에이블시킨다. VISRC 레지스터는 복수개의 예외와 인터럽트들의 소오스를 나타내는 복수개의 비트들을 포함한다. VIMSK 레지스터의 비트들은 데이터 어드레스 브레이크포인트 인터럽트 인에이블(DABE), 명령 어드레스 브레이크포인트 인터럽트 인에이블(IABE) 및 단일 스텝 인터럽트 인에이블(SSTPE)를 구비한다.
VIMSK는 게다가 부동 소수점 오버 플로우(FOVE), 무효 피연산자(FINVE)와 제로에 의한 나눗셈(FDIVE) 인터럽트 인에이블 비트들 및 정수 오버 플로우(IOVE)와 제로에 의한 나눗셈(IDIVE) 인터럽트 인에이블비트들을 제어한다. VIMSK는 역시 VCINT 인터럽트 인에이블(VIE), VCJOIN 인터럽트 인에이블(VJE)과 문맥 전환 인에이블(CSE)을 제어한다.
벡터 프로세서(206)는 제어 프로세서(204)로 신호를 전송함으로써 제어 프로세서(204)와 상호작용한다. 특별히, 벡터 프로세서(206)는 제어프로세서(204)에 기입 억세스 및 독출 억세스를 제공하는 로직을 포함한다. 벡터 프로세서(206)는, VCJOIN 명령과 VCINT 명령을 사용하여, 벡터 프로세서(206)가 동기명령을 수행함을 나타내는 사용자 확장 레지스터들을 경유하여 간접적으로 제어 프로세서(204)로 신호들을 전송한다. 벡터 프로세서(206)는, 또한 벡터 프로세서(206)가 실행을 중지하고 VP_IDLE 상태로 들어갔음을 나타내는 인터럽트 요구를 통해 직접적으로 제어 프로세서(204)로 신호들을 전송한다. 벡터 프로세서(206)는 제어 프로세서(204)로 신호를 전송하기 위한 두가지 명령을 실행한다. VCJOIN 명령(VCJOIN n)은 조건적으로 제어 프로세서(204)와 결합하여 벡터 프로세서(206)가 중지되어 VP_IDLE 상태로 들어가도록 한다. 벡터 프로세서(206)내의 프로그램 카운터(도시되지 않음)는 VCJOIN 명령에 이은 다음 명령을 어드레스한다. VCINT 명령(VCINT n)은 제어 프로세서(204)를 조건적으로 인터럽트시켜 벡터 프로세서(206)가 중지되어 VP_IDLE 상태로 들어가도록 한다. 벡터 프로세서(206)내의 프로그램 카운터는 VCINT 명령에 이은 다음 명령을 어드레스한다. VCINT 와 VCJOIN 명령들은 제어 플로우 클래스(class)로 분류되는, 벡터 프로세서(206)에 의해 실행되는 명령들이다. 제어 플로우 명령은 브랜치, 감소 및 브랜치, 점프, 서브루틴으로부터 리턴, 그리고 문맥 스위치와 배리어 명령과 같은 다양한 조건명령을 구비한다.
조건문맥 전환(VCCS) 명령, 조건인터럽트(VCINT) 명령 및 조건결합(VCJOIN) 명령을 구비한, 벡터 프로세서(206)상에서 실행하는 복수개의 명령들은 인터럽트와 예외 처리를 위하여 사용되어진다.
인에이블되면, 조건 인터럽트(VCINT) 명령은 벡터 프로세서(206)의 실행을 중지하고 제어 프로세서(204)를 인터럽트시킨다. VCINT 명령은 VCINT 인터럽트를 발생시킬 것이다. 조건 인터럽트(VCINT) 명령의 어셈블러 구문은 다음과 같다.
VCINT.cond #ICODE
cond는 정의된 조건코드이고 #ICODE 는 제어프로세서(204)에 의해 사용상수를 식별하는 23-비트값이다. 조건코드(cond)는 unconditional(un), less than(lt), equal(eq), less than or equal to(le), greater than(gt), not equal(ne), greater than or equal to(ge) 및 overflow(ov)의 조건코드로부터 선택된다. VCINT 동작은 하기와 같이 의사코드에 의해 설명되어진다.
If ((cond==VCSR[SO,GT, EQ,LT])│ (cond==un)) {
VISRCvip = 1;
VIINS = [VCINT.cond #ICODE instruction];
VEPC = VPC;
if (VIMSKvie==1)signal control processor int;
VP_STATE = VP_IDLE;}
else VPC = VPC+4;
따라서, 벡터 제어 및 스태터스 레지스터(VCSR)는 조건코드를 매칭시키거나 또는 조건코드가 무조건일 경우면, 벡터 인터럽트 소오스(VISRC) 레지스터의 벡터 인터럽트 비트는 세트되고, 벡터 인터럽트 명령 레지스터(VIINS)는 #ICODE 파라미터에 의해 식별된 명령으로 로드되며, 벡터예외 프로그램 카운터(VEPC)는 벡터 프로세서(206)의 프로그램 카운터로부터의 값으로 로드된다. 벡터 인터럽트 명령 레지스터(VIINS)는 VCINT 명령의 식별자, 조건 및 #ICODE 인수로 로드되어, (1) 벡터프로세서(206)가 제어 프로세서(204)를 인터럽트시키는 이유와 (2) 소프트웨어 인터럽트 서비스 루틴을 실행시 제어 프로세서(204)에 의해 사용 상수값에 관계하는 정보를 제어 프로세서(204)에 제공한다. VIMSK 레지스터의 벡터 프로세서 인터럽트 인에이블비트가 세트되면, 벡터 프로세서(206)는 인터럽트신호(IRQ)를 제어 프로세서(204)로 송부한다. 벡터 프로세서(206)의 상태(VP_STATE)는 아이들(IDLE)상태로 세트된다. 그러나, 조건코드가 무비조건이 아니고 제어코드가 벡터 제어 및 스태터스 레지스터(VCSR)과 매칭되지 않으면, VCINT 명령은 프로그램 카운터가 4씩 증가하는 것만을 제외하고는 무시된다.
만약 인에이블되면, 제어프로세서 태스크(VCJOIN) 명령과의 조건결합은 벡터 프로세서(206)의 실행을 중지하고, 제어프로세서(204)내에서 동작하는 태스크와 결합된다. VCJOIN 명령은 VCJOIN 인터럽트를 발생시킬 수도 있다.
조건 인터럽트(VCJOIN) 명령의 어셈블러 구문은 하기와 같다:
VCJOIN.cond#Offset
여기서, cond는 정의된 조건코드이고, #Offset는 순차적으로 활성화되는 벡터 프로세서 서비스루틴의 벡터 프로세서(206)의 메모리내의 VCJOIN 명령의 위치에 관계하는 오프셋을 식별하는 23-비트 값이다. VCJOIN 명령은 제어 프로세서(204)내에서 실행하는 인터럽트 서비스루틴을 활성화시킨다. 제어프로세서(204)는 #Offset 파라미터를 저장하고 정의된 인터럽트 서비스루틴을 실행한다. 인터럽트 서비스루틴이 완료되는 동안, 제어 프로세서(204)는 정의된 동작을 수행하고, 다음 프로세싱을 위해 벡터 프로세서(206)내의 레지스터들을 세트시킨다. 인터럽트 서비스루틴의 완료시, 제어프로세서(204)는 STARTVP 명령을 이용하여 벡터 프로세서(206)를 스타트시키고 저장된 어드레스 #Offset을 벡터 프로세서(206)가 실행을 시작할 때의 서브루틴의 위치로서 지정된다. 오프셋 인수는 브랜치 명령과 마찬가지로 제어프로세서에 의해 사용되어, 제어 프로세서(204)에 의해 실행된 명령의 시퀀스를 지시한다. VCJOIN 명령의 사용예는, 여기서 완전히 참고문헌으로 된 미국특허출원 No.xx/xxx,xxx, 대리인 문서 No. M-4365US, S.P. Song 등의 멀티프로세서내의 유효한 문맥저장 및 복원(EFFICIENT CONTEXT SAVING AND RESTORING IN MULTIPROCESSORS)에 개시되었다. 조건코드(cond)는 unconditional(un), less than(lt), equal(eq), less than or equal to(le), greater than(gt), not equal(ne), greater than or equal to(ge) 및 overflow(ov)의 조건코드로부터 선택되어진다. VCJOIN 동작은 하기와 같이 의사코드에 의해 설명되어진다.
If ((cond==VCSR[SO,GT, EQ,LT])│ (cond==un)) {
VISRCvjp = 1;
VIINS = [VCJOIN.cond #Offset instruction];
VEPC = VPC;
if (VIMSKvje ==1) signal control processor int;
VP_STATE = VP_IDLE;}
else VPC = VPC+4;
따라서, 벡터 제어 및 스태터스 레지스터(VCSR)은 조건코드를 매칭시키거나 또는 조건코드가 비조건(unconditional)일 경우면, 벡터 인터럽트 소오스(VISRC) 레지스터의 벡터 결합 비트는 세트되고, 벡터 인터럽트 명령 레지스터(VIINS)는 #Offset 파라미터에 의해 식별된 명령으로 로드되며, 벡터예외 프로그램 카운터(VEPC)는 벡터 프로세서(206)의 프로그램 카운터로부터의 값으로 로드된다. 벡터 인터럽트 명령 레지스터(VIINS)는 VCJOIN 명령의 식별자, 조건 및 #Offset 인수로 로드되어, (1) 벡터프로세서(206)가 제어 프로세서(204)를 인터럽트시키는 이유와 (2) 제어 프로세서(204)가 벡터 프로세서(206)을 재활성화시킬 때 벡터 프로세서 루틴의 명령 시퀀스 플로우를 지시하기 위한 브랜치 오프셋을 나타내는 벡터 프로세서(206)의 명령 메모리내의 어드레스 또는 라벨로부터 오프셋에 관계하는 정보를 제어 프로세서(204)에 제공한다. VIMSK 레지스터의 벡터 프로세서 결합 인에이블비트가 세트되면, 벡터 프로세서(206)는 인터럽트신호(IRQ)를 제어 프로세서(204)로 송부한다. 벡터 프로세서(206)의 상태(VP_STATE)는 아이들(IDLE)상태로 세트된다. 그러나, 조건코드가 무조건이 아니고 제어코드가 벡터 제어 및 스태터스 레지스터(VCSR)와 매칭되지 않으면, VCJOIN 명령은 프로그램 카운터가 4씩 증가하는 것만을 제외하고는 무시된다.
조건문맥 전환(VCCS) 명령은, VIMSK 레지스터의 문맥 스위치 인에이블 비트 VIMSKcse가 참이면, 문맥전환 서브루틴으로의 중간(지연되지 않은) 점프를 실행한다. VIMSKcse가 참이면, VPC+4 에서의 리턴 어드레스는 리턴 어드레스 스택에 저장된다. 만약 그렇지 않으면, 어드레스 VPC+4 에서 예외는 계속된다. VCCS 명령은 리턴 어드레스 스택 오버플로우 예외를 발생시킬 수도 있다. 조건 문맥 전환(VCCS) 명령의 어셈블러 구문은 하기와 같다:
VCCS #Offset
여기서, #Offset 는 문맥 전환 서브루틴의 위치를 식별하는 23-비트 값이다. VCCS 동작은 하기와 같이 의사코드에 의해 설명되어진다.
If VIMSKcse ==1) {
if (VSP4 15) {
VISRCRASO = 1;
signal control processor with RASO;
VP_STATE = VP_IDLE; }
else { RSTACK[VSP3:0]=VPC+4;
VSP4:0 = VSP4:0+1;
VPC = VPC + 4;} else VPC = VPC+4;
따라서, VIMSK 레지스터의 문맥전환 인에이블 비트가 세트되면, 리턴 스택 포인터(VSP)는 오버 플로우를 테스트한다. 오버플로우조건이 발생되면, 벡터 인터럽트 소오스(VISRC) 레지스터의 리턴 어드레스 스택 오버플로우 비트는 세트되고, 벡터프로세서(206)는 제어 프로세서(204)로 리턴 어드레스 스택 오버 플로우예외를 송부하며, 벡터 프로세서(206)의 상태(VP_STATE)는 아이들상태로 세트된다. 만약 오버플로우 조건이 발생되지 않으면, 4씩 증가하는 프로그램 카운터는 리턴어드레스 스택(RSTACK)으로 푸쉬(push)되어, 리턴 스택포인터(VSP)는 1씩 증가하고, 벡터 프로세서(206)의 프로그램 카운터(VPC)는 #Offset x 4 의 부호확장된 곱씩 증가한다. VIMSK 레지스터의 문맥전환 인에이블 비트가 세트되지 않으면, VCCS 명령은 프로그램 카운터가 4씩 증가하는 것만을 제외하고는 무시된다.
제어프로세서(204)와 벡터 프로세서(206)는, 일단 벡터 프로세서(206)의 동작이 제어 프로세서(204)에 의해 STARTVP 명령의 실행에 이어 실행되기 시작하면, 병렬로 독립적으로 동작한다. 제어프로세서(204)와 벡터 프로세서(206)의 독립적인 병렬동작은 특수제어명령을 사용하여 동기화된다. 두 스레드(thread)의 동시실행의 지원: 하나는 제어프로세서(204)상에서의 스레드이고 다른 하나는 벡터 프로세서(206)상에서의 스레드, 은 태스크 실행속도를 상당히 증가시키고 MSP 프로세서군의 다양한 프로세서들로 제어 프로세서(204)상에서 동작하는 명령코드의 이식(porting)을 용이하게 한다. 예시된 실시예에서, 벡터 프로세서(206)는 80MHz 속도로 동작한다.
도 2 를 참조하면, 캐쉬 서브시스템(208)은 데이터 캐쉬(214) (예를 들면, 5KB), 명령 캐쉬(216) (예를 들면, 2KB) 및 캐쉬롬(218) (예를 들면, 16KB)를 구비하고, 전형적으로 벡터 프로세서(80MHz)와 동일속도로 동작한다. 일 실시예에서는, 캐쉬 서브시스템(208)은 제어프로세서(204)용 1Kbyte의 명령저장영역과 1Kbyte 의 데이터저장영역 그리고 제어프로세서(204)와 벡터 프로세서(206)용 공용 16Kbyte 통합 명령과 데이터 캐쉬롬을 구비한다. 캐쉬 서브시스템(128)은 32-비트 데이터버스를 통해 제어 프로세서(204)와 인터페이스하고, 128-비트 데이터 버스를 통해 벡터 프로세서(206)와 인터페이스한다. 캐쉬 롬(218)은 uROM 초기화 소프트웨어, 자기진단 소프트웨어, 다양한 시스템 관리 소프트웨어, 라이브러리 루틴 및 선택된 명령과 데이터 상수용 캐쉬를 구비한다. 특히, 캐쉬 롬(218)은 명령예외 핸들러와 제어 프로세서(204)용 입출력 디바이스 인터럽트 핸들러 0, 1, 2, 3을 구비한다. 캐쉬롬(218)은 벡터프로세서 인터럽트 핸들러와 제어 프로세서(204)내에서 실행하는 벡터프로세서 브레이크 포인트예외 핸들러를 역시 구비한다.
FBUS(210)는 예를 들면 32-비트 PCI 버스 인터페이스(220), 64-비트 SDRAM 메모리 콘트롤러(222), 8-채널 DMA 콘트롤러(224), 주문자 ASIC 로직블럭(226) 및 메모리 데이터 이동자(228)을 구비한 복수개의 FBUS 주변장치와 인터페이스한다. PCI 버스 인터페이스(220)는 시스템 버스(106)와 인터페이스하고 예를 들면 33MHz 로 동작한다. 주문자 ASIC 로직블럭(226)은 원하는 주문 기능을 수행하기 위한 로직블럭을 공급한다. 주문자 ASIC 로직블럭(226)은, 일실시예에서 다양한 아날로그 코덱(CODEC) 및 주문자-특수 I/O 소자에 대한 인터페이스를 구비한 10K 게이트를 공급한다. 메모리 데이터 이동자(228)는 호스트 프로세서(102)로부터의 DMA 데이터를 멀티미디어 신호 프로세서(104)에 위치한 SDRAM 메모리(230)으로 전송한다.
I/O 버스(212)는 예를 들면, 버스 스트림 프로세서(232), UART 직렬라인(234), 타이머회로(236), 인터럽트 콘트롤러(238) 및 특수 레지스터(240)을 구비한 복수개의 I/O 버스소자들과 인터페이스한다. 버스 스트림 프로세서(232)는 비디오비트 스트림을 처리한다. 특수 레지스터(240)는 소프트웨어적으로 제어된 초기화 및 인터럽트 처리를 위해 사용된다.
도 8 을 참조하면, 개략적 블록도는 멀티미디어 신호 프로세서(104)상에서 실행하는 MSP 시스템 컴퍼넌트 소프트웨어(802)와 호스트 프로세서(102)상에서 실행하는 PC 응용 및 운영체계 소프트웨어(808)을 구비한 소프트웨어 및 펌웨어 아키텍쳐(800)를 도시한 것이다. 멀티미디어 신호 프로세서(104)는 벡터 프로세서(206)상에서 실행하는 벡터화된 DSP 펌웨어 라이브러리(804)와 제어 프로세서(204)상에서 실행되는 시스템관리 기능블럭(806)에 의해 제어된다. 벡터화된 DSP 펌웨어 라이브러리(804)와 시스템관리 기능블럭(806)은 MSP 시스템 컴퍼넌트 소프트웨어(802)내에 포함된다. 아키텍쳐(800)는 호스트 응용제어동작으로부터 신호처리기능을 간단하게 분리시킴으로써 소프트웨어 개발을 단순화하고, 소프트웨어 디자인관리를 개선시키며, 응용개발 및 유지비를 감소시킨다.
MSP 시스템 컨퍼넌트 소프트웨어(802)는 배타적으로 제어프로세서(204)상에서 실행되고, MSP 실시간 커넬(810), 멀티미디어 라이브러리 모듈(812), 시스템 관리기능블럭(806) 및 벡터화된 DSP 펌웨어 라이브러리(804)를 구비한다. MSP 실시간 커넬(810)은 대표적으로 호스트 프로세서(102), 자원관리, I/O 소자 핸들링 그리고 대부분의 인터럽트 및 예외처리에 대한 인터페이스를 책임진다. MSP 실시간 커넬(810)은 호스트 프로세서(102)에서 실행하는 WindowsTM 및 Windows NTTM 과 인터페이스한다. MSP 실시간커넬(810)은 또한 호스트 프로세서(102)로부터 선택된 응용펌웨어를 선택하고 다운로드하기 위한 소프트웨어, 제어 프로세서(204)와 벡터 프로세서(206)에서 실행용 태스크를 스케쥴링하기 위한 소프트웨어 그리고 메모리 및 I/O 소자를 구비한 멀티미디어 신호 프로세서(104)의 시스템자원을 관리하기 위한 소프트웨어를 포함한다. MSP 실시간 커넬(810)은 멀티미디어 신호 프로세서(104)의 태스크간 통신을 동기화시키기 위한 소프트웨어와 MSP-관계된 인터럽트, 예외 및 스테터스 조건을 보고하기 위한 소프트웨어를 구비한다.
벡터화된 DSP 펌웨어 라이브러리(804)는 실제적으로 모든 디지탈 신호처리기능을 실행한다. 벡터화된 DSP 펌웨어 라이브러리(804)는 또한 제어 프로세서(204)에 의해 벡터프로세서(206)에 제기되는 코프로세서 인터럽트 또는 벡터 프로세서(206)내에서 발생된 하드웨어 스택오버 플로우예외와 같은 규정된 특수 인터럽트를 제어한다.
멀티미디어 라이브러리 모듈(812)은 데이터 통신, MPEG 비디오 및 오디오, 음성코딩 및 합성, 사운트블라스터(SoundBlasterTM)과 호환가능한 오디오 등을 구비한 통신 핸들링기능을 실행한다. MSP 실시간 커넬(810)은 멀티미디어 신호 프로세서(104)상에서 실행되는 멀티미디어 응용을 이용하는 확장을 구비한 실시간, 로버스트, 멀티태스크, 강제(pre-emptive) 운영체계이다.
호스트 프로세서(102)내에서 실행하는 PC 응용 및 운영체계 소프트웨어(808)는 시스템 버스(106)를 통해 MSP 제어 및 스태터스 레지스터들을 기입 및 독출함으로써 멀티미디어 신호 프로세서(104)를 제어한다.
MSP 프로그램실행은 제1실행 스트림을 실행하는 제어 프로세서(204)로부터 시작된다. 제어 프로세서(204)는 벡터 프로세서(206)내의 제2독립실행스트림을 초기화시키게 된다. 제어프로세서(204)와 벡터 프로세서(206)의 동작은 제어프로세서(204)내에서 동작하는, STARTVP, INTVP 및 TESTVP 명령을 구비한 특정 코프로세서명령과 벡터 프로세서(206)내에서 실행하는, VJOIN 과 VINT 인터럽트를 구비한 특수명령을 통해 동기화된다. 제어 프로세서(204)와 벡터 프로세서(206)간의 데이터전송은 제어프로세서(204)내에서 실행된 데이터이동명령을 사용하여 실행된다.
파워업후, 멀티미디어 신호 프로세서(104)는 자동적으로 자기진단 시퀀스로 들어가 기능성을 완전히 테스트하게 된다. 자기진단 시퀀스는 멀티미디어 신호프로세서(104)내의 모든 레지스터들의 초기화와 멀티미디어 신호프로세서(104)의 컨퍼넌트의 기능성을 입증하기 위한 온-칩 자기진단의 실행을 구비한다. 자기진단 시퀀스의 종료시, 멀티미디어 신호프로세서(104)는 MSP 초기화 소프트웨어를 로드하여 실행하며 MSP 실시간 커넬(810)을 로드하여 실행하는 MSP 시스템 컨퍼넌트 소프트웨어(802)를 실행한다. 멀티미디어 신호 프로세서(104)는 PCI 버스를 통한 하드웨어에 의해 제어된 시스템 리세트, MSP 제어 레지스터내의 PCI 시스템 리세트비트를 통한 소프트웨어에 의해 제어된 시스템 리세트 그리고 제어 프로세서(204)와 MSP 제어 레지스터내의 벡터 재개시(restart) 비트를 통해 소프트웨어에 의해 제어된 재개시를 구비한 3가지 타입의 리세트동작을 지원한다.
도 9 를 참조하면, 플로우챠트는 멀티미디어 멀티프로세서 시스템(100)내의 인터럽트와 예외 처리에 관계된 동작을 도시한 것이다.
벡터 프로세서(206)는 멀티미디어 멀티프로세서 시스템(100)내에서 아주 제한된 제어 및 관리기능을 실행한다. 특별히, 벡터 프로세서(206)는 예외를 발생하지만, 벡터 프로세서(206)는 예외를 처리하는 능력을 가지고 있지 않다. 대신, 예외 및 리세트 초기화는 제어 프로세서(204)에 의해 처리된다. 게다가 제어 프로세서(204)는 벡터 프로세서(206)가 아이들상태에 있을 때에만 벡터 프로세서를 기입 및 독출하는 것이 허용된다. 따라서, 제어 프로세서(204)는 제어프로세서로서 동작하고 벡터 프로세서(206)는 제어 프로세서의 제어하에 제어되는 프로세서로 동작한다.
이와같은 방법으로, 멀티미디어 멀티프로세서 시스템(100)은 벡터 프로세서(206)와 제어 프로세서(204)가 상호 이화제어 및 데이터 처리 특성을 가지고 있다는 점에서 비대칭인 복수개의 프로세서들을 구비한다. 비대칭 프로세서들은 단일의 운영체계에 의해 제어된다. 벡터 프로세서(206)와 제어 프로세서(204)는 상호 독립적인 명령세트들을 갖는다. 멀티미디어 멀티프로세서 시스템(100)은 벡터 프로세서(206)가 커다란 머신 스태이트 또는 문맥 그리고 커다란 데이터폭과 많은 레지스터를 구비하는 인터럽트와 예외처리의 멀티프로세서 방식 정의(architectural definition)를 사용한다. 하나의 예시적 실시예에서, 벡터 프로세서(206)는 8032-비트 스칼라 레지스터와 4Kbyte 스크래치 패드메모리에 대하여, 64288-비트 벡터 레지스터들과 288-비트 데이터폭을 갖는다. 즉, 벡터 프로세서(206)의 커다란 머신상태는 상대적으로 많은 비트들을 갖는 레지스트들을 포함하여 상대적으로 많은 레비스터들을 구비한다. 즉, 벡터 프로세서(206)는 비트와 플래그와 같은 작은 데이터구조를 처리하기 위하여 최적화되어 있지 않지만, 어레이 또는 벡터와 같은 커다란 데이터 구조를 고효율적으로 처리한다. 즉, 벡터 프로세서(206)는 예외를 검출하기 위한 회로는 구비하지만, 제어프로세서(204)로의 인터럽트와 예외 처리동작을 지연시킨다. 제어프로그램은 전형적으로 각 플래그와 포인터의 모니터링 및 제어를 포함하기 때문에, 제어프로세서(204)는 인터럽트와 예외 처리와 같은 운영체계 프로그램을 실행하는데 매우 유익한 작은 머신 스테이트와 폭 예를 들면 16 또는 32-비트를 갖는다.
벡터 프로세서(206)는 예외조건을 검출하고, 조건을 서비스하기 보다는 제어 프로세서(204)로 인터럽트신호를 송부하여, 예외를 일으키는 조건 또는 소오스가 제어프로세서(204)에 의해 서비스될 때까지 아이들상태로 들어가 남아있도록 한다. 멀티미디어 멀티프로세서 시스템(100)의 제어는 모든 제어동작이 단독의 제어프로세서(204)에 의해 실행되기 때문에, 예외 및 인터럽트 콘트롤동작이 좌표화될 필요가 없이 단순화된다.
벡터 프로세서(206)는 MSP 아키텍쳐에 따라 정의되어, 벡터 프로세서(206)가 실행되는지 또는 무한 중단된 실행을 갖는지를 각각 나타내는 런 상태(VP_RUN)와 아이들상태(IDLE_STATE)에서 동작한다. 멀티미디어 멀티프로세서 시스템(100)의 리세트시(902), 벡터 프로세서(206)는 VP_IDLE 상태로 들어간다(904). 제어 프로세서(204)는 VP_IDLE 상태동안 벡터 프로세서(206)내에서 레지스터를 기입 및 독출하는 것만을 허용된다(906). 벡터프로세서(206)가 VP_RUN 상태에 있을 때 제어 프로세서(204)에 의해 실행되고 벡터 프로세서(206)의 레지스터로 인가되는 독출 동작 또는 기입동작의 결과는 경계가 정의되지 않음(boundedly undefined) 이다. 경계가 정의되지 않음 결과는 멀티미디어 신호 프로세서(104)내의 임의 명령시퀀스에 의해 발생되는 멀티미디어 멀티프로세서 시스템(100)의 상태이다. 따라서, 제어 프로세서(204)에 의해 벡터 프로세서(206)내의 레지스터들의 기입 및 독출 억세스들은 벡터 프로세서(206)가 아이들상태(VP_IDLE)에 있을 때만 허용된다.
벡터 프로세서(204)는 벡터 프로세서(206)내의 레지스터들을 초기화시킨다(908). 벡터 프로세서(206)의 레지스터들을 선택된 상태로 초기화시킨 후, 제어 프로세서(204)는 STARTVP 명령을 실행하여(910) 벡터 프로세서(206)의 상태를 VP_RUN 상태로 변화시켜준다(911).
벡터 프로세서(206)가 예외조건을 만났을 때(912), 벡터 프로세서(206)는 VP_IDLE 상태로 들어가 인터럽트 요구를 제어 프로세서(204)로 보낸다(916). 벡터 프로세서(206)는 제어 프로세서(204)가 다른 STARTVP 명령을 실행할 때까지 페_IDLE 상태로 남아있게 된다(918). 제어 프로세서(204)는 벡터 프로세서(206)내의 레지스터들을 독출하여 보고된 예외의 특성을 결정하고(920), 정의된 방법으로 예외(922)를 핸들링한다(922). 그 다음 제어 프로세서(204)는 원하는 경우, 벡터 프로세서(206)내의 레지스터들을 다시 초기화시키고(924), 벡터 프로세서(206)의 실행를 재시도한다(926).
벡터 프로세서(206)는 제어 프로세서(204)보다는 벡터 프로세서(206)내의 레지스터들을 저장하거나 복원하는데 보다 더 효율적이다. 따라서, 제어 프로세서(204)가 벡터 프로세서(206)를 프로그램하여 레지스터들이 문맥 전환동작동안 명령의 저장 및 복원을 실행하도록 할 때 성능이점이 얻어진다. 편리한 문맥 전환동작은 본 발명의 출원일에 출원되고, 현재 출원중인 미국특허출원 No.xx/xxx,xxx (대리인 문서번호 M-4365), S.P.Song 등의 멀티프로세서의 효율적인 문맥저장 및 복원에 상세하게 설명되어 있다.
벡터 프로세서(206)는 리세트시와 예외가 검출되어 시스템 디자인 및 프로그래밍을 용이하고 시스템 리세트시 프로세서들의 동기화를 단순화할 때 VP_IDLE 상태로 들어간다. 전형적으로 예외들은 자주 발생되지 않아 벡터 프로세서(206)의 인터럽트 처리는 벡터 프로세서(206)의 기능 및 성능을 충분히 감소시키지 않고도 아주 단순화된다. 게다가, 예외의 응답은 보통 제한된 유효의 특징으로 간주된다. 예를 들면, 멀티미디어 응용 프로그램과 같은, 실시간에 실행하는 많은 통상적인 응용 프로그램은 실시간 동작모드에서 예외사상에 대한 응답을 디스에이블시키는 프로그램을 포함한다. 다른 예에서, 어떤 통상적인 응용 프로그램은 포화모드를 이용하여 실시간 연산처리동안 연산 또는 언더플로우조건을 피한다.
본 발명을 바람직한 실시예에 관련하여 도시하고 설명하였지만, 본 발명이 그에 한정되는 것은 아니며 이하의 특허청구의 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다. 예를 들면, 실시예에서는 펜티엄 호스트 컴퓨터와 특별한 멀티미디어 프로세서를 구비한 멀티프로세서 시스템을 이용하는 시스템으로써 설명되었다. 다른 프로세서 구조들이 다른 실시예에서 사용될 수 있다.
관련된 출원에 대한 상호참고문헌
이 특허문서는 다음 현재 출원된 특허출원인 참고문헌과 관련되고 이들에 의해 구체화된다.
미국 특허출원 시리얼 No.xx/xxx,xxx, 대리인 문서 No.M-4354US, Le Nguyen 의 멀티미디어 신호 프로세서의 멀티프로세서동작.
미국 특허출원 시리얼 No.xx/xxx,xxx, 대리인 문서 No.M-43554US, Le Nguyen 의 멀티미디어 신호 프로세서의 단일명령-멀티플 데이타 처리.
미국 특허출원 시리얼 No.xx/xxx,xxx, 대리인 문서 No.M-4365US, S.P.Song 등의 멀티프로세서의 효율적인 문맥저장 및 복원.
미국 특허출원 시리얼 No.xx/xxx,xxx, 대리인 문서 No.M-4366US, S.P. Song 등의 인수 통과를 갖는 소프트웨어 인터럽트를 핸들링하기 위한 시스템 및 방법.
미국 특허출원 시리얼 No.xx/xxx,xxx, 대리인 문서 No.M-4368US, C.Reader 등의 비디오 데이터 처리방법 및 장치.
미국 특허출원 시리얼 No.xx/xxx,xxx, 대리인 문서 No.M-4369US, Le Nguyen 등의 벡터 레지스터들의 멀티플 뱅크를 이용한 단일명령-멀티플 데이타처리.
미국 특허출원 시리얼 No.xx/xxx,xxx, 대리인 문서 No.M-4370US, Le Nguyen 등의 결합된 스칼라/벡터연산을 구비한 단일명령-멀티플 데이타 처리
상술한 바와 같은 본 발명의 멀티프로세서 컴퓨터 시스템은 데이터 프로세서가 아이들상태에 있을 때만 제어 및 스태터스 레지스터를 구비한 제어 프로세서가 데이터 프로세서의 초기상태를 엑세스하도록 제한되는 구조적 정의를 구비함으로써, 제어프로세서와 데이터 프로세서간의 프로그래밍 상호동작을 단순화하고 데이타 프로세서가 불일치상태 또는 무효상태로 들어가는 것을 보호한다.
그리고, 프로그래밍 모델과 데이터 프로세서 수행이 동일한 멀티플 프로세서를 사용하는 비대칭 아키텍쳐에 비해 단순화되는 이점이 있다.

Claims (25)

  1. 상호 이화 제어 및 데이터 핸들링 특성을 갖는 프로세서들을 구비한 복수개의 상호 연결된 프로세서들과;
    상기 복수개의 프로세서들을 제어하기 위한 공통 운영체계와;
    상기 운영체계와 결합하여 동작하고, 제 1 프로세서의 인터럽트와 예외조건을 검출하기 위한, 상기 복수개의 프로세서들중 제 1 프로세서상에서 동작하는 인터럽트 및 예외 검출기와,
    제 1 프로세서의 인터럽트 및 예외조건을 검출하고 제 1 프로세서와 제 2 프로세서의 인터럽트 및 예외조건을 결합시켜 핸들링하기 위한, 상기 복수개의 프로세서들중 제 2 프로세서상에서 동작하는 인터럽트 및 예외 서브핸들러를 구비하는 인터럽트 및 예외 핸들러;를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제 1 항에 있어서,
    상기 제 2 프로세서는 정의된 데이터패스폭을 갖는 제어 프로세서이고, 상기 제 1 프로세서는 제 2 프로세서의 데이터 패스폭보다는 실제적으로 카다란 넓은 데이터 패스폭을 갖는 벡터 프로세서인 것을 특징으로 하는 컴퓨터 시스템.
  3. 제 1 항에 있어서,
    상기 복수개의 프로세서중 상기 제 1 프로세서상에서 동작하는 상기 인터럽트 및 예외조건 검출기는 검출된 예외에 응답하여 상기 제 1 프로세서를 아이들상태로 비활성화시키는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제 1 항에 있어서,
    상기 제 2 프로세서는 상기 제 1 프로세서의 제어 및 스태터스 레지스터들을 독출 및 기입억세스하는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제 4 항에 있어서,
    상기 복수개의 프로세서중 상기 제 1 프로세서상에서 동작하는 상기 인터럽트 및 예외 검출기는 검출된 예외에 응답하여 상기 제 1 프로세서를 아이들상태로 비활성화시키고, 상기 제 2 프로세서는 상기 제 1 프로세서가 아이들상태에 있을 때 상기 제 1 프로세서의 제어 및 스태터스 레지스터들을 독출 및 기입억세스하는 것을 특징으로 하는 컴퓨터 시스템.
  6. 상호 이화 제어 및 데이터 핸들링 특성을 갖는 프로세서들을 구비한 복수개의 상호 연결된 프로세서들과;
    상기 복수개의 프로세서들을 제어하기 위한 공통 운영체계와;
    상기 운영체계와 결합하여 동작하고, 제 1 프로세서의 인터럽트와 예외조건을 검출하기 위한, 상기 복수개의 프로세서들중 제 1 프로세서상에서 동작하고, 예외조건의 검출에 응답하여 상기 제 1 프로세서를 아이들상태로 디스에이블시키는 인터럽트 및 예외 검출기를 구비하는 인터럽트 및 예외 핸들러;를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  7. 제 6 항에 있어서,
    상기 인터럽트 및 예외 핸들러는 상기 제 1 프로세서의 인터럽트 및 예외응답을 제어하고, 상기 복수개의 프로세서들중 제 2 프로세서상에서 동작하는 인터럽트 및 예외 서브핸들러를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  8. 제 7 항에 있어서,
    상기 제 2 프로세서는 정의된 데이터패스폭을 갖는 제어 프로세서이고, 상기 제1프로세서는 상기 제 2 프로세서의 데이터 패스폭보다는 실제적으로 커다란 넓은 데이터 패스폭을 갖는 벡터 프로세서인 것을 특징으로 하는 컴퓨터 시스템.
  9. 상호 이화 제어 및 데이터 핸들링 특성을 갖는 프로세서들을 구비한 복수개의 상호 연결된 프로세서들과;
    상기 복수개의 프로세서들을 제어하기 위한 공통 운영체계와;
    상기 복수개의 프로세서들중 상기 제 1 프로세서와 상기 제 1 프로세서의 제어 및 스태터스 레지스터들을 기입 및 독출억세스하는 제 2 프로세서상에서 운영체계와 결합하여 동작하는 인터럽트 및 예외 핸들러를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  10. 제 9 항에 있어서,
    상기 인터럽트 및 예외 핸들러는 상기 제 1 프로세서의 인터럽트 및 예외조건을 검출하기 위한, 상기 제 1 프로세서상에서 동작하는 인터럽트 및 예외검출기를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  11. 제 9 항에 있어서,
    상기 인터럽트 및 예외 핸들러는 상기 제 1 프로세서의 인터럽트 및 예외조건을 검출하고 상기 제 1 프로세서 및 제 2 프로세서의 인터럽트 및 예외조건을 결합시켜 핸들링하기 위한, 제 2 프로세서상에서 동작하는 인터럽트 및 예외 서브핸들러를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  12. 제 9 항에 있어서,
    상기 제 2 프로세서는 정의된 데이터패스폭을 갖는 제어 프로세서이고, 상기 제 1 프로세서는 상기 제 2 프로세서의 데이터 패스폭보다는 실제적으로 커다란 넓은 데이터 패스폭을 갖는 벡터 프로세서인 것을 특징으로 하는 컴퓨터 시스템.
  13. 제 9 항에 있어서,
    상기 복수개의 프로세서중 상기 제 1 프로세서상에서 동작하는 상기 인터럽트 및 예외 검출기는 검출된 예외에 응답하여 상기 제 1 프로세서를 아이들상태로 비활성화시키고, 상기 제 2 프로세서는 상기 제 1 프로세서가 아이들상태에 있을 때만 상기 제 1 프로세서의 제어 및 스태터스 레지스터들을 독출 및 기입억세스하도록 제한되는 것을 특징으로 하는 컴퓨터 시스템.
  14. 비대칭 프로세서들을 구비한 컴퓨터 시스템의 인터럽트 및 예외를 핸들링하는 방법에 있어서,
    제어되는 프로세서로서 상기 비대칭 프로세서들중 제1프로세서를 동작시키는 스텝과;
    제어하는 프로세서로서 상기 비대칭프로세서들중 제2프로세서를 동작시키는 스텝과;
    상기 제어하는 프로세서의 예외조건을 검출하는 스텝과;
    상기 제어되는 프로세서로부터 제어프로세서로, 상기 제어되는 프로세서의 예외조건을 나타내는 인터럽트 요구신호를 전송하는 스텝과;
    예외조건에 응답하여 상기 제어되는 프로세서를 아이들상태로 만드는 스텝과;
    상기 제어하는 프로세서를 동작시켜 상기 제어되는 프로세서의 예외조건을 핸들링하는 스텝을 포함하는 것을 특징으로 하는 인터럽트 및 예외 핸들링방법
  15. 제 14 항에 있어서,
    상기 컴퓨터 시스템의 리세트를 검출하는 스텝과;
    상기 컴퓨터 시스템의 리세트에 응답하여 상기 제어되는 프로세서를 아이들상태로 만드는 스텝을 더 포함하는 것을 특징으로 하는 인터럽트 및 예외 핸들링방법.
  16. 제 15 항에 있어서,
    상기 제어하는 프로세서를 동작시켜 상기 제어되는 프로세서의 예외조건을 핸들링하는 방법이,
    상기 제어되는 프로세서로부터의 인터럽트 요구신호에 응답하여 상기 제어되는 프로세서가 아이들상태일 때, 상기 제어하는 프로세서를 동작시켜 상기 제어되는 프로세서의 레지스터들을 초기화시키는 스텝과;
    상기 제어되는 프로세서의 레지스터들이 초기화될 때, 상기 제어하는 프로세서를 동작시켜 상기 제어되는 프로세서를 런상태로 활성화시키기 위한 명령을 실행시키는 스텝을 더 포함하는 것을 특징으로 하는 인터럽트 및 예외 핸들링방법.
  17. 제 16 항에 있어서,
    상기 제어하는 프로세서를 동작시켜 상기 제어되는 프로세서의 예외조건을 핸들링하는 스텝이,
    상기 제어하는 프로세서를 동작시켜 상기 제어되는 프로세서로부터 레지스터정보를 독출하는 스텝과;
    상기 레지스터 정보에 따라 예외형태를 결정하는 스텝과;
    상기 제어하는 프로세서를 동작시켜 예외형태에 따라 예외를 핸들링하는 스텝을 더 포함하는 것을 특징으로 하는 인터럽트 및 예외 핸들링방법.
  18. 제 14 항에 있어서,
    상기 제어되는 프로세서가 아이들상태에 있을 때 상기 제어하는 프로세서를 동작시켜 상기 제어되는 프로세서의 레지스터를 기입 및 독출하는 스텝을 더 포함하는 것을 특징으로 하는 인터럽트 및 예외 핸들링방법.
  19. 제 14 항에 있어서,
    단일의 운영체계를 사용하여 상기 제어하는 프로세서와 상기 제어되는 프로세서를 동작시키는 스텝과;
    상기 제어하는 프로세서와 상기 제어되는 프로세서의 상호 독립적인 명렬세트를 실행하는 스텝을 더 포함하는 것을 특징으로 하는 인터럽트 및 예외 핸들링방법.
  20. 제 14 항에 있어서,
    상기 제어되는 프로세서는 커다란 머신 스테이트 및 커다란 데이터 폭을 갖는 벡터 프로세서 또는 데이타 프로세서이고, 상기 제어하는 프로세서는 상기 제어되는 프로세서의 머신 스테이트와 데이터 폭보다는 실제적으로 작은 머신 스테이트와 데이터 폭을 갖는 제어 프로세서인 것을 특징으로 하는 인터럽트 및 예외 핸들링방법.
  21. 제어 프로세서와;
    상기 제어 프로세서에 연결되고, 상기 제어 프로세서에 비하여 커다란 머신 스테이트와 데이터 폭을 갖는 벡터 또는 데이터 프로세서와;
    상기 제어 프로세서와 상기 벡터 또는 데이터 프로세서사이에 연결된 코프로세서 인터페이스와;
    상기 벡터 또는 데이터 프로세서에 연결되고, 예외조건을 검출하고 예외조건검출에 응답하여 상기 제어프로세서로 인터럽트 요구를 송출하며상기 벡터 또는 데이터 프로세서를 아이들상태로 디스에이블시키는 예외 검출기와;
    상기 제어프로세서에 연결되며, 상기 인터럽트 요구를 받으며 상기 인터럽트 요구에 응답하여 상기 벡터 또는 데이터 프로세서의 예외조건을 핸들링하는 예외 핸들러를 포함하는 것을 특징으로 하는 멀티미디어 컴퓨터 시스템.
  22. 제 21 항에 있어서,
    상기 코프로세서 인터페이스가,
    상기 제어 프로세어와 상기 벡터 또는 데이터 프로세서에 의해 기입 및 독출가능한 복수개의 레지스터들과;
    상기 제어프로세서 명령세트의 명령을 디코딩하고 상기 코프로세서 인터페이스상에서 실행가능한 확장명령을 디코딩하는 디코더와;
    확장명령을 실행하기 위한 스테이드 머신을 포함하는 것을 특징으로 하는 멀티미디어 컴퓨터 시스템.
  23. 제 21 항에 있어서,
    상기 제어 프로세서와 상기 벡터 또는 데이터 프로세서는 상호 이와 제어 및 데이터 핸들링 특성을 갖는 것을 특징으로 하는 멀티미디어 컴퓨터 시스템.
  24. 제 23 항에 있어서,
    상기 제어프로세서는 정의된 데이터패스폭을 갖으며, 상기 벡터 또는 데이터 프로세서는 상기 제어 프로세서의 데이터 패스폭보다는 실제적으로 커다란 넓은 데이터 패스폭을 갖는 것을 특징으로 하는 멀티미디어 컴퓨터 시스템.
  25. 제 21 항에 있어서,
    상기 제어 프로세서에 연결되고, 상기 제어 프로세서의 동작을 제어하는 프로그램 코드를 구비한 호스트 컴퓨터를 더 포함하는 것을 특징으로 하는 멀티미디어 컴퓨터 시스템.
KR1019970012760A 1996-08-19 1997-04-07 비대칭 멀티프로세서 아키텍쳐의 인터럽트 및 예외사상을 핸들링하기 위한 시스템 및 방법 KR100257520B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/699,294 1996-08-19
US08/699,294 US6003129A (en) 1996-08-19 1996-08-19 System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture

Publications (2)

Publication Number Publication Date
KR19980018067A true KR19980018067A (ko) 1998-06-05
KR100257520B1 KR100257520B1 (ko) 2000-06-01

Family

ID=24808708

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970012760A KR100257520B1 (ko) 1996-08-19 1997-04-07 비대칭 멀티프로세서 아키텍쳐의 인터럽트 및 예외사상을 핸들링하기 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US6003129A (ko)
JP (1) JPH10154080A (ko)
KR (1) KR100257520B1 (ko)
CN (1) CN1176437B (ko)
DE (1) DE19735870A1 (ko)
FR (1) FR2752470B1 (ko)
TW (1) TW358919B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100807039B1 (ko) * 2006-04-07 2008-02-25 주식회사 퓨쳐시스템 비대칭 다중 프로세싱 시스템 및 그 방법

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192073B1 (en) 1996-08-19 2001-02-20 Samsung Electronics Co., Ltd. Methods and apparatus for processing video data
US5850556A (en) * 1996-12-26 1998-12-15 Cypress Semiconductor Corp. Interruptible state machine
US6317638B1 (en) * 1997-08-22 2001-11-13 Honeywell Inc. Multi-layer state machine for a hybrid real-time control system and method of operation thereof
US6571206B1 (en) * 1998-01-15 2003-05-27 Phoenix Technologies Ltd. Apparatus and method for emulating an I/O instruction for the correct processor and for servicing software SMI's in a multi-processor environment
US6625693B2 (en) * 1999-05-04 2003-09-23 Intel Corporation Fast exception processing
EP1059781B1 (de) * 1999-05-06 2007-09-05 Siemens Aktiengesellschaft Kommunikationseinrichtung mit Mitteln zur Echtzeitverarbeitung von zu übertragenden Nutzdaten
US7171547B1 (en) * 1999-12-28 2007-01-30 Intel Corporation Method and apparatus to save processor architectural state for later process resumption
US7080205B2 (en) * 2000-03-29 2006-07-18 Fujitsu Siemens Computer Gmbh Arrangement and method for reducing the processing time of a data processing device
DE10015693A1 (de) * 2000-03-29 2001-10-18 Fujitsu Siemens Computers Gmbh Anordnung und Verfahren zur Reduzierung der Interruptverarbeitungszeit einer Datenverarbeitungseinrichtung
US6704863B1 (en) * 2000-06-14 2004-03-09 Cypress Semiconductor Corp. Low-latency DMA handling in pipelined processors
JP2002108837A (ja) * 2000-09-29 2002-04-12 Nec Corp 計算機システムとその計算制御方法
US20020099893A1 (en) * 2001-01-24 2002-07-25 Nguyen Tuyet-Huong Thi System and method for the handling of system management interrupts in a multiprocessor computer system
US6832338B2 (en) * 2001-04-12 2004-12-14 International Business Machines Corporation Apparatus, method and computer program product for stopping processors without using non-maskable interrupts
JP3843048B2 (ja) * 2002-06-28 2006-11-08 富士通株式会社 分岐予測機構を有する情報処理装置
GB0226905D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Exception tyres within a secure processing system
US7117284B2 (en) * 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
US20040215937A1 (en) * 2003-04-23 2004-10-28 International Business Machines Corporation Dynamically share interrupt handling logic among multiple threads
CA2430763A1 (en) 2003-05-30 2004-11-30 Ibm Canada Limited - Ibm Canada Limitee Efficiently releasing locks when an exception occurs
US7313790B2 (en) * 2003-06-23 2007-12-25 Intel Corporation Methods and apparatus for preserving precise exceptions in code reordering by using control speculation
US20050102457A1 (en) * 2003-11-12 2005-05-12 Dell Products L.P. System and method for interrupt processing in a multiple processor system
US7721024B2 (en) * 2003-11-12 2010-05-18 Dell Products L.P. System and method for exiting from an interrupt mode in a multiple processor system
US7529914B2 (en) * 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions
US7487503B2 (en) 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US8020141B2 (en) 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
JP4148223B2 (ja) * 2005-01-28 2008-09-10 セイコーエプソン株式会社 プロセッサおよび情報処理方法
JP2006243838A (ja) * 2005-02-28 2006-09-14 Toshiba Corp プログラム開発装置
US8849968B2 (en) 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US7447874B1 (en) * 2005-10-18 2008-11-04 Qlogic, Corporation Method and system for designing a flexible hardware state machine
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US8032898B2 (en) * 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
CN100449495C (zh) * 2006-08-25 2009-01-07 华为技术有限公司 一种辅助cpu对芯片进行驱动的系统及方法
US20080244507A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Homogeneous Programming For Heterogeneous Multiprocessor Systems
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
DE102007025397B4 (de) * 2007-05-31 2010-07-15 Advanced Micro Devices, Inc., Sunnyvale System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
JP2009251802A (ja) * 2008-04-03 2009-10-29 Panasonic Corp マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法
KR101717494B1 (ko) * 2010-10-08 2017-03-28 삼성전자주식회사 인터럽트 처리 장치 및 방법
JP5395824B2 (ja) * 2011-02-16 2014-01-22 株式会社東芝 メモリシステム
MY164898A (en) 2011-09-29 2018-01-30 Sharp Kk Image decoding device, image decoding method, and image encoding device
CN103858430B (zh) * 2011-09-29 2017-05-03 夏普株式会社 图像解码装置、图像解码方法及图像编码装置
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US9329834B2 (en) * 2012-01-10 2016-05-03 Intel Corporation Intelligent parametric scratchap memory architecture
US9405551B2 (en) * 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US20160147536A1 (en) * 2014-11-24 2016-05-26 International Business Machines Corporation Transitioning the Processor Core from Thread to Lane Mode and Enabling Data Transfer Between the Two Modes
CN107436752B (zh) * 2017-07-20 2020-12-01 龙芯中科技术有限公司 异常现场恢复方法、装置及计算机可读存储介质
CN108037951B (zh) * 2017-12-27 2020-11-20 山东师范大学 一种dtp处理器的中断快速切换方法及装置
CN108845969B (zh) * 2018-03-28 2021-09-10 核工业理化工程研究院 适用于不完全对称多处理微控制器的操作控制方法及操作系统
GB2579617B (en) * 2018-12-06 2021-01-27 Advanced Risc Mach Ltd An apparatus and method for handling exception causing events
KR102575773B1 (ko) * 2021-03-29 2023-09-06 숭실대학교산학협력단 대칭적 인터페이스를 이용하여 외부 서비스 요청 처리가 가능한 프로세서
CN115167933B (zh) * 2022-09-08 2022-12-02 深圳市恒运昌真空技术有限公司 一种双处理器设备及其控制方法和处理器

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274825A (en) * 1987-09-03 1993-12-28 Bull Hn Information Systems Inc. Microprocessor vectored interrupts
US5182811A (en) * 1987-10-02 1993-01-26 Mitsubishi Denki Kabushiki Kaisha Exception, interrupt, and trap handling apparatus which fetches addressing and context data using a single instruction following an interrupt
JP2858140B2 (ja) * 1988-10-19 1999-02-17 アポロ・コンピューター・インコーポレーテッド パイプラインプロセッサ装置および方法
US5218711A (en) * 1989-05-15 1993-06-08 Mitsubishi Denki Kabushiki Kaisha Microprocessor having program counter registers for its coprocessors
US5278647A (en) * 1992-08-05 1994-01-11 At&T Bell Laboratories Video decoder using adaptive macroblock leak signals
US5319753A (en) * 1992-09-29 1994-06-07 Zilog, Inc. Queued interrupt mechanism with supplementary command/status/message information
US5576765A (en) * 1994-03-17 1996-11-19 International Business Machines, Corporation Video decoder
US5510842A (en) * 1994-05-04 1996-04-23 Matsushita Electric Corporation Of America Parallel architecture for a high definition television video decoder having multiple independent frame memories
US5729279A (en) * 1995-01-26 1998-03-17 Spectravision, Inc. Video distribution system
US5594905A (en) * 1995-04-12 1997-01-14 Microsoft Corporation Exception handler and method for handling interrupts
US5668599A (en) * 1996-03-19 1997-09-16 International Business Machines Corporation Memory management for an MPEG2 compliant decoder

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100807039B1 (ko) * 2006-04-07 2008-02-25 주식회사 퓨쳐시스템 비대칭 다중 프로세싱 시스템 및 그 방법

Also Published As

Publication number Publication date
TW358919B (en) 1999-05-21
US6003129A (en) 1999-12-14
CN1176437B (zh) 2010-06-02
DE19735870A1 (de) 1998-03-19
JPH10154080A (ja) 1998-06-09
CN1176437A (zh) 1998-03-18
FR2752470B1 (fr) 1999-06-11
KR100257520B1 (ko) 2000-06-01
FR2752470A1 (fr) 1998-02-20

Similar Documents

Publication Publication Date Title
KR100257520B1 (ko) 비대칭 멀티프로세서 아키텍쳐의 인터럽트 및 예외사상을 핸들링하기 위한 시스템 및 방법
KR100267090B1 (ko) 통과하는인수를갖는소프트웨어인터럽트를핸들링하기위한시스템및방법
KR100241063B1 (ko) 멀티타스킹 처리시스템 환경에서의 효율적인 콘텍스트 저장 및 복구장치 및 방법
CA2041507C (en) A high performance pipelined emulator
JP2834837B2 (ja) プログラマブルコントローラ
KR100563012B1 (ko) 처리기를보조처리기에인터페이스하는방법및그장치
US6076155A (en) Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets
US5440747A (en) Data processor with control logic for storing operation mode status and associated method
KR19980018070A (ko) 비대칭 싱글-칩 이중 멀티프로세서의 정합 및 동기화
JPH02155037A (ja) デジタルコンピュータに於けるパイプライン化された処理ユニットの動作方法
JP2002512399A (ja) 外部コプロセッサによりアクセス可能なコンテキストスイッチレジスタセットを備えたriscプロセッサ
US5263153A (en) Monitoring control flow in a microprocessor
JP2507638B2 (ja) デ―タ処理装置
JP2581236B2 (ja) データ処理装置
US5815701A (en) Computer method and apparatus which maintains context switching speed with a large number of registers and which improves interrupt processing time
US5966529A (en) Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution
JPH07120284B2 (ja) データ処理装置
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
JP4502532B2 (ja) データ処理装置
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
US5742755A (en) Error-handling circuit and method for memory address alignment double fault
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
JP2710994B2 (ja) データ処理装置
KR101669989B1 (ko) 파이프라인 프로세서 및 이퀄 모델 보존 방법
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置

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

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee