KR100308618B1 - 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법 - Google Patents

단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법 Download PDF

Info

Publication number
KR100308618B1
KR100308618B1 KR1019990006601A KR19990006601A KR100308618B1 KR 100308618 B1 KR100308618 B1 KR 100308618B1 KR 1019990006601 A KR1019990006601 A KR 1019990006601A KR 19990006601 A KR19990006601 A KR 19990006601A KR 100308618 B1 KR100308618 B1 KR 100308618B1
Authority
KR
South Korea
Prior art keywords
coprocessor
instruction
host
host processor
instructions
Prior art date
Application number
KR1019990006601A
Other languages
English (en)
Other versions
KR20000056866A (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 윤종용
Priority to KR1019990006601A priority Critical patent/KR100308618B1/ko
Priority to US09/417,667 priority patent/US6532530B1/en
Publication of KR20000056866A publication Critical patent/KR20000056866A/ko
Application granted granted Critical
Publication of KR100308618B1 publication Critical patent/KR100308618B1/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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data

Abstract

여기에 개시된 호스트 마이크로프로세서와 코프로세서와의 인터페이스를 위한 단일 칩 상에 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템에는, 효과적이고 강력한 코프로세서 인터페이스 구조와 함께 마이크로프로세서가 제공된다. 상기 마이크로프로세서는 그것의 명령 맵 상에 다수의 포괄적인 코프로세서 명령을 가질 뿐만 아니라 다수의 코어 핀 신호들을 가지는데, 이들 명령은 상기 코프로세서 인터페이스를 위해 사용된다. 코프로세서에 의존해서 상기 마이크로프로세서와 인터페이스 되는 상기 포괄적인 코프로세서 명령들은 특정 코프로세서 명령들로 지정된다. 코프로세서 명령이 상기 호스트 프로세서에 의해서 페치 되어서 디코딩 될 때, 상기 특정 명령은 상기 코프로세서 인터페이스 신호들을 통해서 상기 코프로세서로 제공되고, 그리고 상기 코프로세서는 요구된 작업을 수행한다. 그러므로 상기 호스트 프로세서와 인터페이스를 하는 상기 코프로세서는 자신의 프로그램 메모리를 갖지 않으므로 완전히 수동적으로 동작한다. 상기 코프로세서의 파이프라인은 상기 호스트 프로세서의 것과 완벽하게 동기되므로, 리소스 상에서 상기 호스트와 상기 코프로세서 간의 리소스 대립이 전혀 발생하지 않는다.

Description

단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법{PIPELINED DATA PROCESSING SYSTEM HAVING A MICROPROCESSOR-COPROCESSOR SYSTEM ON A SINGLE CHIP AND METHOD FOR INTERFACING HOST MICROPROCESSOR WITH COPROCESSOR}
본 발명은 데이터 처리 시스템에 관한 것으로, 좀 더 구체적으로는 코프로세서와 인터페이스를 하는 마이크로프로세서(또는 마이크로컨트롤러)의 구조에 관한 것이다. 또, 본 발명은 단일 칩 상에 구현되는 호스트 프로세서 및 코프로세서를 구비한 파이프라인 데이터 처리 시스템 및 특정 명령들의 사용에 의해서 상기 코프로세서와 함께 상기 호스트 프로세서와 효과적으로 인터페이스를 하는 방법에 관한것이다.
휴대용 전자 기기 시장의 급속한 발전과 더불어, VLSI(Very Large-Scale Integration) 회로 설계의 무게중심이 고속에서 저전력으로 이동하고 있다. 그러나, 현재의 마이크로프로세서에서도 고속 기능들은 여전히 필수 불가결하다. 특히, 멀티미디어 응용 분야들(multimedia applications)의 증가로 인해, RISC (Reduced Instruction Set Computer) 타입 프로세서, DSP(Digital Signal Processing) 장치들, 그래픽스 액셀러레이터들(graphics accelerators) 등에 있어서, 곱셈(multiplication)과 같은 복잡한 수학 계산 동작의 중요성이 더욱 증가하고 있다.
마이크로프로세서를 기반으로 한 시스템들의 성능 개선에 대한 요구가 증가함에 따라, 시스템 디자인은 더욱 복잡해져 가고 있다. 예컨대, 파이프라인 기술이 이미 보편적으로 이용되고 있다. 이 기술분야에서 잘 알려진 바와 같이, 프로세서의 동작은 기본이 되는 다수의 서브-오퍼레이션들로 분할된다.
도 1a를 참조하면, 비-파이프라인 모드(non-pipelined mode) 동작을 위한 명령(실행을 위해서 일반적으로 T-시간을 필요로 하는 명령)의 실행은, 도 1b에 도시된 바와 같이, 예를 들면 ST1, ST2 및 ST3(통상 '3-단 파이프라인'이라 함)과 같은 다수 개의 서브-오퍼레이션 단계들(suboperation stages)로 분할된다. 프로세서는, 이러한 방법으로 상기 파이프라인 명령의 각 서브-오퍼레이션은 미리 정해진 단계 타임 주기(stage time period)(Ts) 내에 완료될 수 있도록 분할된다. 이러한 분할로 인해, 명령 실행에 시간 T가 소요되었던 명령의 실행을 위해서는 3Ts가 필요하다.
상기 데이터 처리 유닛의 분할을 위해서 장치가 추가되기 때문에, 파이프라인 프로세서 내에서의 명령 실행에 필요한 시간은 비-파이프라인 프로세서 내에서의 그것보다 대체적으로 길다. 구체적으로, 도 1b에 도시된 상기 파이프라인 명령의 각 서브-오퍼레이션을 위한 시간(Ts)은 도 1a에 도시된 비-파이프라인 프로세서의 실행을 위한 시간(T)보다 짧기 때문에, 그리고, 각 서브-오퍼레이션을 개별적으로 수행하는 프로세서의 분할 덕분에, 파이프라인 유닛 내에서 명령은 비-파이프라인 모드(non-pipelined mode)의 시간(T) 이후가 아니라 바로 파이프라인 모드 시간(Ts) 이후에 곧 바로 시작될 수 있다.
그러므로, 상기 파이프라인 모드 오퍼레이션에서의 명령 시퀀스(instruction sequence)의 실행은, 각각의 개체 명령이 긴 타임 주기를 요구함에도 불구하고 신속히 처리될 수 있다. 상기 간격(Ts)은 상기 파이프라인 실행 유닛(pipelined execution unit) 내의 단계들 및 상기 명령들의 분할된 그룹 내에서 가장 시간을 소비하는 오퍼레이션의 수와 일치되도록 가능한 한 작게 선택한다.
최근 VLSI 기술의 발전으로 DSP 기술이 용이하게 실현될 수 있음에 따라 멀티미디어 DSP 성능을 구비한 전자 장치들이 많이 출현하고 있다. 심지어 민생 기기 산업(consumer electronics industry) 분야에서는 DSP가 신호 조작(signal manipulation)을 위한 흥미로운 해법으로서 간주되고 있다. 멀티미디어 DSP 성능을 가진 대부분의 소비자 전자 제품들은 신호 처리 알고리즘들을 위한 DSP 칩(DSP chip), 제어 오퍼레이션들을 위한 마이크로컨트롤러 및 휴먼 인터페이스(humaninterface)를 위한 I/O 오퍼레이션들을 개별적으로 가진다.
그러나, 마이크로프로세서(또는 마이크로컨트롤러)와 DSP 칩들의 분리는 비용(cost), 전력 소모(power consumption), 시스템 디자인의 복잡성(system design complexity) 및 시스템 신뢰성(system reliability)의 면에서 볼 때 많은 회로에 있어서 바람직하지 않다. 그러므로, 상기 SOC (System-On-a-Chip) 접근법(approach)은 칩 디자이너들(특히, ASIC 디자이너들)의 관심을 끌고 있다.
마이크로프로세서 코어(microprocessor core) 및 DSP 코어(DSP core)의 집적을 위한 간단한 해법은 단일 다이(single die)(즉, 제어 태스크를 위한 마이크로프로세서 코어 및 신호 처리 알고리즘들을 위한 DSP 코어) 상에 두 개의 독립적인 코어들을 만드는 것이다. 간단한 2-코어 접근법은 목표 회로(target application)에 가장 적합하도록, 마이크로프로세서 코어들 및 DSP 코어들의 특정 쌍을 임의의 회로로 선택하기 위한 융통성(flexibility)을 칩 디자이너들에게 제공할 수 있다. 그러나, 상기 접근법은 다음과 같은 몇 가지 결점들을 가지고 있다. 첫째, 프로그램 작성의 곤란(Ill Programmability, 코어들은 그들 고유의 프로그램과 데이터를 갖기 때문에 2 개의 프로그램을 작성, 관리함으로써 생기는 문제임), 둘째, 통신 비용(Communication Overhead, 리소스 충돌(resource conflicts), 오류 데이터 의존(false data dependencies) 및 데드락(deadlocks)들은 복잡한 구성(complex scheme)을 통해서 방지되어야 하므로), 그리고, 셋째, 상기 두 개의 코어들의 중복된 부분에 기인한 하드웨어 비용(Hardware Overhead; 이들은 하드웨어 비용 및 전력 소비를 번갈아 증가시킨다).
칩 상의 마이크로프로세서 및 DSP 성능을 지원하기 위한 또 하나의 방법은, 양쪽 모두의 성능을 가지는 단일 프로세서를 사용하는 것이다. 예를 들면, DSP 명령들을 구비한 마이크로프로세서, 또는 강력한 비트 조작 명령들 및 분기(branch) 명령들을 구비한 DSP 유닛이 이 범주에 속한다.
일반적으로, 거의 모든 전자 장치들에 있어서 마이크로프로세서 또는 마이크로컨트롤러는 필수적인 구성요소가 되고 있기 때문에 마이크로프로세서 주변이 SOC 집적화되고 있는 추세이다.
DSP 코프로세서 명령 및 인터페이스 스킴을 구비한 마이크로프로세서(즉, 호스트)를 갖춤으로써, 2-코어 접근법에 비해서 효율적인 통신이 이루어질 수 있는데(제어 및 DSP 기능들은 단일 프로세서 칩에서 수행되기 때문에), 이는 또한 단일 개발 환경(single development environment)을 제공한다. 이와 같은 접근법은 또한 상기 2-코어 접근법에 비해 다음과 같은 이점들을 갖는다. 예를 들면, 상기 호스트 프로세서의 코프로세서 명령들(coprocessor instructions)을 사용함으로써 DSP 프로그램들이 쉽게 기입될 수 있다는 것이고, 하드웨어 중복이 적기 때문에 하드웨어 비용을 줄일 수 있다는 것이다.
상술한 바와 같은 호스트-코프로세서(host-coprocessor) SOC 구조 내에서 전체 프로세싱 효율은 요소들(factors)의 수에 달려 있다. 상기 코프로세서의 계산 능력(computing capability) 및 상기 호스트와 코프로세서 사이의 정보 교환 능력(information exchange capability)들은 두 개의 주요 요소들이다. 전자는 그것이 얼마나 많은 명령들을 가졌는지, 그리고 얼마나 빨리 그것이 각각의 명령을실행하는지에 달려있는데, 이는 그것의 명세 사항(specification)에 의해서 완전히 한정된다. 그 결과 상기 코프로세서의 성능 향상은 비용 한계 내에서 원하는 명세 사항의 코프로세서 기능들을 채택함에 의해서 달성될 수 있다. 반면에, 후자는 상기 코프로세서 명세 사항보다는 상기 호스트 프로세서의 코프로세서 인터페이스 프로토콜에 의해서 거의 전적으로 영향을 받는다.
그러나, 종래의 호스트-코프로세서(host-coprocessor) SOC 기술들은, 코프로세서 성능을 향상시키기 위해서, 적절한 데이터 경로들과 함께 더욱 강력한 코프로세서 명령들이 호스트 프로세서에 추가되어야 한다는 것을 의미하는데, 이는 프로세서 칩을 새로 디자인하는 것이 요구된다. 반면에, 우수한 성능의 코프로세서와 함께라도, 만약 호스트와 코프로세서 사이의 정보 교환에 있어서 병목현상(bottleneck)이 있다면, 시스템 성능은 개선되지 않을 것이다. 계속해서 상기 정보 교환의 병목현상의 일례가 설명된다.
도 2는 전형적인 RISC 기반 호스트-코프로세서 시스템 내부에서 연이어 발생하는 세 개 명령들의 파이프라인 실행을 보여주는 타이밍도이다. 도 2에서 볼 수 있는 바와 같이, 여기서는 세 개의 명령들(I1, I2, I3)이 있다. 상기 RISC 명령 파이프라인은 이른바 3-단 파이프라인이고, 여기에서 각각의 명령들(I1, I2 또는 I3)은 세 단계들 즉, 명령 페치(Instruction Fetch; IF), 명령 디코드(Instruction Decode; ID) 및, 실행(Execution; EX) 단계들로 이루어진다.
명령에 대한 상기 세 단계들(IF, ID, EX) 각각은 클럭 신호(CLK)의 단일 사이클 내에 완료되지만, 이는 항상 그런 것은 아니다. 그 이유는 아래에서 상세히설명된다.
설명을 하기 위해서, 도 2에서, 제 1 명령(I1)은 호스트 프로세서 동작의 실행을 위한 호스트 프로세서 명령이라고 가정한다. 그리고, 다른 명령들(I2, I3)은 코프로세서 동작들의 실행을 위한 코프로세서 명령이라고 가정한다. 바꿔 말하면, 상기 제 1 명령(I1)은 코프로세서 인터페이스 없이 상기 호스트 프로세서 단독으로 실행될 준비가 되어 있고, 그리고 상기 제 2 및 제 3 명령(I2, I3)들은 호스트 명령(I2', I3')(명령들 I2, I3에 각각 대응되는)에 반응하는 상기 코프로세서에 의해서 실행되고, 코프로세서 인터페이스 신호들(INF)은 상기 코프로세서 명령들(I2, I3)의 디코딩 결과에 의존하는 상기 호스트 프로세서에 의해서 발생된다.
도 2를 참조하면, 먼저 상기 호스트 프로세서 명령(I1)은 T0 사이클 동안 페치(fetched)된다(즉, 명령(I1)은 프로그램 메모리(program memory)로부터 상기 호스트 프로세서로 독출된다). 다음 사이클(T1)에서, 상기 명령(I1)은 상기 호스트 프로세서에서 디코딩되고, 동시에 다음 코프로세서 명령(I2)이 페치된다. 상기 호스트 프로세서 명령(I1)은 T2 사이클 동안 호스트 프로세서에 의해서 실행되는데, 여기에서 상기 코프로세서 명령들(I2, I3)은 각각 동시에 디코딩되고 페치된다. T3 사이클 동안 호스트 프로세서는 상기 명령(I2)에 대응하는 코프로세서 명령(I2')을 발생하고, 상기 명령(I2)을 위해서 코프로세서 인터페이스 신호(INF)를 발생한다.
T3 사이클 동안, 코프로세서는 인터페이스 신호들(INF)의 제어 하에서 호스트 프로세서와 함께 인터페이스되고, 그리고 나서 호스트 프로세서로부터의명령(I2')의 디코딩을 완료한다. T4 사이클 동안, 상기 명령(I2')을 수행한다.
상기 명령(i2)과 관련된 명령(I2')의 실행으로 인하여, 상기 명령 파이프라인은 한 클럭 사이클동안 지연된다(stalling, 즉, 상기 명령(I3)의 실행 단계는 한 클럭 사이클 동안 일시적으로 중지되어야 하고, 그리고 나서 다음 T5 사이클 동안 실행되어야 한다). 따라서, 상기 코프로세서는 T5 사이클 동안 상기 명령(I3)에 대응하는 명령(I3')을 디코딩 할 수 있고, 그리고 상기 코프로세서에 의해서 다음 T6 사이클 동안 상기 명령(I3')이 실행될 수 있다.
상술한 바와 같이, 상기 코프로세서 명령들(I2, I3)에 각각 대응하는 코프로세서 명령들(즉, I2', I3')이 실행 단계(execution stages)에서 디코딩 되기 때문에 파이프라인의 지연(pipeline stalling)이 발생한다. 이러한 파이프라인 지연은 호스트와 코프로세서 사이의 정보 교환에 있어서 병목(bottleneck)으로 작용하여, 계산 속도 및 시스템 성능을 저하시킨다.
따라서, 본 발명의 목적은 멀티미디어 회로들에 적합한 저 전력, 저 비용, 고 성능 데이터 처리 시스템을 제공하는데 있다.
본 발명의 다른 목적은 파이프라인 모드 동작을 가지는 개선된 호스트 프로세서-코프로세서 SOC(system-on-a-chip)를 제공하는데 있다.
본 발명의 또 다른 목적은 효과적이고 강력한 코프로세서 인터페이스 구조를 구비한 호스트 프로세서-코프로세서 SOC를 제공하는데 있다.
본 발명의 또 다른 하나의 목적은 칩 상의 파이프라인 프로세서와 이것의 코프로세서와의 효과적인 인터페이스 방법을 제공하는데 있다.
도 1a 및 도 1b는 다중 서브-오퍼레이션(sub-operation)으로 명령 실행의 분할을 보여주는 도면;
도 2는 전형적인 RISC 기반 호스트 코프로세서 시스템의 파이프라인 실행의 일 예를 보여주는 타이밍도;
도 3은 본 발명의 바람직한 실시예에 따른 SOC 타입의 호스트-코프로세서 시스템의 구성을 보여주는 블럭도;
도 4는 도 3에 도시된 시스템의 파이프라인 실행을 보여주는 타이밍도;
도 5는 도 3에 도시된 상기 호스트-코프로세서 시스템의 상세 구성 및 3-단 파이프라인 동작 모드를 위한 이의 분할 구조를 보여주는 블럭도;
도 6은 도 5에 사용된 마스터 클럭 신호 및 내부 클럭 신호들을 보여주는 타이밍도;
도 7은 도 6에 도시된 코프로세서 명령 식별기를 상세히 보여주는 블럭도;
도 8a 및 8b는 도 7에 도시된 인터페이스 로직 회로의 상세 회로도로서, 도 8a는 래치 클럭 제너레이터 로직을 보여주고, 그리고 도 8b는 인터페이스 신호 제너레이터 로직을 보여주는 도면;
도 9는 도 5에 도시된 시스템의 코프로세서 작동 명령의 실행을 위한 타이밍도; 그리고
도 10은 도 5에 도시된 시스템의 데이터 전송 동작의 실행을 위한 타이밍도이다.
*도면의 주요 부분에 대한 부호의 설명*
10 : SOC 타입 호스트-코프로세서 시스템 30 : 호스트 프로세서
32 : 코프로세서 34 : 프로그램 메모리
36 : 데이터 메모리 38, 40a-40e : 버스
42 : 내부 클럭 발생 회로
상술한 바와 같은 목적을 달성하기 위한 본 발명의 특징에 의하면, 파이프라인 마이크로프로세서는: 명령을 페치하고, 명령의 명령 페치(IF) 사이클 동안 코프로세서 명령으로서 상기 페치된 명령이 식별될 때 상기 페치된 명령을 프리디코딩하는 파이프라인 마이크로프로세서 그리고, 부가적인 특정 기능들을 구성하기 위한 코프로세서에 의해서 제공된다. 상기 마이크로프로세서(호스트 프로세서)는 상기 페치된 명령에 대응하는 코프로세서 명령을 상기 코프로세서로 발생한다. 상기 코프로세서는 상기 명령의 명령 디코드/메모리 액세스(ID/MEM) 사이클 동안 상기 코프로세서 명령을 디코딩하고 그리고, 상기 디코딩 된 코프로세서 명령을 상기 페치된 명령의 명령 실행(EX) 사이클 동안 실행한다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 다른 특징에 의하면, 상기 코프로세서 명령이 상기 코프로세서 인터페이스 신호들을 통해서 상기 코프로세서로 전달될 때 상기 호스트 프로세서는 다수 개의 코프로세서 인터페이스 신호들(즉, A, B, C, D)을 발생한다. 그리고, 상기 코프로세서는 상기 실행(EX) 사이클 동안 상기 코프로세서 명령을 실행한 후 그것의 상태 데이터(status data)를 상기 호스트 프로세서로 제공한다. 데이터 메모리는 일반적으로 상기 호스트 프로세서와 상기 코프로세서 모두에 연결된다. 상기 코프로세서는 상기 호스트 프로세서에 의해서 지정된 시간 동안에만 상기 데이터 메모리를 액세스한다. 그리고, 내부 클럭 발생 회로는 상기 호스트 프로세서 및 상기 코프로세서를 위해 제공된다. 상기내부 클럭 발생 회로는 외부 클럭 신호에 동기되어 내부 클럭 신호들을 발생한다. 상기 호스트 프로세서는 내부 클럭 신호들 중 하나와 동기되어 상기 코프로세서 인터페이스 신호들을 발생한다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 또 다른 특징에 의하면, 상기 호스트 프로세서와 코프로세서를 구비한 파이프라인 데이터 처리 시스템 내의 특정 명령들을 실행하기 위해서, 만약 명령 페치(IF) 단계에서 페치된 명령이 코프로세서 명령이면, 상기 호스트 프로세서에 의해 제일 먼저 체크된다. 만일 상기 페치된 명령이 코프로세서 명령이면, 상기 호스트 프로세서는 명령 페치(IF) 단계에서 페치된 명령을 프리디코딩한다. 그리고 나서, 상기 호스트 프로세서는 디코드/메모리 액세스(ID/MEM) 단계에서 상기 페치된 명령에 대응하는 코프로세서 명령을 발생한다. 상기 코프로세서는 디코드/메모리 액세스(ID/MEM) 단계에서 상기 코프로세서 명령을 디코딩한다. 상기 코프로세서는 명령 실행(EX) 단계에서 상기 코프로세서 명령에 의해서 지정된 코프로세서 동작을 실행시킨다. 상기 코프로세서는 명령 실행(EX) 단계의 상기 코프로세서 동작의 상기 실행 이후에 코프로세서 상태 데이터를 제공하고, 그리고 상기 호스트 프로세서는 다음의 조건부 분기 명령을 위해 제공되는 상기 코프로세서 상태 데이터의 값을 결정한다.
(실시예)
본 발명에 따른 마이크로 프로세서(또는 마이크로 컨트롤러)는 효과적이고 강력한 코프로세서 인터페이스 구조를 가진다. 상기 인터페이스 구조는 저 전력 RISC 마이크로프로세서에 적용된다. 디자인에 있어서 이 구조의 핵심은 '효율성및 유연성'이다. 상기 특성들은 상대적으로 낮은 비트 폭(low bit width )(즉, 8 또는 16 비트)의 마이크로프로세서에 있어서 더욱 중요한데, 이의 목표는 소비자 전자 제품 시장(consumer electronics market) 및 완구 시장(toy market)과 같은 값싼 시장이다.
본 발명에 따른 상기 마이크로프로세서는, 그것의 명령 맵(instruction map)과 코어 핀 신호들(core pin signals)의 집합에 입각해서 일반적인 코프로세서 명령 집합을 가지는데, 이는 상기 코프로세서 인터페이스에 사용된다. DSP 유닛(들) 또는 부동-소수점(floating-point) 프로세서(들)와 같이 코프로세서(들)에 의존하는 것은 상기 호스트 프로세서(즉, 마이크로프로세서 또는 마이크로컨트롤러)와 인터페이스를 이루고, 일반적인 코프로세서 명령들은 특정 코프로세서 명령들로 다시 이름지워 진다.
코프로세서 명령이 페치되고 그리고 상기 호스트 프로세서에 의해서 프리디코딩될 때, 적절한 명령은 상기 코프로세서 인터페이스 신호들을 통해서 상기 코프로세서로 발생되고 상기 코프로세서는 상기 태스크(task)를 형성하는 것이 필요로 된다.
그러므로, 상기 호스트 프로세서 내의 상기 코프로세서(들)는 어느 정도는 아주 수동적이고, 이는 이것 고유의 프로그램 메모리를 가지지는 않는다. 상기 코프로세서의 파이프라인은 전적으로 호스트 프로세서의 파이프라인과 동기되고, 이는 상기 호스트와 상기 코프로세서 사이에서 리소스(resource)(즉, 데이터 메모리) 그 이상으로 어떠한 리소스 충돌도 없다는 것을 보증한다.
이하 본 발명에 따른 실시예를 첨부된 도면 도 3 내지 도 10을 참조하여 상세히 설명한다.
<마이크로프로세서 구조>
도 3은 본 발명에 의한 바람직한 실시예에 따른 SOC (system-on-a-chip) 타입의 호스트-코프로세서 시스템을 보여주는 블럭도이다. 도 3을 참조하면, 상기 SOC 타입 호스트-코프로세서 시스템(10)은 다목적용 마이크로컨트롤러 또는 마이크로프로세서와 같은 호스트 프로세서(30), 그리고 디지털 신호 처리 유닛(DSP) 및/또는 부동소수점 처리 유닛과 같은 코프로세서를 포함한다. 상기 호스트 프로세서(30)는 정규 제어 기능들(normal control functions)을 수행하고 상기 코프로세서는 부가적인 특정 기능들을 수행한다. 상기 시스템 유닛(10)은 또한 몇몇 내부 버스들(38, 40a-40d)을 포함한다. 상기 시스템(10)은, 상기 버스들(38, 40a-40d)을 통해서 ROM(read-only memory)과 같은 프로그램 메모리(34) 및 DRAM(dynamic random access memory)과 같은 데이터 메모리(36)와 연결된다. 상기 프로그램 및 데이터 메모리들(34, 36)은 각각 명령들(instructions) 및 데이터 항목들(data items)을 저장하기 위해 제공된다. 물론, 상기 프로그램 메모리(34)는 이 분야의 지식을 가진 자들에게 잘 알려진 바와 같이, 상기 시스템(10) 내에 구성될 수 있다. 상기 시스템(1)은 내부 클럭 발생 회로(42)를 더욱 포함하는데, 이는 외부로부터 인가되는 클럭 신호(CLK)(이른바, 마스터 클럭(master clock))를 받아들이고, 상기 외부 클럭 신호(CLK)에 동기되어 두 개의 내부 클럭 신호들(ψCLK1, ψCLK2)을 발생한다. 이의 타이밍도는 도 6에 도시되어 있다.
설명을 위해서, 상기 호스트 프로세서(30)가 8-비트 초 저 전력 매입 마이크로프로세서(ultra-low power embedded microprocessor)라 가정한다. 이는 레지스터-메모리(register-memory) 하버드(Harvard) RISC 구조에 채택된다. 상기 호스트 프로세서(30)는, 하버드 구조를 채택하기 때문에, 개별적인 데이터 메모리 어드레스 스페이스 및 프로그램 메모리 어드레스 스페이스를 가진다. 도 3에 도시되지는 않았지만, 상기 호스트 프로세서(30)는 16개의 범용 레지스터들(general purpose registers), 11개의 특수 목적 레지스터들(special purpose registers), 그리고 32-레벨 하드웨어 스택(hardware stack)을 포함하는 것으로 가정한다. 추가로, 프로그램 메모리 어드레스의 최대 스페이스는 1M 워드(20-비트 프로그램 어드레스 라인들)로 가정하고, 데이터 메모리 어드레스의 최대 스페이스는 64K 바이트(16-비트 데이터 어드레스 라인들)로 가정된다. 또한, 상기 코프로세서(32)는 16-비트 고정 소수점 DSP 처리기(fixed-point DSP coprocessor)로 가정되는데, 이는 가격에 민감한 저렴한 멀티미디어 DSP 장치들에 적용될 수 있다.
상기 호스트 프로세서(30)는 3 단계들, 즉 명령 페치(Instruction Fetch; IF), 명령 디코드/데이터 메모리 액세스(Instruction Decode and Data Memory Access; ID/MEM) 및 명령 실행(Execution; EX) 단계들로 구성된 파이프라인 방식을 가진다.
IF 단계에서, 명령은 상기 프로그램 메모리(34)로부터 페치되고, 상기 명령의 초기 디코딩(즉, 프리디코딩)이 수행되는데, 상기 페치된 명령이 코프로세서 명령인지 아닌 지의 여부가 상기 명령이 상기 호스트 프로세서(30)의 명령레지스터(instruction register ; IR)로 인가되기 전에 체크된다. ID/MEM 단계에서, 페치된 명령은 디코딩되고 ALU(arithmetic and logic unit) 오퍼랜드들(operands)은 상기 ALU 레지스터들(미 도시됨)로 래치된다. 데이터 메모리 액세스(data memory accesses), 하드웨어 스택 액세스(hardware stack accesses) 및 범용 레지스터 액세스(general-purpose register accesses)들 또한 ID/MEM 단계에서 실행된다. EX 단계에서, ALU 오퍼레이션(ALU operations) 및 라이트-백 오퍼레이션(write-back operations)들은 범용 레지스터에서 발생한다.
페치된 명령들이 코프로세서 명령으로서 식별될 때, 상기 호스트 프로세서(30)는 ID/MEM 기간 동안 상기 페치된 코프로세서 명령에 대응하는 몇몇 인터페이스 신호들(A(12 비트), B(1 비트), C(1 비트), D(1 비트))을 그것의 코프로세서(32)로 제공한다.
상기 A 신호는 즉치(卽値) 값(immediate value)으로서, 이는 상기 호스트 프로세서(30)와 상기 코프로세서(32) 사이의 데이터 전송을 위한 코프로세서 명령(coprocessor command) 또는 코프로세서 레지스터 어드레스를 나타낸다. 상기 코프로세서(32)는 상기 B 신호가 활성화 될 때, 상기 A 신호를 명령(command)으로 디코딩하고, 동시에 상기 C 신호가 활성화될 때 그것의 레지스터 어드레스로 디코딩한다. 데이터가 상기 호스트 프로세서(30)로부터 코프로세서(32)로 전송될 때(CO_WRITE 오퍼레이션으로 불림), 상기 D 신호는 비활성화된다(즉, 논리 하이 레벨). 상기 코프로세서(32)와 상기 호스트 프로세서(30) 사이에서의 데이터 전송은 그들의 공통 버스들(38, 40b, 40e)을 통해서 수행된다.
상기 코프로세서(32)는 명령 실행에 의존하는 그것의 상태 플래그 데이터(status flag data; E) (즉, 3 비트)를 EX 기간 동안 상기 호스트 프로세서(30)로 제공한다. 그러므로, 상기 호스트 프로세서(30)는 그것의 상태 오퍼레이션(conditional operation)을 위한 상태 플래그 데이터(E)를 어떤 부가적인 코프로세서 액세스 오퍼레이션 없이 즉시 사용할 수 있다. 이는 이후에 상세히 설명될 것이다.
<호스트 프로세서에서의 코프로세서 인터페이스>
코프로세서와 함께 호스트 프로세서의 인터페이스는 다음의 사항들을 면밀히 검토해야만 한다. 첫째, 호스트 프로세서 및 코프로세서 실행의 동기화(synchronization), 둘째, 코프로세서로의 명령(command)의 발생, 셋째, 호스트 프로세서 및 코프로세서 간의 데이터 전송, 그리고, 마지막으로, 호스트 프로세서로의 코프로세서 상태 표시(flagging).
멀티-프로세서 내에서 프로세서들간의 동기화 스킴(synchronization scheme)은 리소스 충돌(resource conflicts), 오류 데이터 의존(false data dependency) 및 데드락(deadlocks)을 피하기 위해 조심스럽게 디자인 되어야 한다. 특히, 두 개의 프로세서들이 독립적일 때 핸드쉐이크 스킴(handshake scheme)(요청/긍정응답) 또는 메일박스 스킴(mailbox scheme)들은 간단한 동기화 솔루션이다. 그러나, 그들은 효율성의 부재 및 하드웨어 오버헤드(hardware overhead)의 문제점이 있다.
반면에, 본 발명에 따른 호스트-코프로세서 시스템은, 코프로세서(32)가 어느 정도 수동적(또는 비-자율적)이기 때문에 동기화 오버헤드(synchronizationoverhead) 등을 줄일 수 있다. 이는 상기 호스트 프로세서(30)에 의해서 단지 계획된 시간(또는 사이클) 동안에 지정된 태스크(task)만을 수행하기 때문이다.
도 4는 도 3에 도시된 시스템 내에서 연속적인 세 개의 명령들의 파이프라인 실행을 보여주는 타이밍도이다. 코프로세서 명령은 초기에 식별되고, 그리고 IF 기간 동안 프리디코딩된다. 그리고 나서 상기 호스트 프로세서(30)는 ID/MEM 기간 동안에 코프로세서 명령의 프리디코딩된 정보에 기반을 둔 다수 개의 코프로세서 인터페이스 신호들(A, B, C, D)을 발생하는데, 그 동안 상기 호스트 프로세서(30)는 상기 인터페이스 신호들(A, B, C, D)을 상기 코프로세서(32)로 제공한다. 상기 코프로세서 명령 식별 및 프리디코딩 스킴(predecoding scheme)은 도 4를 참조하여 다음에서 상세히 설명될 것이다.
설명을 위해서, 도 4에서는 도 2와 동일하게, 상기 제 1 명령(I1)이 호스트 프로세서 오퍼레이션의 실행을 위한 호스트 프로세서 명령이라고 가정한다. 나머지 명령들(I2, I3)은 코프로세서 오퍼레이션들의 실행을 위한 코프로세서 명령들이라고 가정한다. 따라서, 상기 제 1 명령(I1)은 코프로세서 인터페이스 없이 상기 호스트 프로세서에 의해서만 실행되고, 반면에 상기 제 2 및 제 3 명령들은 호스트 명령들(host commands)(I2', I3'(I2 및 I3에 각각 대응되는))에 응답하는데, 이들 각각은 코프로세서 인터페이스 신호들(INF)(즉, A, B, C, d)에 인가된다. 상기 인터페이스 신호들(INF)은 각각의 코프로세서 명령(I2, I3)의 프리디코딩 결과에 의존하는 상기 호스트 프로세서(30)에 의해서 생성된다.
도 4를 참조하면, 상기 제 1 명령(I1)은 T0 사이클 동안에 페치 되는데 상기명령(I1)은 프로그램 메모리(34)로부터 호스트 프로세서(30)로 인가된다. 그에 따라, 상기 호스트 프로세서(30)는 페치된 명령(I1)이 코프로세서 명령인지 아닌 지의 여부를 확인한다.
다음 T1 사이클에서, 상기 페치된 명령(I1)이 어떤 코프로세서 명령도 아니기 때문에, 상기 명령(I1)은 T1 사이클 내에 상기 호스트 프로세서(30)에 의해서 디코딩된다. 동시에, 다음 명령(I2)은 페치되고, 이것이 코프로세서 명령인지 아닌지 결정된다. 그리고 나서 상기 호스트 프로세서(30)는 이것이 코프로세서 명령이기 때문에 상기 명령(I2)을 프리디코딩하고, 다수 개의 프리디코딩 신호들(도 5 참도)을 산출한다.
T2 사이클에서, 상기 호스트 프로세서 명령(I1) 및 다음 명령(I3)의 프리페치(prefetch)는 동시에 수행된다. 추가로, 상기 호스트 프로세서(30)는, 코프로세서 명령으로서 상기 명령(I3)을 식별하고, 상기 코프로세서 명령(I3)을 프리디코딩함으로써 다수 개의 프리디코딩 신호들을 처리한다. 상기 호스트 프로세서(30)는 상기 명령(I2)의 프리디코딩 결과에 의존하는 인터페이스 신호(INF) (즉, A, B, C, D)를 상기 코프로세서(32)로 제공함으로써 코프로세서 명령(coprocessor command; I2')을 발생한다. 그리고 나서 상기 코프로세서(32)는 상기 명령(I2')을 디코딩한다.
T3 사이클에서, 상기 명령(I2')는 상기 코프로세서(32)에 의해서 실행되고, 상기 호스트 프로세서(30)는 상기 명령(I3)의 상기 프리디코딩 결과에 기반을 둔 인터페이스 신호(INF) (즉, A, B, C, D)를 상기 코프로세서(32)로 제공함에 의해서코프로세서 명령(coprocessor command ; I3')을 발생한다. 따라서, 상기 코프로세서(32)는 상기 명령(I2')를 실행하면서, 상기 호스트 프로세서(30)로부터의 다음 명령(I3')을 디코딩한다.
T4 사이클에서, 상기 명령(I3')는 코프로세서(32)에 의해서 실행된다. 도 4에서는 세 개의 연속적인 명령들만을 보여주고 있지만, 상기 도면은 이전의 상기 명령(I1)과 다음의 명령(I3) 모두의 경향은 유사하게 존속된다.
상술한 바와 같이, IF 단계에서의 명령들의 프리디코딩은, T2 및 T3 사이클(즉, I2 및 I3 명령들에 대응하는 ID/MEM 단계들 내에서) 내에서 상기 코프로세서 명령들(I2' 및 I3')을 디코딩 하는 것을 가능하게 만들기 때문에, 상기 파이프라인 지연(pipeline stalling)이 일어나지 않고 상기 호스트 프로세서의 ID/MEM 및 EX 단계들이 코프로세서의 단계들에 대응됨에 의해서 완전하게 대치됨으로써, 그 결과 상기 작동 속도(operation speed)가 개선된다.
본 발명에 따른 호스트 프로세서(30)의 명령 맵(instruction map)에서, 몇몇 명령 스페이스는 표 1에 나타낸 바와 같이 코프로세서 인터페이스 명령들을 위해서 남겨둔다.
표 1. 코프로세서 인터페이스 명령들
Mnemonic Op1 Op2 Description
COP #imm:12 - Coprocessor Operation
CLD Reg #imm:8 Data transfer from coprocessor
CLD #imm:8 Reg Data transfer to coprocessor
JNZD Reg label Delayed jump when non zero with auto-decrement
JMPCALLLNK E<0-2> label Conditional branch with coprocessor status flags
상술한 바와 같이, 코프로세서 명령은 IF 단계에서 상기 호스트 프로세서(30)에 의해서 페치 및 프리디코딩되고, 상기 호스트 프로세서(30)는 ID/MEM 단계에서 상기 인터페이스 신호들( A (COMMAND/ADDRESS), B (COMMAND IDENTIFICATION), C (ADDRESS IDENTIFICATION), D (READ/WRITE IDENTIFICATION))을 통해서 상기 코프로세서(32)로 코프로세서 명령을 발생한다.
상기 명령(COP #imm:12)은 상기 코프로세서(32)가 즉치 값(#imm:12)에 의해서 지정된 특정 오퍼레이션을 수행하는 것을 요청하는 명령이다. 도 9는 상기 명령(COP #imm:12)의 실행을 위한 타이밍도를 보여주고 있다. 도 9를 참조하면, 만약 상기 명령(COP #imm:12)이 IF 단계에서 페치 된다면, 지정된 오퍼레이션을 수행하기 위해 코프로세서를 필요로 하는 12-비트 즉치 값(#imm:12)은 ID/MEM 단계에서 상기 명령/어드레스 신호(A)와 논리 로우 레벨에서 활성화되는 명령 식별 신호(B) 상에 인가된다. 상기 12-비트 즉치 (#imm:12)의 해석은 전적으로 상기 코프로세서(32)에 달려있다. 상기 12-비트 즉치 필드(field)의 배열에 따라서, 상기 코프로세서의 명령 집합이 결정된다. 다시 말하면, 상기 호스트 프로세서(30)는 단지 일반적인 코프로세서 명령들의 집합을 제공하고, 그리고 이것의 특정 코프로세서 명령 집합에 대한 예들은 코프로세서들끼리 서로 다를 수 있다. EX 단계에서, 상기 명령(COP #imm:12)의 실행 이후에, 이것의 상태 플래그들(status flags)에 따라, 코프로세서 상태 데이터(E)는 호스트 프로세서로 제공된다. 그 결과, 상기 호스트 프로세서는 다음의 조건부 분기 명령을 위해 상기 데이터(E)를 사용할 수 있다.
상기 명령('CLD Reg, #imm:8', 'CLD #imm:8, Reg')들은 호스트 프로세서와 코프로세서 사이의 데이터 교환(data exchange) 명령들인데, 여기서, Reg는 호스트 프로세서 레지스터(host processor register) 번호이고, #imm:8은 8-비트 즉치(卽値) 값을 나타내는데, 이는 코프로세서 레지스터 어드레스이다. 도 10은 상기 데이터 교환 명령들의 실행을 보여주는 타이밍도이다. 상기 명령(CLD Reg, #imm:8)은 CO_READ 명령이고, 상기 명령(CLD #imm:8, Reg)은 CO_WRITE 명령이다. 만약 상기 CO_READ 명령이 페치된다면, 상기 즉치 값(#imm:8)은 ID/MEM 단계에서 상기 명령/어드레스 신호(A) 및 논리 로우 레벨에서 활성화되는 상기 어드레스 식별 신호(C)에 인가된다. 상기 신호(C)는 상기 명령 식별 신호(B)가 비활성화 상태일 때 활성화되기 때문에, 상기 8-비트 즉치 값(#imm:8)은 어드레스로 식별된다. 이 때, 상기 기입/독출 식별 신호(D)는 논리 하이 상태를 유지한다. 그 결과, 상기 코프로세서(32)로부터의 데이터는 데이터 버스들을 통해서 상기 호스트 프로세서(30)로 전달된다. 이와 유사하게, 상기 CO_WRITED 명령이 페치될 때, 상기 즉치 값(#imm:8) 역시 상기 명령/어드레스 신호(A)와 ID/MEM 단계에서 논리 로우 상태로 활성화되는 상기 어드레스 식별 신호(C)에 인가된다. 활성화된 상기 신호(C)와 함께 상기 즉치 값(#imm:8)은 어드레스로서 역시 식별된다. 이 경우에 있어서, 상기 기입/독출 식별 신호(D)는 논리 로우 상태를 유지한다. 그 결과, 상기 호스트 프로세서(30)로부터의 데이터는 데이터 버스들을 통해서 상기 코프로세서(32)로 전달된다.
점프(jump ; JMP), 서브루틴 콜(subroutine call ; CALL),또는 링크(link ;LNK) 명령들은 조건부 분기 명령들이다. 상기 파이프라인의 EX 단계에서, 상기 코프로세서 명령의 상기 실행 이후에, 상기 호스트 프로세서(30)는 상기 코프로세서(32)로부터 코프로세서 상태 데이터(E) (즉, 부호, 오버플로우 및 제로 플래그들)를 직접 제공한다. 그 결과 상기 호스트 프로세서(30)는 부가적인 코프로세서 액세스 오퍼레이션 없이 JMP, CALL, 또는 LNK와 같은 다음의 잠정적 분기 명령들을 위한 상태 데이터를 이용할 수 있어서, 잠정적 분기 명령 실행 시간에 있어서 상당한 감소를 초래한다.
계속해서 도 5를 참조하면, 여기에는 3-단계 파이프라인으로서 동작하기 위해 구성된 상기 호스트 프로세서(30) 및 상기 코프로세서(32)의 블럭도가 나타나 있다.
상기 호스트 프로세서(30)는 명령 래치(50), 코프로세서 명령 식별자(coprocessor instruction identifier ; 52) 및 프로그램 카운터(70)를 포함하는데, 이는 명령들을 페치하기 위한 명령 페치 수단으로서 제공된다. 상기 프로그램 카운터(70)는 상기 프로그램 메모리(34)의 위치를 가리키는데, 여기서 명령은 페치되고 저장된다. 상기 명령 래치(50)는 상기 프로그램 메모리(34)로부터 페치된 명령을 래치한다. 상기 코프로세서 명령 식별자(52)는 상기 페치된 명령이 코프로세서 명령인지 아닌지를 체크하고, 페치된 명령이 상기 코프로세서 명령으로 식별되었을 때 페치된 명령을 프리디코딩하고, 그리고 페치된 명령의 다수 개의 프리디코딩 신호들(DCOP, DCLDW, DCLDR)을 발생한다.
상기 호스트 프로세서(30)는 ID/MEM 단계에서 명령 레지스터(instructionregister ; 54), 호스트 명령 디코더(host instruction decoder ; 56), 호스트 소스 레지스터들(host source registers ; 58) 및 코프로세서 인터페이스 유닛(coprocessor interface unit ; 154)을 더욱 포함한다. 상기 명령 레지스터(54)는 상기 명령 래치(50)에 연결된다. 상기 호스트 명령 디코더(56)는 상기 명령 레지스터(54) 및 상기 데이터 메모리(36)에 연결된다. 상기 호스트 소스 레지스터들(58)은 상기 호스트 명령 디코더(56) 및 상기 데이터 메모리(36)에 연결된다. 상기 코프로세서 인터페이스 유닛(154)은 상기 코프로세서 명령 식별자(52)에 연결된다. 상기 코프로세서 인터페이스 유닛(32)은 상기 프리디코딩 신호들(DCOP, DCLDW, DCLDR)에 응답해서 다수 개의 코프로세서 인터페이스 신호들(A, B, C, D)을 발생한다.
호스트 명령 실행 회로는, 상기 데이터 메모리(36) 및 호스트 소스 레지스터들(58)에 연결된 호스트 실행 유닛(host execution unit ; 62), 데이터 메모리(36) 및 호스트 실행 유닛(62)에 연결된 호스트 수신 레지스터(host destination register ; 64), 상기 호스트 실행 유닛(62)에 연결된 호스트 상태 레지스터(host status register ; 66), 그리고 호스트 상태 레지스터(66), 코프로세서(32) 및 프로그램 카운터(70)에 연결된 분기 조건 평가 유닛(branch condition evaluation unit ; 68)으로 이루어진다. 상기 분기 조건 평가 유닛(68)은 상기 호스트 프로세서(30) 및 상기 코프로세서(32) 모두의 상기 상태들(status)을 체크한다.
상기 코프로세서(32)는 단지 코프로세서 명령 디코드/메모리 액세스 회로(coprocessor instruction decode/memory access circuit) 및 코프로세서 명령실행 회로(coprocessor instruction execute circuit)만을 포함한다. 상기 코프로세서 명령 디코드/메모리 액세스 회로는 상기 호스트 명령 페치 회로 및 상기 데이터 메모리에 연결된다. 상기 코프로세서 명령 디코드/메모리 액세스 회로는, 상기 코프로세서 인터페이스 유닛(154) 및 상기 데이터 메모리(36)에 연결된 코프로세서 명령 디코더(coprocessor instruction decoder ; 156)와, 상기 코프로세서 명령 디코더(156) 및 상기 데이터 메모리(36)에 연결된 코프로세서 소스 레지스터들(coprocessor source registers ; 158)로 구성된다. 상기 코프로세서 명령 실행 회로는 상기 코프로세서 소스 레지스터들(158) 및 상기 데이터 메모리(36)에 연결된 코프로세서 실행 유닛(coprocessor execution unit ; 162), 상기 코프로세서 실행 유닛(162) 및 상기 데이터 메모리(36)에 연결된 코프로세서 수신 레지스터(a coprocessor destination register ; 164), 그리고 상기 코프로세서 실행 유닛(162) 및 상기 호스트 프로세서(30)의 상기 분기 조건 평가 유닛(166)에 연결된 호스트 상태 레지스터(host status register ; 166)로 구성된다.
IF 기간 동안, 상기 프로그램 카운터(70)에 의해 지정되는 명령은 상기 프로그램 메모리(34)로부터 페치되고, 그리고 상기 클럭 신호(ψCLK1)에 동기되어 상기 명령 래치(50)에 의해서 래치된다(도 6 참조). 상기 명령 래치(50)의 출력은 상기 코프로세서 명령 식별자(52)로 제공된다. 상기 코프로세서 명령 식별자(52)는 상기 페치된 명령이 코프로세서 명령인지 여부를 체크한다. 만약 상기 페치된 명령이 코프로세서 명령으로 식별되면, 상기 코프로세서 명령 식별자(52)는 상기 코프로세서 명령을 프리디코딩하고, 그리고 상기 프리디코딩 결과들에 의존하는 프리디코딩 신호들(DCOP, DCLDW, DCLDR)을 발생한다. 상기 신호(DCOP)는 상기 명령(COP #imm:12)이 페치 될 때 활성화된다. 상기 신호(DCLDW)는 상기 명령(CLD imm:8, Reg)이 페치 될 때 활성화되고, 그리고 상기 신호(DCLDR)는 상기 명령(CLD Reg, imm:8) 이 페치 될 때 활성화된다.
ID/MEM 단계에서, 상기 명령 레지스터(54)는 상기 클럭 신호(ψCLK2)에 동기되어 상기 명령 래치(50) (즉, 상기 페치된 명령)의 출력과 함께 적재(loaded)된다(도 6 참조). 만약 페치된 명령이 호스 명령이라면, 상기 호스트 명령 디코더(56)는 이를 디코딩하고, 그리고 만약 필요하다면, 상기 데이터 메모리(36) 및 상기 호스트 소스 레지스터들(58)을 통해서, 상기 명령에 의해 지정된 오퍼레이션의 실행을 위한 준비를 한다. 만약 상기 페치된 명령이 어떤 명확한 명령이 아니라면, 이것이 코프로세서 명령일 때, 상기 호스트 프로세서(30)는 이것의 오퍼레이션들 중 어느 것도 실행하지 않는다. 대신에, 상기 코프로세서 인터페이스 유닛(154)은 상기 코프로세서 명령 식별자(52)로부터 상기 프리디코딩 신호들(DCOP, DCLDW, DCLDR)을 받아들이고, 상기 코프로세서 인터페이스 신호들(A, B, C, D)을 발생함에 의해서 상기 페치된 코프로세서 명령에 대응되는 코프로세서 명령(coprocessor command)을 발생한다.
도 7을 참고로 하여, 상기 코프로세서 인터페이스 유닛(154)은 인터페이스 로직 회로(interface logic circuit ; 80) 및 네 개의 래치들(82, 84, 86, 88)을 포함한다. 상기 인터페이스 로직 회로(80)는 상기 코프로세서 명령 식별자(52)로부터의 상기 프리디코딩 신호들(DCOP, DCLDW, DCLDR)에 응답해서 상기 인터페이스신호들(B, C, D) 및 래치 클럭 신호들(ψA, ψB, ψC, ψD)을 발생한다. 상기 인터페이스 로직 회로(80)의 상세한 회로 구성들은 도 8a 및 도 8b에 도시되어 있다. 도 8a는 래치 클럭 발생 로직(latch clock generator logic)을 보여주고 있고, 도 8b는 인터페이스 신호 발생 로직(interface signal generator logic)을 보여주고 있다.
도 8a를 참고하면, 상기 래치 클럭 발생 로직에서, OR 게이트(202)는 세 개의 입력 단자를 가지는데, 이들은 상기 신호들(DCOP, DCLDW, DCLDR)을 각각 받아들인다. 상기 OR 게이트(202)의 출력은 AND 게이트(204)의 일입력 단자와 연결되고, AND 게이트(204)의 타입력 단자에는 상기 내부 클럭 발생 회로(42)로부터의 상기 클럭 신호(ψCLK2)가 제공된다(도 3 참조). 상기 AND 게이트(204)는 상기 래치(82)를 위한 클럭 신호(ψA)를 출력한다. 특히, 상기 클럭 신호(ψA)는 상기 클럭 신호(ψCLK2(또는 CLK))에 동기되고, 상기 인터페이스 신호(A)는 상기 신호들(DCOP, DCLDW, DCLDR)이 활성화 될 때만 발생되어, 상기 신호(A)의 빈번한 값의 변화에 의한 상기 전원 소비를 방지하게 된다. 상기 래치들(84, 86, 88)을 위한 각각의 클럭 신호들(ψB, ψC, ψD)은 상기 클럭 신호(ψCLK2)의 것과 같은 위상(phase)을 가진다. 다음으로 도 8b를 참조하면, 상기 인터페이스 신호 발생 로직은 인버터(an inverter ; 206)를 가지는데, 이는 상기 신호(DCOP)를 받아들이고 상기 인터페이스 신호(B)를 출력한다. 상기 인터페이스 발생 로직은 OR 게이트(208) 및 인버터(210)를 더욱 포함한다. 상기 OR 게이트(208)는 상기 신호들(DCLDW, DCLDR)을 각각 받아들이는 두 개의 입력 단자를 가지고, 상기인버터(210)에 연결된 출력 단자를 가진다. 상기 인버터(210)는 상기 인터페이스 신호(C)를 출력한다. 상기 신호(DCLDW)는 상기 인터페이스 신호(D)로서 직접 사용된다.
도 7을 참조하면, 상기 래치들(82-88)은 상기 래치 클럭 신호들(ψA-ψD)에 동기되어 상기 인터페이스 신호(A-D)를 각각 래치한다. 상기 도면에서 볼 수 있는 바와 같이 이는 자명하다. 상기 래치(82)는 상기 즉치 값(코프로세서 레지스터 어드레스 또는 코프로세서 명령과 같은)에 적재된 상기 명령 래치(50)로부터의 명령을 직접 래치한다.
다시 도 5를 참조하면, ID/MEM 단계에서, 상기 코프로세서 명령 디코더(156)는 상기 코프로세서 인터페이스 유닛(154)으로부터의 인터페이스 신호들(즉, 상기 코프로세서 명령)을 디코딩하는 것으로, 필요한 경우에 상기 데이터 메모리(36) 및 코프로세서 소스 레지스터(158)의 액세스함으로써 명령을 실행한다.
ALU (arithmetic and logic unit) 유닛 같은 호스트 실행 유닛(62), 부호, 올림수, 오버플로우, 제로 및 다른 플래그들과 같은 호스트 프로세서 상태 데이터를 저장하기 위한 호스트 상태 레지스터(66), 그리고 분기 조건 평가 유닛(68)이 EX 단계로 제공되는데, 상기 분기 조거 평가 유닛(68)은 상기 호스트 상태 레지스터(66)의 상태 플래그들(conditional flags)을 체크한다. 상기 호스트 레지스터 파일(host register file) 내의 어떤 호스트 수신 레지스터(64)는 상기 EX 단계와 관련된다. 이와 유사하게, 특정 연산-기능 유닛들(specific arithmetic-function units) 및 정규 연산-기능 유닛(normal arithmetic-function units)과 같은 코프로세서 실행 유닛(coprocessor execution unit ; 162), 상기 코프로세서 레지스터 파일 중의 어떤 코프로세서 수신 레지스터(coprocessor destination register), 그리고 코프로세서 상태 레지스터(coprocessor status register ; 166)들은 상기 코프로세서(32)로 제공된다. 이 단계에서, 상기 코프로세서 명령의 실행 이후에, 상기 분기 조건 평가 유닛(68)은 상기 코프로세서 상태 레지스터(164)로부터 코프로세서 상태 데이터(E) (즉, 부호, 오버플로우, 제로 플래그들)를 제공한다. 그 결과, 상기 호스트 프로세서(30)는 어떤 코프로세서 액세스 동작 없이, 점프(jump ; JMP), 서브루틴 콜(subroutine call ; CALL),또는 링크(link ; LNK)와 같은 다음의 조건부 분기 명령을 위해서 상기 상태 데이터를 사용할 수 있다. 이는 ID/MEM 기간에 생성된 상기 인터페이스 신호들과 함께 상기 호스트 프로세서(30) 및 상기 코프로세서(32)의 상기 파이프라인 오퍼레이션들과 동시에 발생되도록 해 준다.
반면에, 멀티-프로세서 시스템에 있어서, 프로세서들간의 상기 데이터 전송은 상기 모든 시스템의 효율성을 결정하는데 있어서 중요한 요소이다. 다른 프로세서들에 의해서 공유되는 상기 데이터를 위해, 만약 한 프로세서에 의해 입력 데이터 스트림(input data stream)이 용인된다면, 상기 프로세서들로 상기 데이터를 전달하기 위한, 다소 효과 있는 장치가 될 것이다.
멀티프로세서 시스템에 있어서, 데이터 전송들은 도 3과 같이 단일 공유 데이터 메모리(single shared data memory)를 통해서 이루어진다. 멀티프로세서 시스템 내부의 상기 공유 데이터 메모리는 데이터 위험들(data hazards) 및 데드락(deadlocks)과 같은 고유의 문제들이 다소 있다.
그러나, 본 발명의 상기 호스트-코프로세서 시스템(10)은 상기 호스트 프로세서(30)에 의해서 지정된 상기 시간에서만 상기 공유 데이터 메모리(36)를 액세스하는데, 이 때 상기 호스트 프로세서(30)는 상기 데이터 메모리(36)를 액세스하지 않는 것을 보증된다. 그 결과, 상기 공유 데이터 메모리(36)에 관한 논쟁점은 없다. 본 발명의 상기 호스트-코프로세서 인터페이스 스킴의 다른 하나의 이점은, 상기 코프로세서(32)가 그것 자신의 대역폭(bandwidth) 내에서 상기 데이터 메모리(36)를 액세스 할 수 있다는 것이다.
상기 호스트 프로세서(30) 및 코프로세서(32)를 포함하는 유일한 직통 데이터 전송은 CLD 명령들을 통한 것이다. CO_WRITE 명령들(CLD #imm:8, Reg)은 데이터 버스들 상의 호스트 프로세서(30)의 범용 레지스터의 용량에 두고, 상기 코프로세서 내부 레지스터의 상기 어드레스(#imm:8)를 상기 논리 로우 레벨에서 활성화되는 신호(C) 및 상기 논리 로우 레벨에서 활성화되는 신호(D)와 함께 상기 신호(A)로 발생한다. CO_READ 명령들(CLD Reg, #imm:8)은 상기 8-비트 즉치 값(immediate value)에 의해서 주소가 지정된 상기 코프로세서 내부 레지스터의 상기 용량이, 활성화된 상기 신호(C) 및 논리 하이 상태로 비활성화된 상기 신호(D)와 함께 데이터 버스들을 통해서 범용 레지스터로 독출되는 것을 제외하고는 유사하게 동작한다.
상기 코프로세서(32)는 수동적이고, 이는 이것 자체의 프로그램들을 가지지 않는다. 상기 코프로세서(32)의 상태(이는 상기 코프로세서 명령 실행의 결과일 수도 있음)에 의한 분기 동작을 수행하기 위해서, 호스트 프로세서는 조건부 분기 명령을 E<2:0> 신호들의 값에 직접적으로 관련지는데, 여기서 상기 코프로세서는이것의 상태들(JMP E<0-2>, CALL E<0-2>, LNK E<0-2>)을 만든다.
소수의 루프 명령들(loop instructions) 또는 전혀 없는 루프 제어 비용(loop control overhead)들은 DSP 프로그램에 있어서 중요하다. 왜냐하면, 그들이 루프 제어들을 위한 실행 시간의 중요한 부분들을 소비해버리기 때문이다. 루프 제어 비용을 줄이기 위해서, 상기 호스트 프로세서는 JNZD 명령을 더욱 포함한다. JNZD는 루프 파라미터(loop parameter) 및 분기(branch) 중 하나에 의해서 감소(decrement)를 실행한다. JNZD의 루프 제어 비용은 단지 1 사이클이고, 이는 명령 자체에 할당된다. 상기 루프 파라미터가 범용 레지스터들 중 어느 것이 될 수 있게 때문에, 루프 네스트 구성들(loop nestings) 역시 가능하다.
<코프로세서의 실시예>
16-비트 고정 소수점 DSP 처리기는 저가의 DSP 장치들을 위해서 상기 코프로세서(32)처럼 실행된다. 이는 호스트 프로세서(30)를 위해서 상기 DSP 코프로세서 엔진들(DSP coprocessor engines) 중 하나로서 디자인되는데, 이는 가격에 민감한 저가의 멀티미디어 DSP 장치들을 목표로 삼는다. 상기 DSP 데이터 타입 및 상기 DSP 어드레싱 모드를 포함하는 상기 일반적인 코프로세서 명령들은 상기 코프로세서(32) 상의 상기 계획된 명령들에 의해서 새로 이름 지워진다. 코프로세서 그 자신은 네 개의 유닛들, 즉 곱셈 유닛(Multiplier Unit ; MU), 연산 유닛(Arithmetic Unit; AU), RAM 포인터 유닛(RAM Pointer Unit ; RPU) 및 인터페이스 유닛(Interface Unit ; IU)으로 구성된다. 원래 곱셈 유닛(MU)은 MAC(multiply-and-accumulate) 연산을 위한 16-비트 병렬 곱셈기(16-bit parallel multiplier)및 24-비트 덧셈기(24-bit adder)에 의해서 24-비트를 만든다. 그러므로, 16-비트 MAC 연산에 의한 16-비트는 상기 코프로세서(32) 내에서 두 사이클 내에 수행된다. 연산 유닛(AU)은 DSP를 위한 16-비트 평가 및 쉬프트 연산(shift operations)을 수행한다. 상기 코프로세서의 RAM 포인터 유닛(RPU)은 상기 포인터 모듈로 평가(pointer modulo calculation)을 위한 3개의 데이터 메모리 포인터들과 2개의 제어 블록들로 이루어진다. 상기 포인터들은 16-비트 데이터 연산수(operand)를 위해서 상기 데이터 메모리(36)를 액세스하기 위해 사용된다. 두 개의 16-비트 데이터 연산수들이 MAC 연산을 위해서 단일 사이클 동안에 동시에 페치 될 수 있기 때문에, 상기 데이터 메모리(36)는 X 및 Y 메모리 두 부분으로 나뉘어 질 수 있다.
상기 코프로세서(32)가 상기 포인터를 통하여 액세스하는 상기 데이터 메모리(36)는 호스트 프로세서(30)가 액세스하는 데이터 메모리와 동일하다(도 3 참조). 앞에서 설명한 바와 같이, 상기 코프로세서(32)가 상기 코프로세서 대응되는 명령의 상기 ID/MEM 단계에서 액세스하기 때문에, 상기 데이터 메모리(36)에서의 충돌은 없다. 인터페이스 유닛(IU)은 상기 호스트 프로세서와 코프로세서 사이의 상기 통신(communication)을 위한 것이다. 이는 상기 디코딩 결과에 따라서, 상기 호스트 프로세서 및 다른 유닛들로부터의 상기 코프로세서 인터페이스 신호들을 디코딩 한다.
상기 코프로세서와 함께, N-탭 리얼 FIR 필터(N-tap real FIR filter) 및 LMS 어댑티브 필터(LMS adaptive filter)는 3N + X 사이클 및 8N + X 사이클로 실행된다. 여기서, X는 입력/출력을 위한 상기 부가적인 사이클이다. 상기 호스트프로세서(30) 및 코프로세서(32)는 0.5㎛ 더블 메탈 CMOS 프로세스(0.5 um double metal CMOS process)를 사용하여 실행될 수 있다. 상기 다이(die) 사이즈는 각각 약 0.85 및 0.6㎟ 이다. 상기 전력 소비는 3V에서 MIPS 당 0.10㎽ 및 0.24㎽ 이고, 그들은 20 MHz(약 20 MIPS)까지 될 수 있다.
상기 호스트-코프로세서 SOC는 디지털 컬러(digital caller) ID 응용의 상기 디자인에도 역시 사용될 수 있다. 호스트 + 코프로세서 플랫폼(host + coprocessor platform)을 사용함에 의해서, 상기 구성요소들의 전체 개수는 있는 그대로 최소 값까지 줄여질 수 있을 것이고, 그리고 상기 전체 전원 소비량은 최소가 될 수 있는데, 이는 상기 전체 전원 소비량은 전화 장치들의 핵심 요소이다.
DTMF (Dual Tone Multiple Frequency) 발생기, ID 추출(extraction)을 위한 FSK(Frequency Shift Keying) 디모듈레이터, 그리고 상기 컬러 ID 알고리즘의 CAS (CPE Alert Signal) 검출기 부분들은 코프로세서 상에 구성되고, 각각 0.2 MIPS, 0.7 MIPS 및 1.6 MIPS이 된다. DTMF, FSK 및 CAS의 상기 프로그램 메모리의 필요량은 각각 90, 580 및 512 바이트이다. 각각의 DSP 알고리즘은 배타적으로 작동되기 때문에, 상기 DSP 알고리즘들을 위한 상기 MIPS 필요량은 1.6 MIPS 이다. 호스트-코프로세서에 대한 상기 시스템 클럭은 5 MHz에서 구동되고, 이는 상기 DSP 오퍼레이션들은 물론 상기 마이크로컨트롤러 오퍼레이션들을 위한 충분한 컴퓨팅 전력을 제공한다. 그러므로, 상기 디지털 컬러 ID 응용을 위한 상기 호스트-코프로세서 시스템의 상기 전력 소모는 특정 프로세스 상태인 3V, 25도(degrees)에서 1.7㎽ 미만으로 개선된다. 상기 아날로그 프런트 엔드(front end)로서 10-비트 ADC(Analog to Digital Converter)가 사용되고, 그리고 이것의 전력 소모는 특정 프로세스 상태인 3V, 25도(degrees)에서 1.5 ㎽ 이다. 그러므로 마이크로컨트롤러를 위한 우리의 SOC 해법은 상기 디지털 컬러 ID 기능과 함께 특정 프로세스 상태인 3V, 25도(degrees)에서 4.0 ㎽ 보다 적게 소비되도록 추정된다.
이상에서, 본 발명에 따른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
이상과 같은 본 발명에 의하면, 마이크로프로세서 또는 마이크로 컨트롤러는 효율성 및 강력한 코프로세서 인터페이스 구조를 가진다. 이 인터페이스 구조는 상대적으로 낮은 비트 폭을 가지는 저 전력 RISC 코프로세서를 목표로 한다. 디자인에 있어서 상기 구조의 핵심은 '효율성 및 유연성'이다. 이것의 목적은 가격에 민감함은 물론 빠른 이동이기 때문에, 본 발명에 의한 상기 호스트-코프로세서 SOC 구조는 하드웨어, 전력 및 디자인의 유연성 관점으로부터의 효과를 가진다. 그리고, 상기 코프로세서는 상기 호스트 프로세서에 동기되기 때문에, 통신비용(communication overhead)이 거의 없다. 더욱이, 상기 코프로세서는 호스트 프로세서의 주변블록으로서 간주될 수 있기 때문에, 상기 프로세서 디자인 유연성 및 확장성을 증대하는 코프로세서의 특정 기능의 변경 또는 업그레이드가 요구될 때, 단지 상기 코프로세서(호스트 프로세서가 아님)만을 변경하는 것으로 가능하다.

Claims (20)

  1. 데이터 처리 시스템에 있어서:
    명령들을 저장하기 위한 프로그램 메모리와;
    정규 제어 기능들의 실행을 위해 상기 프로그램 메모리와 연결된 파이프라인 방식의 호스트 프로세서; 그리고
    부가적인 특정 기능들의 실행을 위해 상기 호스트 프로세서와 연결된 파이프라인 방식의 코프로세서를 포함하되,
    상기 호스트 프로세서는 상기 프로그램 메모리로부터 상기 명령들 중 하나를 페치하고, 상기 명령의 명령 페치 사이클 동안 상기 페치된 명령이 코프로세서 명령으로 식별될 때 상기 페치된 명령을 프리디코딩하고, 그리고 상기 페치된 명령에 대응하는 코프로세서 명령을 상기 코프로세서로 제공하고,
    상기 코프로세서는 명령의 명령 디코딩 사이클 동안 상기 코프로세서 명령을 디코딩하고, 명령의 명령 실행 사이클 동안 디코딩된 코프로세서 명령을 실행하는 것을 특징으로 하는 데이터 처리 시스템.
  2. 제 1 항에 있어서,
    상기 호스트 프로세서는,
    상기 페치된 명령이 상기 코프로세서 명령으로 식별 될 때 다수 개의 코프로세서 인터페이스 신호들을 발생하고, 그리고 상기 코프로세서 명령은 상기 코프로세서 인터페이스 신호들을 통해서 상기 코프로세서로 전송되는 것을 특징으로 하는 데이터 처리 시스템.
  3. 제 1 항에 있어서,
    상기 코프로세서는,
    상기 명령 실행 사이클 동안에, 상기 코프로세서 명령을 실행한 후 상기 코프로세서의 상태 데이터를 호스트 프로세서로 제공하는 것을 특징으로 하는 데이터 처리 시스템.
  4. 제 1 항에 있어서,
    상기 코프로세서는 디지털 신호 처리기(DSP) 기능을 가지는 것을 특징으로 하는 데이터 처리 시스템.
  5. 제 1 항에 있어서,
    상기 호스트 프로세서 및 상기 코프로세서 모두에 공통으로 연결된 데이터 메모리를 더욱 포함하되, 상기 코프로세서는 상기 호스트 프로세서에 의해서 지정된 시간 동안에만 상기 데이터 메모리를 액세스하고, 이때, 상기 호스트 프로세서는 상기 데이터 메모리를 액세스하지 않는 것이 보장되는 것을 특징으로 하는 데이터 처리 시스템.
  6. 제 1 항에 있어서,
    상기 코프로세서는,
    COP #imm 명령에 응답하되,
    상기 #imm는 즉치(卽値) 값이고, 그리고 상기 코프로세서는 상기 즉치 값(#imm)에 의해서 지정된 특정 오퍼레이션을 수행하는 것을 특징으로 하는 데이터 처리 시스템.
  7. 제 1 항에 있어서,
    상기 호스트 프로세서는,
    호스트 프로세서 레지스터 번호를 의미하는 Reg와 코프로세서 레지스터들의 어드레스를 지시하는 즉치 값인 #imm으로 이루어진 'CLD Reg, #imm' 명령에 응답하고, 그리고 상기 호스트 프로세서 레지스터 번호(Reg)에 의해 지정된 호스트 프로세서 레지스터 내에 저장된 데이터를 상기 즉치 값(#imm)에 의해 지정된 코프로세서 레지스터로 전송하는 것을 특징으로 하는 데이터 처리 시스템.
  8. 제 1 항에 있어서,
    상기 코프로세서는,
    호스트 프로세서 레지스터 번호를 의미하는 Reg와 코프로세서 레지스터들의 어드레스를 지시하는 즉치 값인 #imm으로 이루어진 'CLD #imm, Reg' 명령에 응답하고, 그리고 상기 즉치 값(#imm)에 의해서 지정된 코프로세서 레지스터에 저장된 데이터를 상기 호스트 프로세서 레지스터 번호(Reg)에 의해 지정된 호스트 프로세서 레지스터로 전송하는 것을 특징으로 하는 데이터 처리 시스템.
  9. 제 3 항에 있어서,
    상기 호스트 프로세서는, 상기 코프로세서 상태 데이터를 사용하는 조건부 분기 명령들을 수행하는 것을 특징으로 하는 데이터 처리 시스템.
  10. 데이터 처리 시스템에 있어서:
    명령들을 저장하기 위한 프로그램 메모리와;
    정규 제어 기능들의 실행을 위해 상기 프로그램 메모리와 연결된 파이프라인 방식의 호스트 프로세서와;
    부가적인 특정 기능들의 실행을 위해 상기 호스트 프로세서와 연결된 파이프라인 방식의 코프로세서; 그리고
    데이터 아이템들을 저장하기 위해 상기 호스트 프로세서 및 상기 코프로세서와 연결된 데이터 메모리를 포함하되,
    상기 호스트 프로세서는:
    하나의 명령을 페치하기 위한 상기 프로그램 메모리에 연결된 호스트 명령 페치 회로와;
    상기 호스트 명령 페치 회로는 페치된 명령이 코프로세서 명령인 지의 여부를 체크하고, 상기 페치된 명령이 상기 코프로세서 명령으로 식별될 때 프리디코딩하고, 그리고 상기 페치된 명령의다수 개의 프리디코딩 신호들을 발생하는 코프로세서 명령 식별자를 포함하고;
    상기 호스트 명령 페치 회로 및 상기 데이터 메모리와 연결된 호스트 명령어 디코드/메모리 액세스 회로와;
    상기 호스트 명령어 디코드/메모리 액세스 회로는, 상기 코프로세서 명령 식별자와 연결되고, 상기 프리디코딩된 신호들에 응답해서 다수 개의 코프로세서 인터페이스 신호들을 발생하는 코프로세서 인터페이스 유닛을 포함하고;
    상기 코프로세서는 상기 호스트 명령 페치 회로와 연결된 코프로세서 명령 디코드/메모리 액세스 회로를 포함하되, 상기 코프로세서 명령어 디코드/메모리 액세스 회로는, 상기 코프로세서 인터페이스 유닛 및 상기 데이터 메모리와 연결되고 상기 코프로세서 인터페이스 신호를 디코딩하는 코프로세서 명령 디코더를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  11. 제 10 항에 있어서,
    상기 호스트 프로세서는 상기 호스트 명령 디코드/메모리 액세스 회로 및 상기 데이터 메모리와 연결된 호스트 명령 실행 회로를 더욱 포함하되;
    상기 호스트 명령 실행 회로는,
    상기 호스트 소스 레지스터 및 상기 데이터 메모리와 연결된 호스트 실행 유닛과;
    상기 호스트 실행 유닛 및 상기 데이터 메모리와 연결된 호스트 수신 레지스터와;
    상기 호스트 실행 유닛과 연결된 호스트 상태 레지스터 및;
    상기 호스트 상태 레지스터, 상기 코프로세서 및, 상기 프로그램 카운터와 연결 연결되고, 상기 호스트 프로세서 및 상기 코프로세서의 상태를 체크하기 위한 분기 조건 평가 유닛을 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  12. 제 11 항에 있어서,
    상기 코프로세서는 상기 호스트 명령 디코드/메모리 액세스 수단 및 상기 데이터 메모리와 연결된 코프로세서 명령 실행 회로를 더욱 포함하되;
    상기 코프로세서 명령 실행 회로는,
    상기 코프로세서 소스 레지스터 및 상기 데이터 메모리와 연결된 코프로세서 실행 유닛과;
    상기 코프로세서실행 유닛 및 상기 데이터 메모리와 연결된 코프로세서 수신 레지스터 및;
    상기 코프로세서 실행 유닛 및 상기 분기 조건 평가 유닛과 연결된 호스트 상태 레지스터를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  13. 제 10 항에 있어서,
    외부 클럭 신호와 동기되어 내부 클럭 신호들을 발생하는 내부 클럭 발생 회로를 더욱 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  14. 제 13 항에 있어서,
    상기 코프로세서 명령 식별자는 상기 내부 클럭 신호들 가운데 하나와 동기되어 상기 코프로세서 인터페이스 신호들을 발생하는 것을 특징으로 하는 데이터 처리 시스템.
  15. 제 13 항에 있어서,
    상기 코프로세서 명령 식별자는,
    상기 내부 클럭 신호들 가운데 하나와 상기 프리디코딩된 신호들에 응답해서 다수 개의 래치 클럭 신호들을 발생하는 래치 클럭 발생 로직과;
    상기 프리디코딩된 신호들에 응답해서 상기 코프로세서 인터페이스 신호들을 발생하는 인터페이스 신호 발생 로직 및;
    상기 래치 클럭 신호들에 동기되어 상기 코프로세서 인터페이스 신호들을 래치하는 다수 개의 래치들을 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  16. 제 12 항에 있어서,
    상기 코프로세서는 상기 명령 실행 사이클 동안 상기 코프로세서 명령을 실행한 후, 상기 코프로세서의 상태 데이터를 상기 호스트 프로세서로 제공하는 것을 특징으로 하는 데이터 처리 시스템.
  17. 제 12 항에 있어서, 상기 코프로세서는 상기 호스트 프로세서에 의해서 정해진 시간 동안에만 상기 데이터 메모리를 액세스하고, 상기 호스트 프로세서는 상기 데이터 메모리를 액세스하지 않는 것이 보장되는 것을 특징으로 하는 데이터 처리 시스템.
  18. 제 16 항에 있어서,
    상기 호스트 프로세서는 상기 코프로세서 상태 데이터를 사용하는 조건부 분기 명령들을 수행하는 것을 특징으로 하는 데이터 처리 시스템.
  19. 명령 페치 단계, 명령 디코드/메모리 액세스 단계 및, 명령 실행 단계를 포함하는 호스트 프로세서 와 코프로세서를 구비한 파이프라인 데이터 처리 시스템 내의 특정 명령들을 실행하는 방법은:
    상기 명령 페치 단계에서 페치된 명령이 코프로세서 명령인 지의 여부를 체크하는 단계와;
    상기 명령 페치 단계에서 페치된 명령이 코프로세서 명령일 때 페치된 명령을 프리디코딩하는 단계와;
    상기 명령 디코드/메모리 액세스 단계에서 상기 페치된 명령에 대응하는 코프로세서 명령을 발생하는 단계와;
    상기 명령 디코드/메모리 액세스 단계에서 상기 코프로세서 명령을 디코딩하는 단계; 그리고
    상기 코프로세서 명령에 의해 지정된 코프로세서 오퍼레이션을 실행하는 단계를 포함하는 것을 특징으로 하는 호스트 프로세서 및 코프로세서를 구비한 파이프라인 구조의 데이터 처리 시스템 내의 특정 명령들을 실행하는 방법.
  20. 제 19 항에 있어서,
    다음 조건부 분기 명령을 제공하기 위해서 상기 코프로세서 오퍼레이션을 실행한 후 코프로세서 상태 데이터를 평가하는 단계를 부가적으로 포함하는 것을 특징으로 하는 호스트 프로세서 및 코프로세서를 구비한 파이프라인 구조의 데이터 처리 시스템 내의 특정 명령들을 실행하는 방법.
KR1019990006601A 1999-02-27 1999-02-27 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법 KR100308618B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019990006601A KR100308618B1 (ko) 1999-02-27 1999-02-27 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법
US09/417,667 US6532530B1 (en) 1999-02-27 1999-10-14 Data processing system and method for performing enhanced pipelined operations on instructions for normal and specific functions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990006601A KR100308618B1 (ko) 1999-02-27 1999-02-27 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법

Publications (2)

Publication Number Publication Date
KR20000056866A KR20000056866A (ko) 2000-09-15
KR100308618B1 true KR100308618B1 (ko) 2001-09-26

Family

ID=19575228

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990006601A KR100308618B1 (ko) 1999-02-27 1999-02-27 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법

Country Status (2)

Country Link
US (1) US6532530B1 (ko)
KR (1) KR100308618B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101032771B1 (ko) 2009-05-29 2011-05-06 광운대학교 산학협력단 구성형 프로세서에서 risc 명령어와 확장 명령어를 병렬 처리하기 위한 방법 및 그에 따른 구성형 프로세서

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505290B1 (en) * 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US7107302B1 (en) 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US6820189B1 (en) * 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6859872B1 (en) 1999-05-12 2005-02-22 Analog Devices, Inc. Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US7111155B1 (en) 1999-05-12 2006-09-19 Analog Devices, Inc. Digital signal processor computation core with input operand selection from operand bus for dual operations
TWI226015B (en) * 1999-08-31 2005-01-01 Matsushita Electric Ind Co Ltd Digital signal processor and control method of the same
GB2366426B (en) * 2000-04-12 2004-11-17 Ibm Coprocessor data processing system
JP4614500B2 (ja) * 2000-05-12 2011-01-19 富士通株式会社 メモリアクセス制御装置
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
US6832305B2 (en) * 2001-03-14 2004-12-14 Samsung Electronics Co., Ltd. Method and apparatus for executing coprocessor instructions
JP3495342B2 (ja) * 2001-04-26 2004-02-09 Necマイクロシステム株式会社 クロック分配回路
US6950929B2 (en) * 2001-05-24 2005-09-27 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device having a coprocessor
DE10235544B4 (de) * 2002-03-25 2013-04-04 Agere Systems Guardian Corp. Verfahren für eine verbesserte Datenkommunikation aufgrund einer verbesserten Datenverarbeitung innerhalb eines Senders/Empfängers
US7437535B1 (en) * 2002-04-04 2008-10-14 Applied Micro Circuits Corporation Method and apparatus for issuing a command to store an instruction and load resultant data in a microcontroller
US20040003018A1 (en) * 2002-06-26 2004-01-01 Pentkovski Vladimir M. Method and system for efficient handlings of serial and parallel java operations
US7038687B2 (en) * 2003-06-30 2006-05-02 Intel Corporation System and method for high-speed communications between an application processor and coprocessor
US7395410B2 (en) * 2004-07-06 2008-07-01 Matsushita Electric Industrial Co., Ltd. Processor system with an improved instruction decode control unit that controls data transfer between processor and coprocessor
JP3867804B2 (ja) * 2005-03-22 2007-01-17 セイコーエプソン株式会社 集積回路装置
CN100377068C (zh) * 2005-08-29 2008-03-26 硕颉科技股份有限公司 串行式存储器程序控制器
FR2893156B1 (fr) * 2005-11-04 2008-02-15 Commissariat Energie Atomique Procede et systeme de calcul intensif multitache et multiflot en temps reel.
US20080002702A1 (en) * 2006-06-30 2008-01-03 Symbol Technologies, Inc. Systems and methods for processing data packets using a multi-core abstraction layer (MCAL)
JP2008262437A (ja) * 2007-04-13 2008-10-30 Renesas Technology Corp プロセッサシステムおよび例外処理方法
KR100868677B1 (ko) * 2007-05-18 2008-11-13 한국과학기술원 데이터 처리 장치, 데이터 처리 시스템, 코프로세서 연결방법, 및 코프로세서 인터페이스 방법
JP2009054032A (ja) * 2007-08-28 2009-03-12 Toshiba Corp 並列プロセッサ
US20100332798A1 (en) * 2009-06-29 2010-12-30 International Business Machines Corporation Digital Processor and Method
US11119941B2 (en) 2017-10-31 2021-09-14 Hewlett Packard Enterprise Development Lp Capability enforcement controller
GB2570729B (en) * 2018-02-06 2022-04-06 Xmos Ltd Processing system
CN117193861B (zh) * 2023-11-07 2024-03-15 芯来智融半导体科技(上海)有限公司 指令处理方法、装置、计算机设备和存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2719926B1 (fr) * 1994-05-10 1996-06-07 Sgs Thomson Microelectronics Circuit électronique et procédé d'utilisation d'un coprocesseur.
US5790824A (en) * 1996-03-18 1998-08-04 Advanced Micro Devices, Inc. Central processing unit including a DSP function preprocessor which scans instruction sequences for DSP functions
US5968162A (en) * 1996-04-02 1999-10-19 Advanced Micro Devices, Inc. Microprocessor configured to route instructions of a second instruction set to a second execute unit in response to an escape instruction
US5721945A (en) * 1996-05-06 1998-02-24 Advanced Micro Devices Microprocessor configured to detect a DSP call instruction and to direct a DSP to execute a routine corresponding to the DSP call instruction
US5996058A (en) * 1996-08-19 1999-11-30 Samsung Electronics Company, Ltd. System and method for handling software interrupts with argument passing
JP3189727B2 (ja) * 1997-04-15 2001-07-16 日本電気株式会社 コプロセッサ内蔵パケット型メモリlsi、それを用いたメモリシステム及びそれらの制御方法
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US5923893A (en) * 1997-09-05 1999-07-13 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6279096B1 (en) * 1998-10-01 2001-08-21 Intelect Communications, Inc. Digital signal processing memory logic unit using PLA to modify address and data bus output values

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101032771B1 (ko) 2009-05-29 2011-05-06 광운대학교 산학협력단 구성형 프로세서에서 risc 명령어와 확장 명령어를 병렬 처리하기 위한 방법 및 그에 따른 구성형 프로세서

Also Published As

Publication number Publication date
KR20000056866A (ko) 2000-09-15
US6532530B1 (en) 2003-03-11

Similar Documents

Publication Publication Date Title
KR100308618B1 (ko) 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법
KR100563012B1 (ko) 처리기를보조처리기에인터페이스하는방법및그장치
US5961628A (en) Load and store unit for a vector processor
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
US5923893A (en) Method and apparatus for interfacing a processor to a coprocessor
US5752071A (en) Function coprocessor
US5983338A (en) Method and apparatus for interfacing a processor to a coprocessor for communicating register write information
US5864689A (en) Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction
US5487024A (en) Data processing system for hardware implementation of square operations and method therefor
US5226166A (en) Parallel operation processor with second command unit
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US6948049B2 (en) Data processing system and control method
JP4502532B2 (ja) データ処理装置
JP2002229779A (ja) 情報処理装置
US20210089305A1 (en) Instruction executing method and apparatus
JP2620505B2 (ja) スーパースカラ・プロセッサ・システムの同期化効率を向上させる方法およびシステム
JP2003263313A (ja) デジタルプロセッサおよび命令の選択方法
US6260136B1 (en) Substitute register for use in a high speed data processor
JPH06214785A (ja) マイクロプロセッサ
US20060095723A1 (en) Method and apparatus for interfacing a processor to a coprocessor
JP2636821B2 (ja) 並列処理装置
JP3102399B2 (ja) データ処理装置及び方法
JP2927281B2 (ja) 並列処理装置
JP2785820B2 (ja) 並列処理装置
JPH07191845A (ja) 即値データ転送装置

Legal Events

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

Payment date: 20120802

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20130731

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee