KR100423910B1 - 코프로세서 명령 실행 장치 및 방법 - Google Patents

코프로세서 명령 실행 장치 및 방법 Download PDF

Info

Publication number
KR100423910B1
KR100423910B1 KR10-2001-0027317A KR20010027317A KR100423910B1 KR 100423910 B1 KR100423910 B1 KR 100423910B1 KR 20010027317 A KR20010027317 A KR 20010027317A KR 100423910 B1 KR100423910 B1 KR 100423910B1
Authority
KR
South Korea
Prior art keywords
coprocessor
instruction
bits
instructions
main processor
Prior art date
Application number
KR10-2001-0027317A
Other languages
English (en)
Other versions
KR20020073233A (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 KR20020073233A publication Critical patent/KR20020073233A/ko
Application granted granted Critical
Publication of KR100423910B1 publication Critical patent/KR100423910B1/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/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

여기에 개시된 데이터 처리를 위한 메인 프로세서 및 코프로세서를 구비한 반도체 장치는, 메인 프로세서 명령들 및 코프로세서 명령들의 제 1 부분을 저장하기 위한 메인 프로그램 메모리와, 코프로세서 명령들의 제 2 부분을 저장하기 위한 코프로세서 프로그램 메모리, 그리고 메인 프로그램 메모리로부터 페치된 각 명령어의 적어도 한 비트를 프리디코딩하고, 코프로세서 타입 명령어를 프리디코딩하는 코프로세서 활성화 제어 클럭을 발생하기 위한 프리디코더를 포함한다. 여기서, 코프로세서 명령들의 제 2 부분은 코프로세서 프로그램 메모리로부터 직접 페치되고, 코프로세서 명령들의 제 1 및 제 2 부분은 코프로세서 활성화 제어 클럭을 받아들인 코프로세서에 의해 처리된다.

Description

코프로세서 명령 실행 장치 및 방법{METHOD AND APPARATUS FOR EXECUTING COPROCESSOR INSTRUCTIONS}
본 발명은 데이터 처리를 위한 메인 프로세서(main processor) 및 코프로세서(coprocessor)를 구비한 반도체 장치(semiconductor device)에 관한 것으로, 좀 더 구체적으로는 다른 타입의 명령어들(instructions)을 저장하기 위한 메인 프로그램 메모리(main program memory) 및 코프로세서 프로그램 메모리(coprocessor program memory)를 구비한 반도체 장치에 관한 것이다.
중앙처리장치(central processing unit ; CPU) 또는 메인 프로세서를 구비한 데이터 처리 장치(data processing device)에 있어서, 메인 프로세서와 구별되어 코프로세서라 불리는 마이크로프로세서(microprocessor)는, CPU가 수행할 수 없거나 CPU가 잘 그리고/또는 빨리 수행할 수 없는 특정 기능들을 수행하기 위해 사용된다. 예를 들어, FPU(floating point unit)와 같은 코프로세서는 주로 부동 소수점 연산(floating-point operations), 벡터 연산(vector operations) 및 스칼라 연산들(scalar operations)을 수행하기 위해 사용되는 특수 목적 프로세서(special purpose coprocessor)이다.
CPU가 이와 같은 기능들을 수행하는 것이 가능할 때, 코프로세서는 이와 같은 기능들을 더 빨리 수행할 수 있다. 이 경우, 명령어들, 입/출력 데이터 및 제어 프로그램 시퀀스들(control program sequences)을 페치하는 것 대신에 CPU가 사용된다. CPU는, 메인 프로세서는 물론 코프로세서를 위한 모든 명령어들 및 오퍼랜드들(operands)을 실제로 페치한다. 코프로세서는 CPU에 의해 페치되고 디코딩된 명령어 내에 명기된 동작들을 수행한다. 만약 이 명령어가 데이터 입/출력 동작에 관한 것이라면, CPU는 데이터를 입력 또는 출력하기 위해 코프로세서를 제어한다. CPU가 코프로세서 파이프라인 동작(pipelining)까지 제어하는 것은 그다지 드문 일은 아니다. 즉, 코프로세서가 코프로세서 동작들을 수행하는 동안, CPU는 CPU 및 코프로세서 명령어들을 페치한다.
일반적인 데이터 처리 장치에 있어서, 파이프라인, 즉 CPU 명령어들과 코프로세서 명령어들 모두의 실행을 오버랩 하는 것은 어려울 지도 모른다. 왜냐하면, 코프로세서는 CPU 페치 이후에 코프로세서 명령어들을 받아들이고 프로세서 명령어들을 디코딩하기 때문이다. 데이터 프로세서 내에 파이프라인을 구성하는 종래의 방법에는 두 가지가 있다. 두 가지 방법 중 첫 번째 방법에서 CPU와 코프로세서는 동일한 파이프라인을 사용하고, 두 번째 방법에서 CPU와 코프로세서는 각기 다른 파이프라인을 사용한다. 코프로세서는 CPU로부터 전송된 명령어를 받아들이고 디코딩한다. 이러한 코프로세서 디코딩 사이클은 시간 소비적이고, 그 주기(cycle)는 파이프라인 처리의 임계 시간 경로(critical timing path)가 되기 쉬운 가능성이 있다. 두 번째 방법에 있어서, 비록 첫 번째 방법의 임계 경로(critical path) 문제가 덜 까다롭다 할지라도, 인터럽트(interrupt) 또는 예외 동작(exception operation)의 경우 정확한 인터럽트를 유지하기 위해서는 CPU에 의한 버거운 관리를 필요로 한다. 데이터 버스 폭(data bus width)과 코프로세서의 명령어 비트 길이(instruction bit length)는 CPU의 것보다 대체로 넓고 길다. 그러므로, 만약 CPU가 코프로세서 명령어를 페치한다면, 하나의 명령어가 CPU에 의해 완전히 페치될 때까지 CPU는 코프로세서 명령어 페치 주기를 몇 번 반복해야만 하기 때문에, 파이프라인 처리의 주기 손실(cycle loss)(즉, stall)이 발생될 수 있다. 따라서, 이와 같은 방식은 파이프라인 제어와 인터럽트 동작을 위한 복잡도를 증가시킨다.
그러므로, CPU 및 코프로세서 명령어들을 효과적이고 빠르게 페치할 수 있는 데이터 프로세서가 요구된다. 그리고, 단일 파이프라인 스트림에 다른 타입들의 명령어들을 실행하기 위해서 메인 프로세서와 코프로세서가 타이트하게 결합된 데이터 처리 시스템 또한 요구된다.
따라서, 본 발명의 목적은 메인 프로세서의 동일한 명령어 페치 주기 내에서 코프로세서 자체의 데이터 버스와 메모리를 통해 자체 명령어를 완전하게 페치할 수 있는 데이터 처리 장치를 제공하는데 있다.
도 1은 본 발명의 제 1 실시예에 의한 메인 프로세서 및 코프로세서를 구비한 데이터처리 시스템을 보여주기 위한 블록도;
도 2는 도 1에 도시된 시스템의 명령 페치 동작을 보여주기 위한 타이밍도;
도 3은 본 발명의 제 2 실시예에 의한 데이터처리 시스템을 보여주기 위한 블록도;
도 4는 본 발명의 제 3 실시예에 의한 데이터처리 시스템을 보여주기 위한 블록도; 그리고
도 5는 본 발명의 일 실시예에 의한 코프로세서 명령의 배치를 보여주기 위한 분포도.
*도면의 주요 부분에 대한 부호의 설명*
110 : CPU 111 : CPU 명령 페치 버퍼
113 : 프리디코더 114 : CPU 명령 레지스터
120 : 코프로세서 121 : 코프로세서 명령 레지스터
123 : 디코더 126 : 코프로세서 명령 페치 버퍼
128 : 실행 유닛 140 : 메인 프로그램 메모리
160 : 코프로세서 프로그램 메모리 170 : 디코더
메인 프로세서와, 코프로세서 명령어들을 페치하기 위한 자체 데이터 버스를 구비한 코프로세서를 구비한 데이터 장치가 제공된다. 본 발명의 특징에 의하면, 코프로세서 프로그램 메모리는 코프로세서 명령어들을 저장하는데 사용되고, 프리디코더는 메인 프로세서에 의해 페치된 명령어를 프리디코딩하기 위해 제공된다.
본 발명의 목적은 메인 프로세서의 동일한 명령어 페치 주기 내에서 코프로세서 자체의 데이터 버스와 메모리를 통해 자체 명령어를 완전하게 페치할 수 있는데이터 처리 장치를 제공하는데 있다.
본 발명의 특징에 의하면, 데이터 처리를 위한 메인 프로세서 및 코프로세서를 구비한 반도체 장치는, 메인 프로세서 명령들 및 코프로세서 명령들의 제 1 부분을 저장하기 위한 메인 프로그램 메모리와, 코프로세서 명령들의 제 2 부분을 저장하기 위한 코프로세서 프로그램 메모리, 그리고 메인 프로그램 메모리로부터 페치된 각 명령어의 적어도 한 비트를 프리디코딩하고, 코프로세서 명령어인 경우 코프로세서 활성화 제어 클럭(active coprocessor control signal)을 발생하기 위한 프리디코더를 포함한다. 여기서, 코프로세서 명령들의 제 2 부분은 코프로세서 프로그램 메모리로부터 직접 페치되고, 코프로세서 명령들의 제 1 및 제 2 부분은 코프로세서 활성화 제어 클럭을 받아들인 코프로세서에 의해 처리된다.
코프로세서 활성화 제어 클럭과 메인 프로세서는 가급적 시스템 클럭(system clock)과 동기된다. 메인 프로세서 명령어들은 m 비트이고 코프로세서 명령어들은 m+n 비트이며, 코프로세서 프로그램 메모리 내에 저장된 n 비트이다. 여기서, 메인 프로세서 명령어의 m 비트는 메인 프로세서에 의해 메인 프로그램 메모리로부터 페치되고, 메인 프로세서의 명령어 페치 버퍼에 의해 버퍼링된 후 코프로세서로 보내진다. m 비트는, 될 수 있으면 코프로세서로 포워드 되기 이전에 메인 프로세서 내의 명령어 레지스터를 통해 보내진다.
본 발명의 다른 특징에 의하면, m 비트들은 메인 프로그램 메모리로부터 코프로세서로 직접 포워드 된다. 그리고, n 비트는 코프로세서 프로그램 메모리로부터 코프로세서로 직접 포워드 된다.
m 비트 명령어들을 실행하기 위한 메인 프로세서, 그리고 m+n 비트 코프로세서 명령어들을 수행하기 위한 코프로세서를 구비한 반도체 장치 내에서의 데이터 처리 방법은, 프로그램 어드레스에 의해 어드레스가 지정된 메인 프로그램으로부터 m 비트 명령어를 메인 프로세서에 의해 페칭하는 단계, 그리고 메인 프로세서에 의해 미리 정해진 코프로세서 코드가 디코딩된 프로그램 어드레스에 의해 어드레스가 지정된 코프로세서 프로그램 메모리로부터 n 비트 명령어를 코프로세서에 의해 페칭하는 단계를 포함한다.
바람직한 실시예에 있어서, 코프로세서 코드를 디코딩하는 단계는 메인 프로세서의 프리디코더에 의해 수행된다. 프리디코더는 코프로세서 동작 신호를 보내기 위해 배치된 m 비트 중 적어도 한 비트를 디코딩하고, 메인 프로세서 및 코프로세서에 의한 페칭 단계는 가급적 시스템 클럭에 동기되고, 메인 프로세서 및 코프로세서에 의한 페칭은 시스템 클럭 주기 내에 발생된다.
되도록 이면 메인 메모리로부터 페치된 m 비트 명령어는 m+n 비트 코프로세서 명령어를 형성하기 위해서 코프로세서로 포워드 된다.
(실시예)
이하 본 발명에 따른 실시예를 첨부된 도면 도 1 내지 도 5를 참조하여 상세히 설명한다.
아래 설명 및 도면에는 잘 알려져 있는 구성 요소의 구조, 회로 블록들, 그리고 구조적인 기능들은, 본 발명이 불분명해지는 것을 방지하기 위해 상세히 설명되지 않을 것이다. 그리고, 통상적으로, 시간에 대한 고려를 염두에 둔 세부 내용들은 사실상 거의 생략될 것이다. 이와 같은 세부 내용들은 이 분야에 대한 통상의 지식을 가진 이들이 본 발명을 완전히 이해하는 데 있어서 필요치 않은 부분이다. 본 발명은 하기에서 첨부된 도면들을 참조하여 상세히 설명될 것이다.
도 1은 다른 타입의 명령어들을 실행하기 위해 다른 프로세서들을 구비한, 본 발명에 의한 데이터 처리 시스템(100)을 보여주고 있다. 메인 프로세서(이하 CPU라 칭함)(110)는, 코프로세서(120)가 부동 소수점 연산(floating-point operations), 벡터 연산(vector operations), 스칼라 연산들(scalar operations) 등과 같은 수학 연산들(mathematical calculations)을 포함하는 코프로세서 명령어들을 실행하는 동안 CPU 명령어들을 실행한다. 데이터 처리 시스템은, 페칭(fetching), 디코딩(decoding), 실행(executing), 메모리 주기(memory cycle), 라이트 백 주기(write back cycle)의 5 단계 파이프라인을 가진다. 데이터 처리 장치의 버스 구조는, 잘 알려진 하버드 구조(Harvard structure)를 가진다. 이 구조는 페치 및 메모리 억세스를 한 주기(cycle)에 실행한다.
본 발명의 바람직한 실시예에 의하면, CPU(110)는 메인 프로그램 메모리(main program memory : MPM)(140) 내에 저장된 명령어를 페치함에 의해서 새로운 명령어를 실행한다. 16 비트 어드레스는, 어드레스 버스(130)를 통해 메인 프로그램 메모리(140)와 코프로세서 프로그램 메모리(coprocessor program memory ; CPM)(160)로 보내진다. 프로그램 메모리(140)와 코프로세서 프로그램 메모리(160)는, 어드레스가 지정된 명령어를 메인 프로그램 버스(Main Program Bus ; 180)와 코프로세서 프로그램 버스(Coprocessor Program Bus ; 190) 각각으로 출력한다. 그리고, 프로그램 메모리(140)로부터 독출된 명령어는 CPU 페치 버퍼(CPU fetch buffer ; 111)로 버퍼링된 후, CPU(110)의 명령 레지스터(Instruction Register ; IR)(114)으로 래치 된다. 코프로세서 프로그램 메모리(160)로부터 독출된 코프로세서명령어는 n 비트로서, 바람직하게는 16비트로 구성된다. 이 명령어는 전체 코프로세서 명령어의 최하위 비트부(LSB portion)를 나타낸다. n 비트 명령어는, 코프로세서 페치 버퍼(coprocessor fetch buffer ; 126)에 의해 버퍼링된 후, 코프로세서(120)의 코프로세서 명령어 레지스터(121)에 의해 래치 된다. 코프로세서 명령어 레지스터(121)의 래치 동작은 시스템 클럭(system clock)과 동기될 것이다. 이 과정은 아래에서 상세히 설명될 것이다. 이 분야에서 잘 알려져 있는 바와 같이, 코프로세서 타입 명령어들은 명령어의 'c' 최상위 비트들(most significant bits ; MSBs) 내에 시그널링될 수 있다. 설명의 편의를 위해 본 발명의 실시예에서는 첫 3 비트(또는 c=3)가 사용된다. 16 비트 어드레스 형식이 일 실시예로서 사용되는 것 또한 분명하다. 그러나, 본 발명에 의한 장치 및 방법은, 어떠한 개수를 가지는 어드레싱 비트들에도, 메인 프로세서 사이에서의 주소 지정 또는 코프로세서 주소 지정에 대한 어떠한 분포에도, CPU 또는 코프로세서 명령어를 위해 어떠한 개수를 가지는 비트 폭에도, 그리고 신호 처리 동작에 사용되는 어드레스의 어떠한 분포에도 적용 가능하다.
CPU(110)의 프리디코더(predecoder ; 113)는 메인 프로그램 메모리에 저장되어 있는 명령어워드의 'c' 최상위 비트를 받아들이고, 전체 명령어에 대한 디코딩에 앞서 CPU(110)의 디코더(decoder ; 170)에 의해 명령어를 페치한다. 만약 명령어 타입 코드가 코프로세서 명령어를 나타낸다면, 프리디코더(113)는 코프로세서 명령어 신호(Coprocessor Instruction Signal ; COPI)(116)를 발생한다. 코프로세서 명령어 신호(116)는 AND 게이트(118)에 의해서 시스템 클럭(SYSCLK ; 117)과 동기된다. AND 게이트(118)의 출력인 코프로세서 클럭(CCLK ; 119)은, 코프로세서(120)로 코프로세서 명령어를 동시에 클럭킹하기 위한 클럭 신호로서 사용된다. 본 발명에서, 코프로세서 클럭(CCLK ; 119)은 코프로세서(120)의 명령어 레지스터(121)로 보내져, 코프로세서 명령어 레지스터 클럭으로 사용된다. 본 발명의 실시예에 의하면, 코프로세서(120)는, CPU(110)에 의해 페치된 최상위 비트들(MSBs)과 코프로세서에 의해 페치된 최하위 비트들(LSBs)로 구성된 완전한 코프로세서 명령어를 받아들인다. 만약 메인 프로그램 메모리(140) 내에 저장된 명령어들이 16 비트 폭이고(m=16), 코프로세서 프로그램 메모리(160) 내에 저장된 코프로세서 명령어들이 16 비트 폭이라면(n=16), 전체 코프로세서 명령어 폭은 코프로세서 프리디코딩을 위해 설계된 3 비트(c 비트)의 최상위 비트(MSB)에 의해 (m-c)+n 비트가 되거나, (16-3)+16 또는 29 비트 폭이 된다. 코프로세서(120)는, 디코더(123)를 이용하여 완전한 29 비트 코프로세서 명령어를 디코딩한다. 도 5는 본 발명의 일 실시예에 의한 명령어 비트들의 분포를 보여주고 있다. 도면을 참조하면, 메인 프로그램 메모리(140)로부터 CPU(110)로 16 비트(m 비트)가 독출되는 것을 알 수 있다. 여기서, 프리디코딩을 위해 3 비트(c 비트)가 추출된다. 코프로세서 프로그램 메모리(160)로부터 'N' 비트가 독출되고, 이들 비트는 13+n 비트 코프로세서 명령어를 형성하기 위해서 CPU(110)로부터 전송되는 13 비트(m-c 비트)에 더해진다.
도 1을 참조하면, 메인 프로그램 메모리(140)로부터 페치된 16 비트(m 비트) 명령어는 CPU(110)로 (최초에는 페치 버퍼(fetch buffer ; 111)로) 전송된다. 페치 버퍼(111)의 출력, 즉 3 비트('c' MSB)들은 프리디코더(113)로 분기된다. 여기서, 만약 3 비트('c' 비트)가 코프로세서 동작을 위한 것이라면, 코프로세서 명령어 신호(116)와 코프로세서 클럭(CCLK ; 119)이 활성화된다. 16 비트(m 비트) 중 13 비트(m-c 비트)는 코프로세서(120)로 분기된다. 코프로세서 클럭(CCLK ; 119)은, CPU 명령어 페치 버퍼(111)의 출력으로부터 13 비트와 코프로세서 프로그램 메모리(160)로부터 16 비트('n' 비트)를 가지고, 코프로세서 명령어 페치 버퍼(126)를 통해서, 전체 29 비트의 코프로세서 명령어를 코프로세서 명령어 레지스터(121)로 클럭킹 한다. 이 방법에서 코프로세서의 디코더(123)는 디코딩을 위해 전체 코프로세서 명령어를 받아들인다. 명령어는 코프로세서 클럭(CCLK ; 119)에 의해 시스템 클럭에 동기된다. CPU(110)에 의한 처리를 위해 전체 m 비트 명령어는 CPU 명령 레지스터(114)로 포워드 된다(즉, 미리 보내진다). 만약 명령어가 코프로세서 동작을 하지 않으면, CPU(110)는 이 명령어를 정규 모드(normal manner)에서 CPU 명령어(CPU instruction)로 처리한다.
도 2는 본 발명에 의한 데이터 처리 장치의 모범적인 타이밍을 보여주기 위한 타이밍도이다. 파이프라인은 파이프라인의 한 단계가 제 1 위상(φ1) 래치(latch)와 2 위상(φ2) 래치를 포함하는 것처럼 2-위상(φ1, φ2) 클럭 사이클들에 응답해서 동작하는 래치 기반 회로이다. CPU(110)와 코프로세서(120)는 동기된 시스템 클럭(synchronized system clock ; SYSCLK)에 응답해서 동작하는 동일한파이프라인 구조를 가진다. CPU(110)는 어드레스 버스(address bus ; AB)(130) 상에 명령어 어드레스(instruction address)를 발생한다. 그리고 나서 CPU와 코프로세서는, 메인 프로그램 버스(Main Program Bus ; 180)와 코프로세서 프로그램 버스(Coprocessor Program Bus ; 190) 각각을 통해서, 명령어 페치 주기의 1 및 2 주기 안에, 주소가 지정된 명령어를 각각의 명령어 페치 버퍼로 페치한다. 페치된 명령어는 다음 (디코딩) 주기의 제 1 위상(φ1)에서 CPU 명령 레지스터(114)와 코프로세서 명령어 레지스터(121)로 래치된다. 페치 주기의 제 2 위상(φ2) 동안 명령어 타입 코드(instruction type code)(즉, 페치된 명령어의 LSB 위치)는 프리디코더(113)에 의해 디코딩된다. 만약 명령어가 코프로세서 명령어인지 여부가 명령어 타입 코드로부터 판별되면, 프리디코더(113)는 코프로세서 명령어 신호(116)를 발생한다. 코프로세서 명령어 신호(116)는, 코프로세서 클럭(CCLK ; 119)을 발생하기 위해 AND 게이트(118)에 의해서 시스템 클럭(SYSCLK ; 117)과 동기된다. 코프로세서 클럭(CCLK ; 119)은 코프로세서 파이프라인을 CPU 파이프라인에 동기시킨다. 코프로세서(120)는 페치 주기의 2 주기 동안마다 코프로세서 프로그램 메모리(160)로부터 직접 코프로세서 명령어의 LSB 부분을 페치한다. CPU에 의해 페칭되는 명령어와 프리디코딩 명령어 타입 코드는 2 페치 주기 이내에 처리된다. 다음 시스템 클럭(SYSCLK ; 117) 주기 또는 디코딩 주기의 제 1 위상(φ1) 동안 코프로세서(120)는 코프로세서 클럭(CCLK ; 119)에 응답해서 코프로세서 명령어 페치 버퍼(126)로부터 코프로세서 명령어 레지스터(121)로 코프로세서 명령어의 LSB 부분을 래치한다. 메인 프로그램 버스(180)와 코프로세서 프로그램 버스(190)의 전체 데이터 버스 폭은, 하나의 코프로세서 명령을 단번에 페치하기에 충분하도록 넓게 설계된다. 만약 프리디코딩 결과가 코프로세서 명령이 아닌 것을 나타낸다면, 코프로세서 명령어 신호(116)와 코프로세서 클럭(CCLK ; 119)은 발생되지 않게 되고, 코프로세서(120)는 명령어를 코프로세서 명령어 레지스터(121)로 래치하지 않게 된다.
도 3은 본 발명의 다른 실시예에 의한 데이터 처리 장치를 보여주고 있다. 이 실시예에 의한 코프로세서 명령어 페치 버퍼(126)는, 메인 프로그램 메모리(140)로부터 코프로세서 명령어의 LSB 부분과 코프로세서 명령어의 MSB 부분을 모두 받아들이기 위한 구조를 가진다. 따라서, 전체 코프로세서 명령어는 페치 버퍼(126)로부터 출력되고, 코프로세서 클럭(CCLK ; 119)에 응답해서 코프로세서 명령어 레지스터(121)로 래치된다. 메인 프로그램 메모리(140)로부터 독출된 명령어의 m-c 비트만이 메인 프로그램 버스(180)를 통해 명령어 페치 버퍼(126)에 연결되는 것은 자명하다. 전체 m 비트 명령어는, 이 명령어가 CPU 동작을 위한 명령이든 또는 코프로세서 동작을 위한 명령이든지 간에 프리디코딩을 포함한 처리를 수행하기 위해서 CPU(110)로 포워드 된다. 이와 같은 구조로부터 도출되는 이점으로는, 코프로세서(120)에 의해서 코프로세서 명령어의 MSB 부분에 대한 고속 수령이 가능하다는 것이다.
도 4는 본 발명의 다른 실시예에 의한 데이터 처리 장치를 보여준다. 본 발명에 의한 코프로세서 명령어 페치 버퍼(126)는 코프로세서 프로그램 메모리(160)로부터 코프로세서 명령어의 LSB 부분을 받아들인다. 메인 프로그램 메모리(140)로부터 코프로세서 명령어의 MSB 부분은 우선적으로 CPU(110)로 포워드 된다. 여기서, 'c' MSB 비트는 프리디코더(113)에 의해 프리디코딩 된다. 이어서, m 비트 명령어는 CPU 명령 레지스터(114)로 래치된다. 그리고 나서 명령어의 m-c 비트는 코프로세서(120)의 디코더(123)로 직접 출력된다. 프리디코더(113)가 명령어가 코프로세서 동작을 위한 것임을 판별할 때, 코프로세서 명령어의 LSB 부분은 코프로세서 클럭(CCLK ; 119)에 응답해서 코프로세서 명령어 레지스터(121)에 의해 래치된다. 이와 같은 방식에서, m-c MSB 비트들과 코프로세서 명령어의 n 비트들은 시스템 클럭(SYSCLK ; 117)에 동기된다.
유리하게도, 본 발명은 코프로세서로 활용되기 위해 넓은 명령어 비트 폭을 필요로 하는 디지털 신호 프로세서(digital signal processor ; DSP), 벡터 프로세서(vector processor) 또는 스칼라 프로세서(scalar processor), 그리고 유사 프로세서들의 사용을 편리하게 한다. 그리고, CPU와 코프로세서의 파이프라인 동작은, 페칭 명령어의 임계 시간 경로(critical time path) 없이 단일 처리 스트림(single processing stream) 내에서 동기된다. 그 결과, 파이프라인율(pipeline rate)이 개선된다.
본 발명에서는 코프로세서 명령어를 프리디코딩하기 위한 프리디코더에 대해 언급하고 있으나, 이 분야에 대한 통상의 지식을 가진 이들에게 있어서 CPU 내에 배치된 상기 프리디코더가 CPU, 코프로세서의 내부에, 또는 CPU 또는 코프로세서의 외부에 존재하고 있건 상관없이 전술된 기능들을 처리할 수 있는 것은 자명하다.
이상에서, 본 발명의 바람직한 실시예에 따른 회로의 구성 및 동작을 상기한설명 및 도면에 따라 도시하였지만 이는 예를 들어 설명한 것에 불과하다. 그리고, 특정 용어들, 어드레싱 및 명령어의 비트 수가 사용되었으나, 이들은 일반적이고 한정적으로 사용될 뿐, 어떠한 제한을 가할 목적으로 사용되는 것은 아니다. 그러므로, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
이상과 같은 본 발명에 의하면, 코프로세서로 활용되기 위해 넓은 명령어 비트 폭을 필요로 하는 디지털 신호 프로세서, 벡터 또는 스칼라 프로세서, 그리고 유사 프로세서들의 사용을 편리하게 한다.
그리고, CPU와 코프로세서의 파이프라인 동작은, 페칭 명령어의 임계 시간 경로 없이 단일 처리 스트림 내에서 동기되어, 파이프라인율이 개선된다.

Claims (17)

  1. 데이터 처리를 위한 메인 프로세서 및 코프로세서를 구비한 반도체 장치에 있어서:
    메인 프로세서 명령들 및 코프로세서 명령들의 제 1 부분을 저장하기 위한 메인 프로그램 메모리와,
    상기 코프로세서 명령들의 제 2 부분을 저장하기 위한 코프로세서 프로그램 메모리; 그리고
    상기 메인 프로그램 메모리로부터 페치된 각 명령어의 적어도 한 비트를 프리디코딩하고, 코프로세서 타입 명령어인 경우 코프로세서 활성화 제어 클럭을 발생하기 위한 프리디코더를 포함하되,
    상기 코프로세서 명령들의 제 2 부분은 상기 코프로세서 프로그램 메모리로부터 직접 페치되고, 코프로세서 명령들의 제 1 및 제 2 부분은 상기 코프로세서 활성화 제어 클럭를 받아들인 상기 코프로세서에 의해 처리되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  2. 제 1 항에 있어서,
    상기 코프로세서 활성화 제어 신호와 상기 메인 프로세서는 시스템 클럭에 동기되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  3. 제 1 항에 있어서,
    상기 메인 프로세서 명령어들은 m 비트이고, 상기 코프로세서 명령어들은 m+n 비트이며, n 비트는 상기 코프로세서 프로그램 메모리 내에 저장되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  4. 제 3 항에 있어서,
    상기 m 비트 메인 프로세서 명령어는 상기 메인 프로세서에 의해 상기 메인 프로그램 메모리로부터 페치되고, 그리고 상기 메인 프로세서의 명령어 페치 버퍼에 의해 버퍼링된 후 상기 코프로세서로 전송되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  5. 제 4 항에 있어서,
    상기 m 비트들은 상기 코프로세서로 포워드 되기 전에, 상기 메인 프로세서 내에 있는 명령어 레지스터를 통해서 전송되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  6. 제 3 항에 있어서,
    상기 m 비트들은 상기 메인 프로그램 메모리로부터 상기 코프로세서로 직접 포워드 되고, 그리고 상기 n 비트들은 상기 코프로세서 프로그램 메모리로부터 상기 코프로세서로 직접 포워드 되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  7. 제 3 항에 있어서,
    상기 m 비트들과 상기 n 비트들은 상기 코프로세서 활성화 제어 신호에 응답해서 레치되기 위해, 상기 코프로세서 내에 있는 상기 명령어 레지스터로 포워드 되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  8. 제 7 항에 있어서,
    상기 m 비트들과 상기 n 비트들은 버퍼링을 위해 상기 코프로세서 내에 있는 상기 레지스터보다 버퍼로 먼저 포워드 되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  9. 제 1 항에 있어서,
    각각의 메인 프로세서 명령어 및 각각의 코프로세서 명령어들은 상기 메인 프로세서에 의해 발생된 공통 프로그램 어드레스로부터 페치되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
  10. m 비트 명령어들을 실행하기 위한 메인 프로세서와, m+n 비트 코프로세서 명령어를 실행하기 위한 코프로세서를 구비한 반도체 장치의 데이터 처리 방법에 있어서:
    프로그램 어드레스에 의해 어드레스가 지정된 메인 프로그램 메모리로부터 m 비트 명령어를 상기 메인 프로세서에 의해 페치하는 단계; 그리고
    상기 메인 프로세서에 의해 미리 정해진 코프로세서 코드를 디코딩되는 상기 프로그램 어드레스에 의해 어드레스가 지정된 코프로세서 프로그램 메모리로부터 n 비트 명령어를 상기 코프로세서에 의해 페치하는 단계를 포함하는 것을 특징으로 하는 코프로세서 명령 실행 방법.
  11. 제 10 항에 있어서,
    코프로세서 코드를 디코딩하는 상기 단계는, 상기 메인 프로세서의 프리디코더에 의해 수행되며, 상기 프리디코더는 상기 m 비트의 c 비트를 프리디코딩하기 위한 것이고, 상기 c 비트는 코프로세서 동작을 나타내기 위해 미리 지정되는 것을 특징으로 하는 코프로세서 명령 실행 방법.
  12. 제 11 항에 있어서,
    상기 c 비트는 적어도 1 비트 이상인 것을 특징으로 하는 코프로세서 명령 실행 방법.
  13. 제 11 항에 있어서,
    (m-c)+n 비트의 코프로세서 명령어를 형성하기 위해서, 상기 메인 메모리로부터 페치된 상기 명령어가 상기 코프로세서로 포워드 되는 단계를 더욱 포함하는것을 특징으로 하는 코프로세서 명령 실행 방법.
  14. 제 10 항에 있어서,
    상기 메인 프로세서 및 상기 코프로세서에 의해 페칭되는 상기 단계는 시스템 클럭에 동기되는 것을 특징으로 하는 코프로세서 명령 실행 방법.
  15. 제 14 항에 있어서,
    상기 메인 프로세서 및 상기 코프로세서에 의해 페칭되는 상기 단계는 1 시스템 클럭 내에 발생되는 것을 특징으로 하는 코프로세서 명령 실행 방법.
  16. 제 10 항에 있어서,
    프리디코더에 의해 상기 미리 정해진 코프로세서 코드를 디코딩하고, 코프로세서 명령어일 경우 시스템 클럭에 동기되는 코프레세서 활성화 제어 클럭(CCLK)을 발생하는 단계를 더욱 포함하는 것을 특징으로 하는 코프로세서 명령 실행 방법.
  17. 제 16 항에 있어서,
    상기 제어 클럭에 응답해서 상기 메인 프로세서 메모리로부터 전송된 코프로세서 명령어의 MSB 부분과 상기 코프로세서 프로그램 메모리로부터 상기 코프로세서 명령어의 LSB 부분을 래치하는 단계를 더욱 포함하는 것을 특징으로 하는 코프로세서 명령 실행 방법.
KR10-2001-0027317A 2001-03-14 2001-05-18 코프로세서 명령 실행 장치 및 방법 KR100423910B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/808,406 US6832305B2 (en) 2001-03-14 2001-03-14 Method and apparatus for executing coprocessor instructions
US09/808,406 2001-03-14

Publications (2)

Publication Number Publication Date
KR20020073233A KR20020073233A (ko) 2002-09-23
KR100423910B1 true KR100423910B1 (ko) 2004-03-22

Family

ID=25198667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0027317A KR100423910B1 (ko) 2001-03-14 2001-05-18 코프로세서 명령 실행 장치 및 방법

Country Status (5)

Country Link
US (1) US6832305B2 (ko)
EP (1) EP1241567B1 (ko)
KR (1) KR100423910B1 (ko)
DE (1) DE60138868D1 (ko)
TW (1) TW548591B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2382175A (en) * 2001-11-20 2003-05-21 Hewlett Packard Co Reconfigurable processor
EP1324191A1 (en) * 2001-12-27 2003-07-02 STMicroelectronics S.r.l. Processor architecture, related system and method of operation
EP1387259B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Inter-processor control
EP1387250B8 (en) * 2002-07-31 2012-02-29 Texas Instruments Inc. Processor that accomodates multiple instruction sets and multiple decode modes
EP1387252B1 (en) * 2002-07-31 2019-02-13 Texas Instruments Incorporated Instruction prefix to indicate system commands
US20040225840A1 (en) * 2003-05-09 2004-11-11 O'connor Dennis M. Apparatus and method to provide multithreaded computer processing
TWI224281B (en) * 2003-07-16 2004-11-21 Sunplus Technology Co Ltd A processor executing script with different length and method thereof
JP4699685B2 (ja) 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
US20050055594A1 (en) * 2003-09-05 2005-03-10 Doering Andreas C. Method and device for synchronizing a processor and a coprocessor
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7689402B2 (en) 2006-11-17 2010-03-30 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for retrieving application-specific code using memory access capabilities of a host processor
US7945763B2 (en) * 2006-12-13 2011-05-17 International Business Machines Corporation Single shared instruction predecoder for supporting multiple processors
US8001361B2 (en) * 2006-12-13 2011-08-16 International Business Machines Corporation Structure for a single shared instruction predecoder for supporting multiple processors
US20080148020A1 (en) * 2006-12-13 2008-06-19 Luick David A Low Cost Persistent Instruction Predecoded Issue and Dispatcher
US7865698B1 (en) * 2008-03-27 2011-01-04 Xilinix, Inc. Decode mode for an auxiliary processor unit controller in which an opcode is partially masked such that a configuration register defines a plurality of user defined instructions
US7788470B1 (en) * 2008-03-27 2010-08-31 Xilinx, Inc. Shadow pipeline in an auxiliary processor unit controller
US9304774B2 (en) 2011-02-04 2016-04-05 Qualcomm Incorporated Processor with a coprocessor having early access to not-yet issued instructions
US9846673B2 (en) * 2011-11-04 2017-12-19 Waseda University Processor, accelerator, and direct memory access controller within a processor core that each reads/writes a local synchronization flag area for parallel execution
US10733141B2 (en) * 2018-03-27 2020-08-04 Analog Devices, Inc. Distributed processor system
JP7273176B2 (ja) * 2019-05-05 2023-05-12 長江存儲科技有限責任公司 シーケンス処理ユニットを備えたメモリ制御システム
US11755333B2 (en) * 2021-09-23 2023-09-12 Apple Inc. Coprocessor prefetcher
CN114579288B (zh) * 2022-05-09 2022-09-02 成都登临科技有限公司 一种任务处理的方法、装置以及计算机设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63158657A (ja) * 1986-12-23 1988-07-01 Fanuc Ltd コ・プロセツサ制御方式
JPH01147656A (ja) * 1987-12-03 1989-06-09 Nec Corp マイクロプロセッサ
US5519873A (en) * 1990-08-31 1996-05-21 International Business Machines Corporation Apparatus for switching digital command execution between a general purpose microprocessor and dedicted execution logic
JPH07504054A (ja) * 1992-02-18 1995-04-27 アプル・コンピュータ・インコーポレーテッド コンピュータシステムにおけるコプロセッサのプログラミングモデル
US5752071A (en) * 1995-07-17 1998-05-12 Intel Corporation Function coprocessor
US5794068A (en) * 1996-03-18 1998-08-11 Advanced Micro Devices, Inc. CPU with DSP having function preprocessor that converts instruction sequences intended to perform DSP function into DSP function identifier
US6148395A (en) * 1996-05-17 2000-11-14 Texas Instruments Incorporated Shared floating-point unit in a single chip multiprocessor
KR100308618B1 (ko) * 1999-02-27 2001-09-26 윤종용 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법
KR100325430B1 (ko) * 1999-10-11 2002-02-25 윤종용 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법

Also Published As

Publication number Publication date
US6832305B2 (en) 2004-12-14
EP1241567B1 (en) 2009-06-03
US20020133689A1 (en) 2002-09-19
EP1241567A2 (en) 2002-09-18
EP1241567A3 (en) 2003-09-10
DE60138868D1 (de) 2009-07-16
KR20020073233A (ko) 2002-09-23
TW548591B (en) 2003-08-21

Similar Documents

Publication Publication Date Title
KR100423910B1 (ko) 코프로세서 명령 실행 장치 및 방법
US5727194A (en) Repeat-bit based, compact system and method for implementing zero-overhead loops
US6775766B2 (en) Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
KR100571322B1 (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
US6430674B1 (en) Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time
EP3166015A1 (en) Fetch ahead branch target buffer
US20220365787A1 (en) Event handling in pipeline execute stages
KR100510030B1 (ko) 간단한회로로분기해저드의저감을실현한파이프라인프로세서
US6182211B1 (en) Conditional branch control method
JP2007257349A (ja) プロセッサ及びその処理方法
US20050144427A1 (en) Processor including branch prediction mechanism for far jump and far call instructions
JPH1091430A (ja) 命令解読装置
US6877082B1 (en) Central processing unit including address generation system and instruction fetch apparatus
US6427205B1 (en) Digital signal processor and processor reducing the number of instructions upon processing condition execution instructions
US20020069351A1 (en) Memory data access structure and method suitable for use in a processor
JP2006309454A (ja) プログラム制御方法及びプロセッサ
US6996702B2 (en) Processing unit with cross-coupled ALUs/accumulators and input data feedback structure including constant generator and bypass to reduce memory contention
KR19980052331A (ko) 프로세서의 캐시 메모리 제어 방법
KR100515039B1 (ko) 조건부 명령어를 고려한 파이프라인 상태 표시 회로
KR950014161B1 (ko) 어레이 프로세서(array processor)의 2단계(stage) 명령어 파이프라인 처리방법
JP2004355477A (ja) マイクロプロセッサ
JP2002229776A (ja) 複数組の命令組を実行するためのデータ処理装置
US6546479B1 (en) Reduced instruction fetch latency in a system including a pipelined processor
JP2001282530A (ja) プロセッサおよびパイプライン処理システム
JP3414579B2 (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: 20130228

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140228

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150302

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170228

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180228

Year of fee payment: 15