KR100423910B1 - 코프로세서 명령 실행 장치 및 방법 - Google Patents
코프로세서 명령 실행 장치 및 방법 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 26
- 230000004913 activation Effects 0.000 claims abstract description 9
- 239000004065 semiconductor Substances 0.000 claims abstract description 7
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 7
- 238000003672 processing method Methods 0.000 claims description 2
- 230000003139 buffering effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined 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
본 발명은 데이터 처리를 위한 메인 프로세서(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 부분을 저장하기 위한 메인 프로그램 메모리와,상기 코프로세서 명령들의 제 2 부분을 저장하기 위한 코프로세서 프로그램 메모리; 그리고상기 메인 프로그램 메모리로부터 페치된 각 명령어의 적어도 한 비트를 프리디코딩하고, 코프로세서 타입 명령어인 경우 코프로세서 활성화 제어 클럭을 발생하기 위한 프리디코더를 포함하되,상기 코프로세서 명령들의 제 2 부분은 상기 코프로세서 프로그램 메모리로부터 직접 페치되고, 코프로세서 명령들의 제 1 및 제 2 부분은 상기 코프로세서 활성화 제어 클럭를 받아들인 상기 코프로세서에 의해 처리되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- 제 1 항에 있어서,상기 코프로세서 활성화 제어 신호와 상기 메인 프로세서는 시스템 클럭에 동기되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- 제 1 항에 있어서,상기 메인 프로세서 명령어들은 m 비트이고, 상기 코프로세서 명령어들은 m+n 비트이며, n 비트는 상기 코프로세서 프로그램 메모리 내에 저장되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- 제 3 항에 있어서,상기 m 비트 메인 프로세서 명령어는 상기 메인 프로세서에 의해 상기 메인 프로그램 메모리로부터 페치되고, 그리고 상기 메인 프로세서의 명령어 페치 버퍼에 의해 버퍼링된 후 상기 코프로세서로 전송되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- 제 4 항에 있어서,상기 m 비트들은 상기 코프로세서로 포워드 되기 전에, 상기 메인 프로세서 내에 있는 명령어 레지스터를 통해서 전송되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- 제 3 항에 있어서,상기 m 비트들은 상기 메인 프로그램 메모리로부터 상기 코프로세서로 직접 포워드 되고, 그리고 상기 n 비트들은 상기 코프로세서 프로그램 메모리로부터 상기 코프로세서로 직접 포워드 되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- 제 3 항에 있어서,상기 m 비트들과 상기 n 비트들은 상기 코프로세서 활성화 제어 신호에 응답해서 레치되기 위해, 상기 코프로세서 내에 있는 상기 명령어 레지스터로 포워드 되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- 제 7 항에 있어서,상기 m 비트들과 상기 n 비트들은 버퍼링을 위해 상기 코프로세서 내에 있는 상기 레지스터보다 버퍼로 먼저 포워드 되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- 제 1 항에 있어서,각각의 메인 프로세서 명령어 및 각각의 코프로세서 명령어들은 상기 메인 프로세서에 의해 발생된 공통 프로그램 어드레스로부터 페치되는 것을 특징으로 하는 코프로세서 명령 실행 장치.
- m 비트 명령어들을 실행하기 위한 메인 프로세서와, m+n 비트 코프로세서 명령어를 실행하기 위한 코프로세서를 구비한 반도체 장치의 데이터 처리 방법에 있어서:프로그램 어드레스에 의해 어드레스가 지정된 메인 프로그램 메모리로부터 m 비트 명령어를 상기 메인 프로세서에 의해 페치하는 단계; 그리고상기 메인 프로세서에 의해 미리 정해진 코프로세서 코드를 디코딩되는 상기 프로그램 어드레스에 의해 어드레스가 지정된 코프로세서 프로그램 메모리로부터 n 비트 명령어를 상기 코프로세서에 의해 페치하는 단계를 포함하는 것을 특징으로 하는 코프로세서 명령 실행 방법.
- 제 10 항에 있어서,코프로세서 코드를 디코딩하는 상기 단계는, 상기 메인 프로세서의 프리디코더에 의해 수행되며, 상기 프리디코더는 상기 m 비트의 c 비트를 프리디코딩하기 위한 것이고, 상기 c 비트는 코프로세서 동작을 나타내기 위해 미리 지정되는 것을 특징으로 하는 코프로세서 명령 실행 방법.
- 제 11 항에 있어서,상기 c 비트는 적어도 1 비트 이상인 것을 특징으로 하는 코프로세서 명령 실행 방법.
- 제 11 항에 있어서,(m-c)+n 비트의 코프로세서 명령어를 형성하기 위해서, 상기 메인 메모리로부터 페치된 상기 명령어가 상기 코프로세서로 포워드 되는 단계를 더욱 포함하는것을 특징으로 하는 코프로세서 명령 실행 방법.
- 제 10 항에 있어서,상기 메인 프로세서 및 상기 코프로세서에 의해 페칭되는 상기 단계는 시스템 클럭에 동기되는 것을 특징으로 하는 코프로세서 명령 실행 방법.
- 제 14 항에 있어서,상기 메인 프로세서 및 상기 코프로세서에 의해 페칭되는 상기 단계는 1 시스템 클럭 내에 발생되는 것을 특징으로 하는 코프로세서 명령 실행 방법.
- 제 10 항에 있어서,프리디코더에 의해 상기 미리 정해진 코프로세서 코드를 디코딩하고, 코프로세서 명령어일 경우 시스템 클럭에 동기되는 코프레세서 활성화 제어 클럭(CCLK)을 발생하는 단계를 더욱 포함하는 것을 특징으로 하는 코프로세서 명령 실행 방법.
- 제 16 항에 있어서,상기 제어 클럭에 응답해서 상기 메인 프로세서 메모리로부터 전송된 코프로세서 명령어의 MSB 부분과 상기 코프로세서 프로그램 메모리로부터 상기 코프로세서 명령어의 LSB 부분을 래치하는 단계를 더욱 포함하는 것을 특징으로 하는 코프로세서 명령 실행 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/808,406 | 2001-03-14 | ||
US09/808,406 US6832305B2 (en) | 2001-03-14 | 2001-03-14 | Method and apparatus for executing coprocessor instructions |
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)
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 |
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 |
EP1387259B1 (en) * | 2002-07-31 | 2017-09-20 | Texas Instruments Incorporated | Inter-processor control |
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 |
US20080148020A1 (en) * | 2006-12-13 | 2008-06-19 | Luick David A | Low Cost Persistent Instruction Predecoded Issue and Dispatcher |
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 |
US7788470B1 (en) * | 2008-03-27 | 2010-08-31 | Xilinx, Inc. | Shadow pipeline in an auxiliary processor unit controller |
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 |
US9304774B2 (en) | 2011-02-04 | 2016-04-05 | Qualcomm Incorporated | Processor with a coprocessor having early access to not-yet issued instructions |
GB2511672B (en) * | 2011-11-04 | 2020-04-15 | Univ Waseda | Processor system and accelerator |
US10733141B2 (en) | 2018-03-27 | 2020-08-04 | Analog Devices, Inc. | Distributed processor system |
CN112925728B (zh) * | 2019-05-05 | 2024-09-06 | 长江存储科技有限责任公司 | 具有序列处理单元的存储器控制系统 |
US11755333B2 (en) | 2021-09-23 | 2023-09-12 | Apple Inc. | Coprocessor prefetcher |
CN114579288B (zh) * | 2022-05-09 | 2022-09-02 | 成都登临科技有限公司 | 一种任务处理的方法、装置以及计算机设备 |
Family Cites Families (9)
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 |
WO1993016437A1 (en) * | 1992-02-18 | 1993-08-19 | Apple Computer, Inc. | A programming model for a coprocessor on a computer system |
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 | 윤종용 | 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법 |
-
2001
- 2001-03-14 US US09/808,406 patent/US6832305B2/en not_active Expired - Lifetime
- 2001-05-18 KR KR10-2001-0027317A patent/KR100423910B1/ko active IP Right Grant
- 2001-07-19 DE DE60138868T patent/DE60138868D1/de not_active Expired - Lifetime
- 2001-07-19 EP EP01306229A patent/EP1241567B1/en not_active Expired - Lifetime
- 2001-08-01 TW TW090118738A patent/TW548591B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
DE60138868D1 (de) | 2009-07-16 |
EP1241567B1 (en) | 2009-06-03 |
US20020133689A1 (en) | 2002-09-19 |
KR20020073233A (ko) | 2002-09-23 |
EP1241567A2 (en) | 2002-09-18 |
TW548591B (en) | 2003-08-21 |
EP1241567A3 (en) | 2003-09-10 |
US6832305B2 (en) | 2004-12-14 |
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 | |
US6430674B1 (en) | Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time | |
KR20040016829A (ko) | 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템 | |
EP3166015A1 (en) | Fetch ahead branch target buffer | |
US20220365787A1 (en) | Event handling in pipeline execute stages | |
KR100510030B1 (ko) | 간단한회로로분기해저드의저감을실현한파이프라인프로세서 | |
US6044460A (en) | System and method for PC-relative address generation in a microprocessor with a pipeline architecture | |
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) | 複数組の命令組を実行するためのデータ処理装置 | |
US7124281B1 (en) | Processing system having sequential address indicator signals | |
JP2001282530A (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 |