KR20090023418A - 프로세서 및 코프로세서를 인터페이싱하는 방법 및 장치 - Google Patents
프로세서 및 코프로세서를 인터페이싱하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20090023418A KR20090023418A KR1020087031623A KR20087031623A KR20090023418A KR 20090023418 A KR20090023418 A KR 20090023418A KR 1020087031623 A KR1020087031623 A KR 1020087031623A KR 20087031623 A KR20087031623 A KR 20087031623A KR 20090023418 A KR20090023418 A KR 20090023418A
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- coprocessor
- instruction
- instructions
- generated
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 76
- 238000011068 loading method Methods 0.000 claims description 68
- 230000015654 memory Effects 0.000 claims description 51
- 238000006073 displacement reaction Methods 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 15
- 238000001914 filtration Methods 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 abstract description 2
- 239000004020 conductor Substances 0.000 description 38
- 230000008901 benefit Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- 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
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
코프로세서(14)는 주 프로세서 또는 범용 프로세서로부터 인계될 수 있는 하나 이상의 특별화된 동작들을 수행하기 위해 이용될 수 있다. 프로세서(12)와 코프로세서(14) 간에 효율적인 통신 및 인터페이스를 허용하는 것이 중요하다. 일 실시예에서, 코프로세서(14)는 명령들(200, 220)을 발생하여 프로세서(12) 내 명령 파이프(pipe)(20)로 제공한다. 코프로세서(14)에서 발생된 명령들은 프로세서(12)의 표준 명령 세트의 일부이기 때문에, 캐시(cache)(70) 일관성(coherency)을 유지하기가 용이하다. 또한, 코프로세서(14) 내 회로(106)가 동시에 프로세서 명령들(200, 220)을 발생하는 동안 코프로세서(14) 내 회로(102)는 데이터에 관한 동작을 수행할 수 있다.
프로세서, 코프로세서, 디코딩 및 실행 회로, 명령 발생 회로, 저장 명령, 로딩 명령, 명령 페치, 분기 명령
Description
본 발명은 일반적으로 인터페이싱(interfacing)에 관한 것으로, 특히 프로세서 및 코프로세서를 인터페이싱하는 것에 관한 것이다.
코프로세서들은 주 프로세서 또는 범용 프로세서로부터 인계(off-loaded)될 수 있는 하나 이상의 특별화된 동작들을 수행하기 위해 이용될 수 있다. 이때 프로세서와 코프로세서 간에 효율적인 통신 및 인터페이스를 허용하는 것이 중요하다. 또한, 많은 시스템들에서, 프로세서는 느린 메모리에의 액세스들을 감소시킴으로써 시스템의 효율을 증가시키기 위해 하나 이상의 레벨들의 캐시(cache)를 사용한다.
본 발명은 예에 의해 예시되고 동일 구성요소들에 동일 참조부호들을 이용한 첨부한 도면들에 의해 제한되지 않는다.
도 1은 일 실시예에 따른 데이터 처리 시스템의 블록도.
도 2는 일 실시예에 따른 도 1의 코프로세서(14)의 부분의 블록도.
도 3은 일 실시예에 따른 명령의 블록도.
도 4는 일 실시예에 따른 명령의 블록도.
도 5는 일 실시예에 따른 도 1의 메모리(54)의 부분의 블록도.
도 6은 일 실시예에 따라 도 4의 어떤 주소 변위 필드(228)가 언제 도 5의 순환 버퍼(55)에 샘플들에 액세스할 것인지를 표 형태로 도시한 도면.
도 7은 일 실시예에 따른 도 1의 시스템(10)의 메모리 맵의 블록도.
도 8은 일 실시예에 따른 샘플 명령 스트림을 표 형태로 도시한 도면.
도 9는 일 실시예에 따라 도 8의 명령 스트림이 도 1의 프로세서(12) 및 코프로세서(14)에 의해 어떻게 발생되어 실행될 수 있는가를 표 형태로 도시한 도면.
당업자들은 도면들에서 요소들은 단순성 및 명료성을 위해 예시된 것이며 반드시 축척에 맞게 도시된 것은 아님을 안다. 예를 들면, 도면들에서 일부 요소들의 치수들은 본 발명의 실시예들의 이행을 높이는데 도움을 주기 위해 다른 요소들에 비해 과장되어 있을 수도 있다.
도 1을 참조하면, 메모리(54)에 저장되고, 캐시(70)에 저장되고, 프로세서(12)에 의해 이용되고, 코프로세서(14)에 의해 이용되는 정보간에 일관성(coherency)을 시스템(10)에서 유지하는 것이 중요하다. 프로세서 명령들을 프로세서(12)의 명령 디코딩(decode) 경로에 코프로세서(14)가 직접 삽입할 수 있게 함으로써, 캐시(70) 및 메모리(54)의 일관성이 보증됨에 유의한다. 코프로세서(14)에 의해 삽입된 명령들이 페치된(fetched) 곳(예를 들면, 메모리(54))이 어디이든 상관없이 임의의 다른 명령을 코프로세서(14)가 취급하는 방식과 동일하게 프로세 서(12)가 이들을 취급하기 때문에, 캐시(70) 및 메모리(54)의 일관성이 보증된다. 코프로세서(14)는 프로세서(12)의 표준 명령 세트의 일부인 하나 이상의 명령들을 발생한다. 코프로세서(14)는 임의의 요망되는 방식으로 이들 프로세서 명령들을 발생할 수 있다. 예를 들면, 프로세서 명령의 하나 이상의 부분들은 상태 머신(state machine), 조합 로직(combinational logic), 또는 임의의 다른 유형의 회로를 이용하여 결정될 수 있고, 반면 하나 이상의 부분들은 룩업 테이블(loo-up table)을 이용하여 결정될 수도 있다. 명령들을 발생하는 임의의 다른 방법은 코프로세서(14)에 의해 이용될 수 있다. 또한, 코프로세서(14)에 의해 발생된 명령들은 임의의 유형의 명령들일 수 있다.
일 실시예에서, 코프로세서(14)는 실행을 위해 프로세서(12)로 전달되는 로딩(load) 및 저장(store) 명령들을 발생한다. 이에 따라 프로세서(12)는 하나 이상의 선택된 코프로세서 기능들을 수행하기 위해 코프로세서(14)에 의해 필요로 되는 데이터를 검색하기 위해 요구되는 메모리(54)에 대한 로딩 및 저장 명령들을 수행한다. 프로세서(12)는 검색된 데이터를 레지스터들(24)에 저장하기보다는, 데이터를 메모리(54)로부터 코프로세서(14)로 직접 전송하기 위해, 코프로세서에 의해 개시된 로딩 명령들 동안 프로세서(12)에 의해 이용되는 바이패스 제어회로(28)를 포함할 수 있다. 유사하게, 바이패스 제어회로(28)는 저장될 데이터를 레지스터들(24)로부터 검색하기보다는, 데이터를 코프로세서(14)로부터 메모리(54)로 직접 전송하기 위해, 코프로세서에 의해 개시된 저장 명령들 동안 프로세서(12)에 의해 이용될 수 있다. 일 실시예에서, 캐시회로는 언제 바이패스가 행해지고 있는지를 알지 못한다. 바이패스는 데이터가 프로세서 레지스터들(24) 대신 코프로세서(14)로부터/로 보내질 수 있게 한다. 이 실시예에서, 캐시(70)는 로딩 또는 저장 명령이 코프로세서(14)에 의해 발생되었든 발생되지 않았든 동일한 방식으로 동작한다. 이에 따라 캐시(70), 메모리(54), 프로세서(12), 및 코프로세서(14)간의 일관성은 회로 및 처리 시간이 최소의 비용으로 유지된다. 그러나, 대안적 실시예들은 바이패스를 구비하지 않을 수도 있고 또는 캐시 일관성을 유지하는 것이 요망된다면 다른 방식으로 바이패스를 처리할 수도 있다.
도 1을 참조하면, 일 실시예에서, 코프로세서(14)는 프로그램 카운터 값(17)이 언제 미리결정된 주소 범위 내에 있는지를 결정하기 위해 콘덕터들(conductor)(44)에 의해 프로세서(12)의 프로그램 카운터 값(17)을 모니터한다. 일 실시예에서 프로세서(12)의 프로그램 카운터(17)는 명령 주소 발생기(16)에 위치되고, 반면 대안적 실시예에 있어서는 프로세서(12)의 임의의 곳에 위치될 수도 있다. 일 실시예에서, 코프로세서(14)는 프로그램 카운터 값(17)이 미리결정된 범위 내에 있는지를 결정하기 위해서 프로그램 카운터 값(17)의 선택된 비트들과 비교될 수 있는(예를 들면, 비교기(120)에 의해서) 기준 주소(base address)를 저장하기 위해 기준 주소 레지스터(122)를 이용한다. 대안적 실시예들에서, 기준 주소 레지스터(122) 및 비교기(120)는 시스템(10)의 임의의 곳에 위치될 수 있고(예를 들면, 프로세서(12) 내) 매칭이 발생하였을 때(즉, 프로그램 카운터 값(17)이 미리결정된 범위 내에 있을 때)를 나타내기 위해서 비교기(120)로부터 코프로세서(14)로 신호가 제공될 수 있다.
프로세서(12)의 프로그램 카운터 값(17)이 미리결정된 범위 내에 없다면, 코프로세서(14)는 프로그램 카운터 값(17)의 모니터링만을 계속한다. 그러나, 프로세서(12)의 프로그램 카운터 값(17)이 미리결정된 범위 내에 있다면, 코프로세서(14)는 수행될 복수의 동작들 중 하나를 선택하기 위해서 프로그램 카운터 값(17)을 이용한다(도 7 참조). 대안적 실시예들은 한 동작만이 코프로세서(14)에 의해 수행되게 할 수도 있고, 이에 따라 인에이블(enable) 및 선택기로서가 아니라 엔에이블로서 프로그램 카운터 값(17)을 이용할 수 있다.
도 7을 참조하면, "A"의 프로그램 카운터 주소(17)는 코프로세서(14)로 하여금 코프로세서 기능 1을 선택하게 할 것이며; "A+100"의 프로그램 카운터 주소(17)는 코프로세서(14)로 하여금 코프로세서 기능 2을 선택하게 할 것이며; "A+150"의 프로그램 카운터 주소(17)는 코프로세서(14)로 하여금 코프로세서 기능 3을 선택하게 할 것이다. 대안적 실시예들은 임의의 수의 코프로세서 기능들을 이용할 수도 있다. 또한, 코프로세서 기능들(예를 들면 1, 2, 및 3)은 임의의 기능일 수도 있다. 이용될 수도 있는 일부 공통되는 코프로세서 기능들은 필터 기능, 비터비(Verterbi) 알고리즘, 고속 푸리에 변환, 및 상관(correlation) 기능이다. 그러나, 이들 예들 대신 또는 이들 예들에 더하여 다른 코프로세서 기능들이 이용될 수도 있다. 시스템 메모리 맵에서 "A"부터 "A+300"까지의 주소 공간은 코프로세서(14)를 위해 예약되고 어떠한 대응하는 물리적 저장회로가 없는 것에 유의한다(즉, 메모리(54) 및 코프로세서(14)는 "A"부터 "A+300"까지의 주소 공간에 대응하는 저장회로를 구비하지 않는다). 대부분의 종래 기술의 시스템에서, 다음 명령은 프로그램 카운터(17)에 의해 가리켜진(point) 주소 위치로부터 페치된다. 이 페치된 명령은 이어서, 프로세서(12)에 의해 실행될 때까지 명령 파이프(pipe)(20)에 저장된다. 대안적 실시예들은 명령 파이프(20)를 구비하지 않고 대신 페치된 명령을 즉시 실행할 수도 있는 것에 유의한다. 프로세서(12)는 실행유닛(26) 및 레지스터들(24)를 이용하여 대부분의 명령들을 실행하는 것에 유의한다.
예시된 실시예에서, 프로그램 카운터 레지스터(17)가 "A" 내지 "A+300"의 값을 내포할 때, 코프로세서(14)가 엔이블되고 어떤 코프로세서 기능이 수행될 것인지를 결정하기 위해 프로그램 카운터 값(17)을 이용한다. 도 9를 참조하면, 코프로세서(14)는 예를 들면 무 동작(no operation; NOP) 명령들 및 곱셈 누산(multiply accumulate; MAC) 명령들을 수행함으로써 기능회로(102)를 이용하여 코프로세서 기능을 수행한다. 또한, 코프로세서(14)는 코프로세서(14)로부터 프로세서(12)로 전송될(예를 들면, 명령 콘덕터들(42)에 의해서) 하나 이상의 명령들을 프로세서(12)의 명령 세트로부터 내부적으로 발생한다. 코프로세서(14)에 의해 발생된 프로세서(12) 명령들은 프로세서(12)에 의해 발생된 명령 페치 주소에 저장되지 않고 대신 코프로세서(14)에 의해 내부적으로 발생되는 것에 유의한다. 코프로세서(14)는 이들 프로세서(12) 명령들을 임의의 요망되는 방식으로 발생할 수 있다. 예를 들면, 프로세서(12) 명령의 하나 이상의 부분들은 상태 머신, 조합 로직, 또는 임의의 다른 유형의 회로를 이용하여 결정될 수 있고, 반면 하나 이상의 부분들은 룩업 테이블을 이용하여 결정될 수도 있다. 도 2에 도시된 실시예에서, 코프로세서(14)는 콘덕터들(42)에 의해 프로세서(12)로 전송될 프로세서 명령들을 발생하기 위해 명령 발생기(106)를 이용한다. 일 실시예에서, 코프로세서(14)에 의해 발생되고 프로세서(12)로 제공되는 명령들은 프로세서(12)의 표준 명령 세트의 일부이고 프로세서/코프로세서 인터페이스에 관계된 특별한 명령들이 아님에 유의한다.
프로세서(12)에 의한 실행을 위해 명령들을 발생함으로써, 코프로세서(14)는 프로세서(12)의 처리 능력 중 임의의 것을 사용할 수 있고 코프로세서 알고리즘을 수행하는데 도움을 주도록 프로세서(12) 동작들의 시퀀스를 지시할 수 있다. 이에 따라, 리던던트 코프로세서 하드웨어(redundant coprocessor hardware)가 제거될 수 있기 때문에 코프로세서(14)가 간이화될 수 있고, 대신, 코프로세서(14)는 요망되는 코프로세스 기능을 지원하도록 프로세서(12)의 실행 활동(execution activity)을 지시할 수 있다. 많은 코프로세스 동작들에서, 코프로세스 기능을 구현하기 위해 메모리(54)로부터 일관된 데이터(coherent data)가 요구된다. 예시된 실시예에서, 프로세서(12)가 코프로세서(14)을 대신하여 정규 메모리 피연산자(operand) 전송들을 수행하기 때문에, 프로세서(12)에 의한 실행을 위해 표준 프로세서(12) 로딩 및 저장 명령들을 발생함으로써 데이터 일관성이 달성된다. 또한, 메모리 액세스들이 임의의 다른 표준 로딩 또는 저장 명령들을 실행할 때 프로세서(12)에 의해 발생된 정규 메모리 액세스들과 동일하게 보이기 때문에, 메모리 관리 로직의 적합한 동작이 보증된다. 또한, 코프로세서(12)는 곱셈 유닛, 및 제산 유닛(divide unit), 부동점 유닛들(floating-point units), 또는 표준 프로세서(12) 명령의 실행에 의해 사용될 수 있는 어떤 다른 자원과 같은 어떤 그외 프로세서(12)의 자원의 장점을 취할 수도 있다.
도 2 및 도 3을 참조하면, 일 실시예에서, 명령 발생기(106)는 연산부호(opcode) 필드(202)를 발생하기 위한 연산부호 필드 발생기(110), 하나 이상의 주소 변위 필드들(address displacement field;208)을 발생하기 위한 주소 변위 필드 발생기(112), 하나 이상의 즉시(immediate) 필드들(210)을 발생하기 위한 즉시 필드 발생기(114), 기타 필드들(206)을 발생하기 위한 기타 명령 필드 발생기(118), 및 레지스터 필드들(204)을 발생하기 위한 레지스터 필드 발생기(118)를 구비한다. 대안적 실시예들은 명령 필드들(204, 206, 208, 210)이 선택적이고 어떤 실시예들을 위해 이용되지 않을 수도 있으므로 발생기들(112, 114, 116, 118)을 구현하지 않을 수도 있다.
도 2 내지 도 4를 참조하면, 일 실시예에서, 명령 발생기(106)는 로딩 명령들, 저장 명령들, 및 프로세서(12)를 위한 "서브루틴으로부터 리턴" 명령들을 발생한다. "서브루틴으로부터 리턴" 명령에 있어서, 연산부호 필드 발생기(110)는 연산부호 필드(202)를 위한 서브루틴으로부터 리턴 연산부호를 발생하며, 명령 필드들(204, 206, 208, 210)이 필요없기 때문에, 회로(112, 114, 116, 118)는 이용되지 않는다. 로딩 또는 저장 명령에 대해서, 연산부호 필드 발생기(110)는 로딩/저장 연산부호(222)를 발생하고, 레지스터 필드 발생기(118)는 소스/목적지 레지스터 필드(224) 및 기준 주소 필드(226)를 발생하고, 주소 변위 필드 발생기(114)는 주소 변위 필드(228)를 발생한다. 예시된 실시예에서, 로딩 또는 저장 명령에 대해서, 회로(114, 116)는 명령 필드들(206, 210)이 필요하지 않기 때문에 이용되지 않는다.
도 5 및 도 6은 메모리(54)에서 순환(circular) 버퍼에 저장된 데이터 샘플들에 대한 동작을 수행하기 위해 코프로세서(14)가 이용될 때 코프로세서(14) 내 주소 변위 필드 발생기(112)에 의해 발생된 주소 값들의 예를 도시한다. 도 5는 주소 위치 "B"에 샘플 1을 저장하고, 주소 위치 "B+1"에 샘플 2를 저장하고, 주소 위치 "B+2"에 샘플 3을 저장하고, 주소 위치 "B+3에 샘플 4를 저장하기 위해 순환 버퍼(55)로서 이용되는 메모리(54)의 부분을 도시한 것이다. 도 4를 참조하면, 코프로세서(14)는 연산부호 필드(222)를 위한 로딩 연산부호를 발생하고, 기준 주소 레지스터 필드(226)로서 주소 "B"를 발생하고, 주소 변위 필드(228)로서 "0"을 발생한다. 이어서 이 로딩 명령은 코프로세서(14)로부터 전송되어 명령 콘덕터들(42)에 의해 명령 파이프(20)에 삽입된다. 이어서 프로세서(12)는 이 삽입된 로딩 명령을 디코딩하기 위해 디코딩 회로(22)를 이용한다. 이 삽입된 로딩 명령은 프로세서(12)에 의해 실행된다.
삽입된 로딩 명령은 주소위치 "B"에서 샘플 1을 검색하기 위해 프로세서(12)로 하여금 메모리(54)에 액세스하게 한다. 이어서 검색된 샘플 1은 코프로세서(14)(예를 들면, 레지스터들(104)에)에, 또는 코프로세서(14) 및 프로세서(12)(예를 들면, 레지스터들(24)에) 둘 다에 로딩된다. 삽입된 명령의 포맷은 프로세서(12)에 의해 실행되는 임의의 다른 로딩 명령의 포맷과 동일한 것에 유의한다. 예시된 실시예에서, 바이패스 제어회로(28)의 이용을 제외하고, 로딩 명령이 코프로세서(14)에 의해 삽입되었음이 프로세서(12)에게 명백하다. 바이패스 제어 회로(28)는 메모리(54)로부터 검색된 데이터가 프로세서 레지스터들(24)이 아닌 프로 세서(14)에 직접 로딩되도록 하기 위해, 삽입된 로딩 명령 동안 이용될 수 있다. 코프로세서(14)는 프로세서(12)가 로딩 명령을 실행하는 하는 것에 응답하여, 검색된 데이터를 코프로세서(14)로 직접 전송하기 위해 바이패스 제어회로(28)가 이용되어야 한다는 것을 프로세서(12)의 제어회로(30)에 지시하기 위해 제어신호(예를 들면, 신호들(76) 중 하나)를 이용할 수 있다. 제어회로(30)는 바이패스 제어 회로(28)를 제어하기 위해 하나 이상의 제어신호들(29)을 이용할 수 있다.
도 4를 참조하면, 일 실시예에 있어서, 삽입된 로딩/저장 명령의 소스/목적지 레지스터 필드(224)는 바이패스 제어 회로(28)가 코프로세서(14) 및 바이패스 프로세서(12)로/로부터 직접 로딩/저장 데이터를 전송한다면 이용되지 않을 수도 있는 것에 유의한다. 그러나, 대안적 실시예들에 있어서, 바이패스 제어 회로(28)가 프로세서(12)로/로부터 전송되는 동안 코프로세서(14)로/로부터 직접 로딩/저장 데이터를 전송한다면, 삽입된 로딩/저장 명령의 소스/목적지 레지스터 필드(224)는 여전히 이용된다.
도 5 및 도 6의 예를 계속하면, 코프로세서(14)는 연산부호 필드(222)를 위한 로딩 연산부호를 발생하고, 기준 주소 레지스터 필드(226)로서 주소 "B"를 발생하고, 주소 변위 필드(228)로서 "1"을 발생한다. 이 로딩 명령은 코프로세서(14)로부터 전송되어 명령 콘덕터들(42)에 의해 명령 파이프(20)에 삽입된다. 프로세서(12)는 이 삽입된 로딩 명령을 디코딩하기 위해 디코딩 회로(22)를 이용한다. 이 삽입된 로딩 명령은 프로세서(12)에 의해 실행되고 샘플 2는 메모리(54)로부터 검색되어 레지스터들(104)에 로딩된다.
도 5 및 도 6의 예를 계속하면, 코프로세서(14)는 연산부호 필드(222)를 위한 로딩 연산부호를 발생하고, 기준 주소 레지스터 필드(226)로서 주소 "B"를 발생하고, 주소 변위 필드(228)로서 "2"를 발생한다. 이 로딩 명령은 코프로세서(14)로부터 전송되어 명령 콘덕터들(42)에 의해 명령 파이프(20)에 삽입된다. 프로세서(12)는 이 삽입된 로딩 명령을 디코딩하기 위해 디코딩 회로(22)를 이용한다. 이 삽입된 로딩 명령은 프로세서(12)에 의해 실행되고 샘플 3은 메모리(54)로부터 검색되어 레지스터들(104)에 로딩된다.
도 5 및 도 6의 예를 계속하면, 코프로세서(14)는 연산부호 필드(222)를 위한 로딩 연산부호를 발생하고, 기준 주소 레지스터 필드(226)로서 주소 "B"를 발생하고, 주소 변위 필드(228)로서 "3"을 발생한다. 이 로딩 명령은 코프로세서(14)로부터 전송되어 명령 콘덕터들(42)에 의해 명령 파이프(20)에 삽입된다. 프로세서(12)는 이 삽입된 로딩 명령을 디코딩하기 위해 디코딩 회로(22)를 이용한다. 이 삽입된 로딩 명령은 프로세서(12)에 의해 실행되고 샘플 4는 메모리(54)로부터 검색되어 레지스터들(104)에 로딩된다.
코프로세서(14)는 샘플들 1 ~ 4에 관하여 하나 이상의 동작들을 수행하기 위해 기능 회로(102)(도 2 참조)를 이용한다. 결과적인 계산된 값은 레지스터들(104)에 저장된다. 코프로세서(14)는 연산부호 필드(222)를 위한 저장 연산부호를 발생하고, 기준 주소 레지스터 필드(226)로서 주소 "C"를 발생하고, 주소 변위 필드(228)로서 "0"을 발생한다. 이 저장 명령은 코프로세서(14)로부터 전송되어 명령 콘덕터들(42)에 의해 명령 파이프(20)에 삽입된다. 프로세서(12)는 이 삽입된 저장 명령을 디코딩하기 위해 디코딩 회로(22)를 이용한다. 이 삽입된 저장 명령은 프로세서(12)에 의해 실행되고 값 1이 바이패스 제어회로(28)를 이용하여 레지스터들(104)로부터 검색되어 메모리(54)에 저장된다. 대안적 실시예들은 바이패스 제어회로(28)가 필요하지 않도록 코프로세서(14)가 프로세서(12) 내 소스 레지스터(예를 들면, 레지스터들(24) 중 하나)에 값 1을 저장하게 할 수도 있다. 순환 버퍼에 저장된 한 세트의 입력 샘플들에 관하여 동작하는 코프로세서 기능에 대한 첫번째 반복이 이제 완료되었다. 두 번째 반복이 유사한 방식으로 수행되며, 로딩 명령들을 위한 주소 변위 필드(228)의 변위만이 1, 2, 3, 및 0이 될 것이며 저장 명령에 대한 주소 변위 필드(228)의 변위는 1이 될 것이다. 세 번째 반복이 유사한 방식으로 수행되며, 로딩 명령들을 위한 주소 변위 필드(228)의 변위만이 2, 3, 0, 및 1이 될 것이며 저장 명령에 대한 주소 변위 필드(228)의 변위는 2가 될 것이다.
도 8은 일 실시예에 따라 샘플 명령 스트림을 표 형태로 도시한 것이다. 예시된 실시예에서, 프로그램 카운터(17)의 내용들은 좌측 열(column)에 나열되고, 프로세서(12)에 의해 실행될 대응하는 명령들이 우측 열에 나열된다. 예시된 샘플 명령 스트림에서, 첫 번째 2개의 명령들이 프로세서(12)에 의해 메모리(54)로부터 검색됨에 유의한다. 다음 일 그룹의 명령들이 코프로세서(14)(도 2에 회로(106) 참조)에 의해 발생되고 명령 콘덕터들(42)에 의해 명령 파이프(20)로 직접 전송된다. 리스트 내 마지막 일 그룹의 명령이 프로세서(12)에 의해 메모리(54)로부터 검색된다. 코프로세서(14)는 프로세서(12)가 실행할 임의의 요망되는 유형의 명령들 발생하는데 이용될 수 있는 것에 유의한다.
도 8에서, 서브루틴으로의 분기(branch) 명령은 프로그램 카운터 값 A-75에서 페치된다. 이 서브루틴으로의 분기 명령은 사실상 소프트웨어 기능을 "호출(calling)"하는 것과 유사하게, 특정 코프로세서 기능을 "호출"하기 위해 이용된다. 이 분기의 타겟은 특정 기능을 수행하기 위해 코프로세서(14)에 의해 사용되는 주소들의 범위 내에 있다. 주소 A+100은 요망되는 코프로세서 기능, 기능 2에 대응하며, 요망되는 기능을 시작하기 위해 코프로세서에 시그널링(signal)하는데 이용된다. 프로세서(12)는 요망되는 기능 2에 대한 코프로세서에 의한 실행을 지원하기 위해서 표준 프로세서(12) 명령들이 코프로세서(14)에 의해 프로세서(12)에 공급되는 프로그램 카운터를 계속하여 증분시킬 것이다. 일단 요망되는 기능이 완료되면, 코프로세서(14)는 프로그램 카운터 값이 A+140에 도달하였을 때 "서브루틴으로부터 리턴" 명령을 공급하며, 이는 요망되는 기능이 완료된 것을 나타낸다. 이어서 프로세서(12)는 주소 A-74에서 이전 명령 스트림으로 리턴한다.
도 9는 일 실시예에 따라 도 8의 명령 스트림이 도 1의 프로세서(12) 및 코프로세서(14)에 의해 어떻게 발생되어 실행될 수 있는지를 표 형태로 도시한 것이다. 대안적 실시예들은 임의의 요망되는 방식으로 명령 스트림들을 발생하고 실행할 수 있다. 도 9에 도시된 예는 단지 한 가능한 대안을 기술하려는 것이다.
도 9는 코프로세서(14)가 장래에 프로세서(12) 명령들을 발생하고 코프로세서 동작을 수행하는, 2개의 기능들을 동시에 행하고 있는 동안 명령들이 프로세서(12)에 의해 실행되는 것을 도시한 것이다. 좌측 열(column)은 프로세서(12)에 의해 실행되는 명령들을 도시한 것이다. 화살표들은 프로세서(12)가 실행하기 위해 코프로세서(14)가 발생하여 프로세서(12)로 제공한 명령들을 나타낸다. 중간 열은 프로세서(12)가 실행하기 위해 프로세서(12)로 전달되는 코프로세서(14)에 의해 발생되는 명령들을 도시한 것이다. 우측 열은 코프로세서(14)에 의해 동시에 수행되고 있는 코프로세서 동작들을 도시한 것이다. 이에 따라, 코프로세서(14)는 명령 발생기 회로(106)를 이용하여 프로세서(12)를 위한 명령들을 발생할 수 있고, 아울러 코프로세서(14)는 자신의 명령들을 실행하거나 자신의 동작들을 기능회로(102)를 이용하여 수행한다.
프로세서(12)의 명령 세트의 일부인 표준 명령들을 발생하여 명령 파이프(20)에 삽입하기 위해 코프로세서(14)를 이용함으로써, 하나 이상의 캐시들(70)에 대한 캐시 일관성을 유지하기 위해 프로세서(12)에 의해 이용되는 정규 메커니즘들은 어떠한 추가의 회로 또는 복잡성이 없이 여전히 이용될 수 있는 것에 유의한다. 이에 따라 코프로세서(14)는 코프로세서(14) 내 레지스터들(104)로 및 이로부터 로딩들 및 저장들을 프로세서(12)가 실행하도록 하기 위해서 프로세서(12)의 명령 파이프(20)에 명령들을 삽입할 수 있다. 프로세서(12)가 메모리(54)(도 1 참조)로부터 검색된 로딩 및 저장 명령들을 실행하는 것과 동일한 방식으로 프로세서(12)는 코프로세서(14)에 의해 발생된 로딩 및 저장 명령들을 실행하고 있기 때문에, 프로세서(12)의 제어회로(30)는 캐시 일관성을 유지하기 위해 수행할 오버헤드가 전혀 또는 거의 없다.
도면들의 설명
도 1은 일 실시예에 따른 데이터 처리 시스템(10)을 도시한 것이다. 예시된 실시예에서, 시스템(10)은 콘덕터들(58)에 의해 코프로세서(14)에 양방향으로 결합되는 프로세서(12)를 포함한다. 일 실시예에서, 콘덕터들(58)은 명령 콘덕터들(42), 주소 콘덕터들(44), 제어 콘덕터들(58), 주소 콘덕터들(46) 및 데이터 콘덕터들(48)을 포함한다. 일 실시예에서, 시스템(10)은 버스(32)에 양방향으로 결합되는 메모리 제어기(52) 및 기타 회로(56)를 포함한다. 메모리 제어기(52)는 메모리(54)와 같은 하나 이상의 메모리들에 양방향으로 결합된다. 메모리(54)는 정보를 저장할 수 있는 임의의 유형의 회로 또는 저장 매체일 수 있다. 대안적 실시예들에서, 메모리 제어기(52)는 동일 유형의 메모리일 수 있거나 서로 다른 유형들의 메모리일 수 있는(예를 들면, 비휘발성, 동적 랜덤 액세스 메모리, 등) 복수의 메모리들에 결합될 수 있다. 코프로세서(14)는 콘덕터들(78)에 의해 버스(32)에 양방향으로 결합된다.
일 실시예에서, 프로세서(12)는 명령 주소 발생기(16), 데이터 주소 발생기(18), 명령 파이프(20), 디코딩 회로(22), 복수의 레지스터들(24), 실행유닛(26), 바이패스 제어회로(28), 제어회로(30), 및 캐시(70)를 포함한다. 대안적 실시예들은 프로세서(12)에 더 많은, 또는 더 적은, 또는 서로 다른 부분들의 회로를 이용할 수 있다. 일 실시예에서, 제어회로(30)는 콘덕터들(76)에 의해 코프로세서(14)에 양방향으로 결합되고, 콘덕터들(77)에 의해 명령 주소 발생기(16)에 양방향으로 결합되고, 콘덕터들(79)에 의해 데이터 주소 발생기(18)에 양방향으로 결합되고, 콘덕터들(81)에 의해 명령 파이프(20)에 양방향으로 결합되고, 콘덕터들(83)에 의해 디코딩 회로(22)에 양방향으로 결합되고, 콘덕터들(85)에 의해 레지스터 들(24)에 양방향으로 결합되고, 콘덕터들(87)에 의해 레지스터들(24) 및 실행유닛(26)에 양방향으로 결합되고, 콘덕터들(29)에 의해 바이패스 제어회로(28)에 제어신호들을 제공하기 위해 결합되고, 콘덕터들(89)에 의해 캐시(70)에 양방향으로 결합된다.
일 실시예에서, 코프로세서(14)는 주소 콘덕터들(44)에 의해 명령 주소 발생기(16)에 양방향으로 결합되고, 명령 콘덕터들(42)에 의해 명령 파이프(20)에 양방향으로 결합되고, 주소 콘덕터들(46)에 의해 데이터 주소 발생기(18)에 양방향으로 결합되고, 데이터 콘덕터들(48)에 의해 레지스터들(24)에 양방향으로 결합되고, 데이터 콘덕터들(50)에 의해 바이패스 제어회로(28)에 양방향으로 결합된다. 일 실시예에서, 바이패스 제어회로(28)는 콘덕터들(91)에 의해 레지스터들(24)에 양방향으로 결합된다. 일 실시예에서, 데이터 주소 발생기(18)는 콘덕터들(36)에 의해 버스(32)에 양방향으로 결합되고, 명령 파이프(20)는 콘덕터들(38)에 의해 버스(32)에 양방향으로 결합된다. 일 실시예에서, 캐시(70)는 콘덕터들(74)에 의해 실행유닛(26)에 양방향으로 결합된다. 일 실시예에서, 명령 주소 발생기(16)는 프로그램 카운터(17)를 포함한다. 일 실시예에서, 프로그램 카운터(17)는 현재 실행 명령을 가리키는 레지스터이다. 일 실시예에서, 제어회로(30)는 명령 페치 회로(19)를 포함한다.
시스템(10)의 대안적 실시예들은 프로세서(12)를 구현하기 위해 회로의 서로 다른 블록들 또는 부분들을 이용할 수 있다. 도 1에 도시된 프로세서(12)의 실시예는 프로세서(12)의 많은 가능한 실시예들 중 단지 하나이다. 예를 들면, 프로세 서(12)의 대안적 실시예들은 캐시 또는 복수 레벨들의 캐시를 구비하지 않을 수도 있고, 명령 파이프 또는 임의의 요망되는 깊이의 명령 파이프를 구비하지 않을 수도 있고, 복수의 실행유닛들(예를들면, 26) 등을 구비할 수도 있다. 또한, 프로세서(12)의 구조는 임의의 요망되는 방식으로 구성될 수도 있다. 다른 회로(56)는 임의의 생각가능한 요망되는 회로를 포함할 수 있다. 메모리 제어기(52)는 임의의 유형의 회로일 수도 있다. 일 실시예에서 메모리 제어기(52)는 DMA(Direct Memory Access) 회로를 포함할 수 있다. 일 실시예에서, 도 1에 도시된 회로는 단일 집적회로 상에 형성될 수 있다. 대안적 실시예들에서, 도 1에 도시된 회로는 복수의 집적회로들 상에 형성될 수 있다. 시스템(10)은 임의의 요망되는 애플리케이션들을 위해 이용될 수 있다.
도 2는 도 1의 코프로세서(14)의 부분의 일 실시예를 도시한 것이다. 도 2에 도시된 실시예에서, 코프로세서(14)는 제어회로(100), 기능회로(102), 레지스터들(104), 및 명령 발생기(106)를 포함한다. 일 실시예에서, 제어회로(100)는, 주소 신호들(44)로부터 제 1 주소 값을 수신하기 위해 결합되고 기준 주소 레지스터(122)로부터 제 2 주소 값을 수신하기 위해 결합된 비교기(120)를 포함한다. 비교기(120)는 이들 2개의 수신된 주소 값들을 비교하고 이들이 매칭하는지를 결정한다. 제어회로(100)는 기능회로(102)에 양방향으로 결합되고, 레지스터들(104)에 양방향으로 결합되고, 명령 발생기(106)에 양방향으로 결합된다. 일 실시예에서, 명령 발생기(106)는 연산부호 필드 발생기(110), 주소 변위 필드 발생기(112), 즉시 필드 발생기(114), 그외 명령 필드 발생기(116), 및 레지스터 필드 발생기(118)를 포함한다. 명령 발생기 회로(106)의 회로(110, 112, 114, 116, 118)는 도 3의 명령(200)에서 대응하는 필드들을 발생하기 위해 이용될 수 있는 것에 유의한다.
도 2를 참조하면, 명령 발생기(106)는 하나 이상의 명령들을 제공하기 위해 명령 콘덕터들(42)에 결합된다. 레지스터들(104)은 데이터를 수신하거나 제공하기 위해 데이터 콘덕터들(50)에 결합된다. 레지스터들(104)은 또한 기능회로(102)에 양방향으로 결합된다. 코프로세서(14)의 대안적 실시예들은 코프로세서(14)의 다양한 부분들을 구현하기 위해 회로의 서로 다른 블록들 또는 부분들을 이용할 수 있다. 도 2에 도시된 코프로세서(14)의 실시예는 코프로세서(14)의 많은 가능한 실시예들 중 단지 하나이다. 예를 들면, 기능회로(102)는 임의의 유형 및 임의의 수의 요망되는 기능들을 수행하도록 구현될 수도 있다.
도 3은 코프로세서(14)에 의해 발생될 수 있는 명령(200)의 일 실시예를 도시한 것이다(도 2에 명령 발생기(106) 참조). 도 3에 도시된 명령(200)의 실시예는 명령을 식별하는 연산부호 필드(202), 하나 이상의 레지스터들을 명령에 연루되는 것으로서 나타내는 하나 이상의 레지스터 필드들(204)(대안적 실시예들에서 구현될 수도 있고 또는 구현되지 않을 수도 있는), 임의의 요망되는 기능을 구비할 수 있는 하나 이상의 다른 필드들(206)(대안적 실시예들에서 구현될 수도 있고 또는 구현되지 않을 수도 있는), 주소 변위를 나타내기 위한 하나 이상의 주소 변위 필드들(208)(대안적 실시예들에서 구현될 수도 있고 또는 구현되지 않을 수도 있는), 및 명령의 일부로서 즉시 값들(immediate value)을 제공하기 위한 하나 이상의 즉시 필드들(210)(대안적 실시예들에서 구현될 수도 있고 또는 구현되지 않을 수도 있는)을 포함한다. 대안적 실시예들은 임의의 요망되는 수 및 이들 필드의 조합들 또는 임의의 요망되는 추가의 필드들(도시되지 않음)을 이용할 수도 있다.
도 4는 코프로세서(14)의 일부 실시예들에 의해 발생될 수 있는 명령(220)의 일 실시예를 도시한 것이다. 도 4에 도시된 명령(220)의 실시예는 명령을 로딩 명령 또는 저장 명령으로서 식별하는 로딩/저장 연산부호 필드(222), 로딩 명령을 위한 목적지 레지스터 또는 저장 명령을 위한 소스 레지스터를 명시하는 소스/목적지 레지스터 필드(224), 메모리 액세스를 위한 기준 주소를 제공하는 기준 주소 레지스터 필드(226), 및 메모리 액세스를 위해(예를 들면, 도 1의 메모리(54) 참조) 주소 변위를 제공하기 위한 주소 변위 필드(228)를 포함한다. 대안적 실시예들은 임의의 요망되는 수 및 이들 필드들의 조합을 이용할 수 있다.
도 5는 순환 버퍼(55)를 구현하기 위해 이용된 도 1의 메모리(54)의 부분의 일 실시예를 도시한 것이다.
도 6은 일 실시예에 따라 도 4의 어떤 주소 변위 필드(228)가 언제 도 5의 순환 버퍼(55)의 샘플들에 액세스할 것인지를 가리키는 것을 표 형태로 도시한 것이다. 예시된 실시예에서, 샘플들 1 ~ 4는 도 1의 메모리(54)에 각각 주소 위치들 B 내지 B+3에 저장된 입력 데이터를 나타낸다. 도 4에 도시된 로딩 명령(220)과 같은 복수의 로딩 명령들은 코프로세서(14)에 의해 발생되어 프로세서(12)의 명령 파이프(20)에 삽입된다(도 2 참조). 그러면 프로세서(12)는 코프로세서(14)에 의해 발생된 로딩 명령들(220)을 실행할 수 있다. 프로세서(12)에 의해 실행된 로딩 명령들(220)은 프로세서(12) 및/또는 코프로세서(14) 내 레지스터들(예를 들면 도 2 의 레지스터들(104))에 로딩할 수 있다. 코프로세서(14)의 기능회로(102)(도 2 참조)는 입력 데이터에 관한 하나 이상의 계산들 또는 동작들을 수행하는데 이용될 수 있다.
도 6을 참조하면, 일단 결과값 또는 값들이 코프로세서(14)에 의해 결정되면, 코프로세서(14)는 하나 이상의 저장 명령들(220)을 발생하기 위해 명령 발생기 회로(106)(도 2 참조)를 이용할 수 있다. 이들 저장 명령들(220)은 명령 콘덕터들(42)에 의해 프로세서(12)의 명령 파이프로 제공될 수 있다. 이어서 프로세서(12)는 코프로세서(14)에 의해 발생된 저장 명령들(220)을 실행할 수 있다. 프로세서(12)에 의해 실행되는 저장 명령들(220)은 값들 1 ~ 3을 프로세서(12) 내 레지스터들로부터 및/또는 코프로세서(14) 내 레지스터들(예를 들면 도 2의 레지스터들(104))로부터 메모리(54)(도 1 참조)로 전달할 수 있다. 메모리(54)의 위치들 C 내지 C+2는 결과적인 값들 1 ~ 3을 저장할 것이다.
도 7 내지 도 9는 위에 기술되었다.
전술한 명세서에서, 발명은 특규정 실시예들을 참조하여 기술되었다. 그러나, 당업자는 다양한 수정들 및 변경들이 이하 청구항들에 개시된 본 발명의 범위 내에서 행해질 수 있음을 안다. 따라서, 명세서 및 도면들은 제한적 의미가 아니라 예시로 간주되어야 하고 모든 이러한 수정들은 본 발명의 범위 내에 포함되도록 의도된다.
이익들, 그외 잇점들, 및 문제들에 대한 해결책들이 특정 실시에들에 관하여 위에 기술되었다. 그러나, 이익들, 그외 잇점들, 문제들에 대한 해결책들, 그리고 어떤 이익, 잇점 또는 해결책이 일어나게 하거나 더욱 두드러지게 할 수 있을 임의의 요소(들)은 임의의 또는 모든 청구항들의 결정적, 필요, 또는 필수 특징 또는 요소로서 간주되지 않아야 한다. 여기에 이용되는, "포함하다"라는 용어는 열거된 요소들을 포함하는 공정, 방법, 물품 또는 장치가 이들 요소들만을 포함하는 것이 아니라 분명하게 나열되지 않은 또는 이러한 공정, 방법, 물품 또는 장치에 본연의 다른 요소들을 포함할 수도 있도록, 비배타적 포함을 포함하게 한 것이다.
SC14982TH를 지지하는 추가 청구항들.
1. 제 1 명령 세트를 디코딩하고 실행하는 프로세서에 코프로세서를 인터페이싱하는 방법에 있어서,
상기 코프로세서가 상기 제 1 명령 세트의 적어도 하나의 명령을 발생하는 단계; 및
상기 코프로세서가 상기 제 1 명령 세트의 상기 발생된 적어도 하나의 명령을 디코딩 및 실행하기 위해 상기 프로세서로 제공하는 단계를 포함하는, 인터페이싱 방법.
2. 제 1 항에 있어서, 상기 프로세서가 상기 발생된 적어도 하나의 명령을 디코딩하고 실행하는 단계를 더 포함하는, 인터페이싱 방법.
3. 제 1 항에 있어서, 상기 코프로세서가 상기 제 1 명령 세트의 상기 적어도 하나의 명령을 발생하는 단계는,
상기 제 1 명령 세트 내에 규정된 복수의 연산부호들(opcode)로부터 연산부호를 선택하는 단계, 및
상기 선택된 연산부호를 상기 적어도 하나의 명령의 적어도 일부로서 제공하는 단계를 포함하는, 인터페이싱 방법.
4. 제 3 항에 있어서, 상기 코프로세서가 상기 제 1 명령 세트의 상기 적어도 하나의 명령을 발생하는 단계는,
상기 선택된 연산부호에 대응하는 적어도 하나의 연산자(operand) 필드를 계산하는 단계; 및
상기 선택된 연산부호 및 상기 계산된 연산자 필드를 상기 발생된 적어도 하나의 명령의 적어도 일부로서 제공하는 단계를 포함하는, 인터페이싱 방법.
5. 제 4 항에 있어서, 상기 적어도 하나의 연산자 필드를 계산하는 단계는 주소 변위 필드를 계산하는 단계를 포함하는, 인터페이싱 방법.
6. 제 4 항에 있어서, 상기 적어도 하나의 연산자 필드를 계산하는 단계는 즉시 필드(immediate field)를 계산하는 단계를 포함하는, 인터페이싱 방법.
7. 제 4 항에 있어서, 상기 적어도 하나의 연산자 필드를 계산하는 단계는 레지스터 필드를 계산하는 단계를 포함하는, 인터페이싱 방법.
8. 제 1 항에 있어서, 상기 코프로세서가 상기 적어도 하나의 명령을 발생하는 단계는 실행시간(runtime)에 수행되는, 인터페이싱 방법.
9. 제 1 항에 있어서, 상기 발생된 적어도 하나의 명령은 상기 프로세서에 의해 발생된 명령 페치(fetch) 주소에 저장되지 않는, 인터페이싱 방법.
10. 제 1 항에 있어서, 상기 코프로세서는 상기 발생된 적어도 하나의 명령을 상기 프로세서로 제공하기 전에 미리결정된 량의 시간을 대기하는, 인터페이싱 방법.
11. 제 1 항에 있어서, 상기 코프로세서가 상기 적어도 하나의 명령을 발생하는 단계는, 상기 코프로세서가 복수의 명령들을 제공하는 단계로서, 상기 복수의 명령들 각각은 상기 제 1 명령 세트 내에 있으며, 상기 복수의 명령들의 상기 명령들의 시퀀스가 상기 코프로세서에 의해 실행시간에 결정되는, 상기 복수의 명령 제공 단계를 포함하는, 인터페이싱 방법.
12. 제 11 항에 있어서, 상기 코프로세서는 명령들의 리스트로부터 상기 복수의 명령들의 각 명령을 선택하는, 인터페이싱 방법.
13. 저장 명령 및 로딩 명령을 포함하는 제 1 명령 세트를 디코딩하고 실행하는 프로세서에 코프로세서를 인터페이싱하는 방법에 있어서,
상기 코프로세서가 상기 저장 명령 또는 상기 로딩 명령에 대응하는 연산부호를 선택하는 단계;
상기 코프로세서가 상기 선택된 연산부호에 대응하는 주소 변위를 계산하는 단계;
상기 코프로세서가 상기 선택된 연산부호 및 상기 계산된 주소 변위를 발생된 명령으로서 상기 프로세서로 제공하는 단계; 및
상기 프로세서가 상기 발생된 명령을 디코딩하고 실행하는 단계를 포함하는, 인터페이싱 방법.
14. 제 13 항에 있어서, 상기 선택된 연산부호는 상기 로딩 명령에 대응하며, 상기 방법은,
상기 프로세서가 상기 발생된 명령을 실행하는 것에 응답하여, 상기 코프로세서가 데이터 값을 수신하는 단계; 및
상기 코프로세서가 코프로세서 기능을 수행하기 위해 상기 데이터 값을 이용하는 단계를 더 포함하는, 인터페이싱 방법.
15. 제 14 항에 있어서, 상기 선택된 연산부호는 상기 저장 명령에 대응하며, 상기 방법은,
상기 코프로세서가 코프로세서 기능을 수행하고 결과 값을 얻는 단계; 및
상기 코프로세서가 상기 발생된 명령에 의해 지시된 위치에 저장될 상기 결과 값을 제공하는 단계를 더 포함하는, 인터페이싱 방법.
16. 제 13 항에 있어서, 상기 발생된 명령은 상기 프로세서에 의해 발생된 명령 페치 주소에 저장되지 않는, 인터페이싱 방법.
17. 제 13 항에 있어서,
상기 코프로세서가 상기 저장 명령 또는 상기 로딩 명령에 대응하는 제 2 연산부호를 선택하는 단계;
상기 코프로세서가 상기 선택된 제 2 연산부호에 대응하는 제 2 주소 변위를 계산하는 단계;
상기 코프로세서가 상기 선택된 제 2 연산부호 및 상기 계산된 제 2 주소 변위를 제 2 발생된 명령으로서 상기 프로세서로 제공하는 단계: 및
상기 프로세서가 상기 제 2 발생된 명령을 디코딩하고 실행하는 단계로서, 상기 제 2 발생된 명령은 상기 프로세서에 의해 발생된 명령 페치 주소에 저장되지 않는, 디코딩 및 실행 단계를 더 포함하는, 인터페이싱 방법.
18. 데이터 처리 시스템에 있어서,
명령 세트의 명령들을 디코딩하고 실행하기 위한 디코딩 및 실행 회로와 페치 주소들을 발생하기 위한 명령 페치 회로를 구비하는, 프로세서; 및
상기 프로세서에 결합된 코프로세서로서, 상기 명령 세트의 적어도 하나의 명령을 발생하기 위한 명령 발생 회로를 구비하는 코프로세서를 포함하고;
동작의 제 1 모드에서, 상기 프로세서는 상기 프로세서에 의해 발생된 상기 페치 주소들에서 저장되는 상기 명령 세트의 명령들을 디코딩하고 실행하며, 동작의 제 2 모드에서, 상기 프로세서는 상기 코프로세서에 의해 상기 명령 발생 회로에 의해 발생된 상기 명령 세트의 명령들을 디코딩하고 실행하는, 데이터 처리 시스템.
19. 제 18 항에 있어서, 상기 코프로세서의 상기 명령 발생 회로에 의해 발생된 상기 명령 세트의 상기 명령들은 상기 프로세서에 의해 발생된 페치 주소들에 저장되지 않는, 데이터 처리 시스템.
20. 제 19 항에 있어서, 상기 명령 발생 회로에 의해 발생된 상기 명령 세트의 상기 명령들은 상기 프로세서의 상기 명령 페치 회로에 의해 발생된 페치 주소들에 응답하여 제공되는, 데이터 처리 시스템.
SC14982TH를 지지하는 추가 청구항들
1. 코프로세서에 의해 프로세서를 위한 필터를 구현하는 방법에 있어서,
상기 코프로세서가 복수의 입력 샘플들을 로딩하기 위한 복수의 로딩 명령들을 발생하는 단계;
상기 발생된 복수의 로딩 명령들을 상기 프로세서로 제공하는 단계;
상기 프로세서가 상기 발생된 복수의 로딩 명령들을 디코딩하고 실행하는 단계;
상기 프로세서가 상기 발생된 복수의 로딩 명령들을 디코딩하고 실행하는 것에 응답하여, 상기 코프로세서가 상기 복수의 입력 샘플들을 수신하는 단계; 및
상기 코프로세서가 상기 복수의 입력 샘플들을 이용하여 필터링 동작을 수행하는 단계를 포함하는, 필터 구현 방법.
2. 제 1 항에 있어서, 상기 프로세서는 명령 세트를 디코딩하고 실행하며, 상기 발생된 복수의 로딩 명령들 각각은 상기 명령 세트 내에 있는, 필터 구현 방법.
3. 제 1 항에 있어서, 상기 발생된 복수의 로딩 명령들은 상기 프로세서에 의해 발생된 페치 주소들에 저장되지 않는, 필터 구현 방법.
4. 제 1 항에 있어서, 상기 복수의 입력 샘플들을 이용하여 상기 필터링 동작을 수행하는 것에 응답하여, 계산된 값을 상기 코프로세서가 얻는 단계;
상기 코프로세서가 저장 명령을 발생하는 단계;
상기 코프로세서가 상기 발생된 저장 명령을 상기 프로세서로 제공하는 단계; 및
상기 프로세서가 상기 계산된 값을 저장하기 위해 상기 발생된 저장 명령을 디코딩하고 실행하는 단계를 더 포함하는, 필터 구현 방법.
5. 제 4 항에 있어서, 상기 발생된 저장 명령은 상기 프로세서에 의해 발생된 페치 주소에 저장되지 않는, 필터 구현 방법.
6. 제 4 항에 있어서, 상기 프로세서가 명령 세트를 디코딩하고 실행하며, 상기 발생된 저장 명령은 상기 명령 세트 내에 있는, 필터 구현 방법.
7. 제 1 항에 있어서, 상기 코프로세서가 상기 복수의 로딩 명령들을 발생하는 단계는, 상기 복수의 로딩 명령들 각각에 대한 주소 변위 필드를 계산하는 단계를 포함하는, 필터 구현 방법.
8. 제 7 항에 있어서, 상기 복수의 로딩 명령들 각각에 대한 주소 변위 필드를 계산하는 단계는 적어도 하나의 필터 특징에 기초하여 수행되는, 필터 구현 방법.
9. 제 8 항에 있어서, 상기 적어도 하나의 필터 특징은 필터링 동작 유형, 필터 길이, 입력/출력 샘플들의 수, 및 탭들의 수로 구성된 그룹에서 선택되는, 필터 구현 방법.
10. 제 1 항에 있어서, 상기 코프로세서는 발생될 상기 복수의 로딩 명령들을 상기 필터링 동작에 기초하여 동적으로 결정하는, 필터 구현 방법.
11. 제 1 항에 있어서, 상기 코프로세서가 복수의 필터계수들을 로딩하기 위한 제 2 복수의 로딩 명령들을 발생하는 단계;
상기 발생된 제 2 복수의 로딩 명령들을 상기 프로세서로 제공하는 단계;
상기 프로세서가 상기 발생된 제 2 복수의 로딩 명령들을 디코딩하고 실행하 는 단계;
상기 프로세서가 상기 발생된 제 2 복수의 로딩 명령들을 디코딩하고 실행하는 것에 응답하여, 상기 코프로세서가 상기 복수의 필터계수들을 수신하는 단계; 및
상기 코프로세서가 상기 복수의 입력 샘플들 및 상기 복수의 필터 계수들을 이용하여 상기 필터링 동작을 수행하는 단계를 더 포함하는, 필터 구현 방법.
12. 제 1 항에 있어서, 상기 코프로세서에 의해 구현된 상기 필터는 FIR 필터를 포함하는, 필터 구현 방법.
13. 코프로세서에 의해 프로세서를 위한 필터를 구현하는 방법에 있어서,
상기 필터의 유형, 상기 필터의 길이, 및 상기 필터의 현 상태로 구성된 그룹에서 선택된 상기 필터의 적어도 하나의 특징을 결정하는 단계;
상기 코프로세서가 상기 필터의 상기 적어도 하나의 특징에 기초하여 명령들의 시퀀스를 발생하는 단계로서, 상기 명령들의 시퀀스에서 각 명령의 주소 변위 필드를 계산하기 위해 상기 필터의 상기 적어도 하나의 특징을 이용하는 것을 포함하는, 상기 명령들의 시퀀스를 발생하는 단계;
상기 코프로세서가 상기 프로세서에 상기 발생된 명령들의 시퀀스를 제공하는 단계; 및
상기 프로세서가 상기 발생된 명령들의 시퀀스를 디코딩하고 실행하는 단계를 포함하는, 필터 구현 방법.
14. 제 13 항에 있어서, 상기 발생된 명령들의 시퀀스는 적어도 하나의 발생 된 로딩 명령을 포함하고, 상기 프로세서가 상기 발생된 로딩 명령을 디코딩하고 실행하는 것에 응답하여, 상기 프로세서가 입력 샘플을 수신하는 단계를 포함하는, 필터 구현 방법.
15. 제 14 항에 있어서, 상기 코프로세서는 필터 동작을 수행하기 위해 상기 입력 샘플을 이용하는 단계를 더 포함하는, 필터 구현 방법.
16. 제 14 항에 있어서, 상기 발생된 명령들의 시퀀스는 적어도 하나의 발생된 저장 명령을 포함하고, 상기 프로세서가 상기 발생된 저장 명령을 디코딩하고 실행하는 것에 응답하여, 상기 코프로세서에 의해 계산된 출력값이 저장되는, 필터 구현 방법.
17. 제 13 항에 있어서, 상기 코프로세서가 계산된 값을 얻기 위해서 필터 동작을 수행하는 단계를 더 포함하고, 상기 발생된 명령들의 시퀀스는 적어도 하나의 발생된 저장 명령을 포함하고, 상기 프로세서는 상기 코프로세서에 의해 제공된 상기 계산된 값을 저장하기 위해 상기 발생된 저장 명령을 디코딩하고 실행하는, 필터 구현 방법.
18. 제 13 항에 있어서, 상기 명령들의 시퀀스는 상기 명령들의 시퀀스에서 각 명령의 상기 주소 변위 필드를 계산하기 위해 상기 필터의 복수의 필터특징을 이용하는 단계를 포함하는, 필터 구현 방법.
19. 데이터 처리 시스템에 있어서,
프로세서를 위한 필터를 구현하기 위한 코프로세서로서,
복수의 입력 샘플들을 로딩하기 위한 복수의 로딩 명령들을 발생하고, 복수의 계산된 값들을 저장하기 위한 복수의 저장 명령들을 발생하며, 상기 발생된 복수의 로딩 명령들 및 상기 발생된 복수의 저장 명령들을 상기 프로세서로 제공하기 위한 명령 발생기로서, 상기 발생된 복수의 로딩 명령들 및 상기 발생된 복수의 저장 명령들 각각에 대해 주소 변위를 계산하기 위한 주소 변위 필드 발생기를 포함하는, 상기 명령 발생기; 및
상기 복수의 계산된 값들을 얻기 위해 상기 복수의 입력 샘플들을 이용하여 필터 동작을 수행하는 기능회로를 포함하는, 상기 코프로세서; 및
상기 코프로세서에 결합된 프로세서로서, 상기 코프로세서에 상기 입력 샘플들을 제공하기 위해 상기 발생된 복수의 로딩 명령들을 디코딩하고 실행하며, 상기 복수의 계산된 값들을 저장하기 위해 상기 발생된 복수의 저장 명령들을 디코딩하고 실행하기 위한 디코딩 및 실행 회로를 포함하는, 상기 프로세서를 포함하는, 데이터 처리 시스템.
20. 제 19 항에 있어서, 상기 발생된 복수의 로딩 명령들 및 상기 발생된 복수의 저장 명령들은 상기 프로세서에 의해 발생된 페치 주소들에 저장되지 않는, 데이터 처리 시스템.
SC14983TH를 지지하는 추가 청구항들
1. 복수의 코프로세서 동작들을 수행할 수 있는 코프로세서에 프로세서를 인터페이싱하는 방법에 있어서,
상기 프로세서가 타겟 주소로부터 명령 페치를 수행하는 단계;
상기 프로세서가 상기 타겟 주소로부터 상기 명령 페치를 수행하는 것에 응답하여, 상기 코프로세서가 상기 타겟 주소의 적어도 일부에 기초하여 선택되는 상기 복수의 코프로세서 동작들 중 하나를 개시하는 단계를 포함하는, 인터페이싱 방법.
2. 제 1 항에 있어서, 상기 프로세서가 상기 타겟 주소로부터 상기 명령 페치를 수행하기 전에, 상기 프로세서가 상기 타겟 주소로 플로우(flow)의 변경을 초래하는 명령을 디코딩하는 단계를 더 포함하는, 인터페이싱 방법.
3. 제 2 항에 있어서, 상기 타겟 주소로 플로우의 변경을 초래하는 상기 명령은 분기 명령인, 인터페이싱 방법.
4. 제 2 항에 있어서, 상기 타겟 주소로 플로우의 변경을 초래하는 상기 명령은 서브루틴으로의 분기 명령인, 인터페이싱 방법.
5. 제 4 항에 있어서, 상기 복수의 코프로세서 동작들 중 하나를 개시한 후에 상기 코프로세서가 상기 복수의 코프로세서 동작들 중 하나를 완료하는 단계;
서브루틴으로부터 리턴 명령을 상기 프로세서로 제공하는 단계; 및
상기 프로세서가 상기 서브루틴으로부터 리턴 명령을 디코딩하고 실행하는 단계를 더 포함하는, 인터페이싱 방법.
6. 제 1 항에 있어서, 상기 타겟 주소로부터의 상기 명령 페치에 응답하여 상기 코프로세서가 상기 프로세서에 제 1 명령을 제공하는 단계; 및
상기 프로세서가 상기 제 1 명령을 실행하고 디코딩하는 단계를 더 포함하는, 인터페이싱 방법.
7. 제 6 항에 있어서, 상기 프로세서가 상기 타겟 주소 다음의 제 2 명령 주소로부터 제 2 명령 페치를 수행하는 단계;
상기 제 2 명령 주소로부터 상기 상기 제 2 명령 페치에 응답하여, 상기 코프로세서가 제 2 명령을 상기 프로세서로 제공하는 단계; 및
상기 프로세서가 상기 제 2 명령을 실행하고 디코딩하는 단계를 더 포함하는, 인터페이싱 방법.
8. 제 7 항에 있어서, 상기 제 2 명령은 플로우 변경 명령을 포함하는, 인터페이싱 방법.
9. 제 8 항에 있어서, 상기 제 2 명령은 상기 제 1 명령 주소 다음의 주소에 대한 플로우 변경을 초래하는, 인터페이싱 방법.
10. 제 1 항에 있어서, 상기 복수의 코프로세서 동작들 각각은 적어도 하나의 명령 주소에 대응하며, 상기 적어도 하나의 명령 주소는 물리적 메모리 어레이 위치에 액세스하지 않는, 인터페이싱 방법.
11. 복수의 코프로세서 동작들을 수행할 수 있는 코프로세서에 프로세서를 인터페이싱하는 방법에 있어서,
상기 프로세서가 메모리로부터 복수의 명령들을 페치하는 단계;
상기 프로세서가 상기 복수의 명령들을 실행하는 단계로서, 상기 복수의 명령들 중 제 1 명령은 타겟 주소를 갖는 분기 명령을 포함하는, 실행 단계;
상기 프로세서가 상기 타겟 주소로부터 명령 페치를 수행하는 단계;
상기 프로세서가 상기 타겟 주소로부터 상기 명령 페치를 수행하는 것에 응 답하여, 상기 코프로세서가 상기 프로세서에 적어도 하나의 명령을 제공하는 단계; 및
상기 프로세서가 상기 적어도 하나의 명령을 디코딩하고 실행하는 단계를 포함하는, 인터페이싱 방법.
12. 제 11 항에 있어서, 복수의 코프로세서 동작들 중 하나를 선택하기 위해 상기 타겟 주소를 이용하는 단계를 더 포함하고, 상기 코프로세서에 의해 상기 프로세서로 제공된 상기 적어도 하나의 명령은 상기 선택된 코프로세서 동작을 수행하는데 이용되는 데이터를 로딩 또는 저장하기 위한 명령들을 포함하는, 인터페이싱 방법.
13. 제 11 항에 있어서, 상기 분기 명령은 서브루틴으로의 분기 명령을 포함하며, 상기 코프로세서에 의해 상기 프로세서로 제공된 상기 적어도 하나의 명령은 서브루틴으로부터 리턴 명령을 포함하는, 인터페이싱 방법.
14. 제 11 항에 있어서, 상기 코프로세서가 상기 프로세서에 상기 적어도 하나의 명령을 제공하는 단계는 상기 프로세서에 의해 발생된 명령 페치 주소에 응답하여 상기 적어도 하나의 명령의 각 명령이 상기 프로세서로 제공되도록 수행되는, 인터페이싱 방법.
15. 제 14 항에 있어서, 상기 명령 페치 주소들은 주소들의 미리결정된 범위 내에 있고, 상기 방법은, 상기 타겟 명령이 상기 주소들의 미리결정된 범위 내의 어디에 속하는지에 기초하여 상기 복수의 코프로세서 동작들 중 하나를 선택하는 단계를 더 포함하는, 인터페이싱 방법.
16. 제 15 항에 있어서, 상기 코프로세서에 의해 상기 프로세서로 제공되는 상기 적어도 하나의 명령은 제 2 타겟 주소로의 플로우 변경 명령을 포함하며, 상기 제 2 타겟 주소는 상기 주소들의 미리결정된 범위 밖에 위치된, 인터페이싱 방법.
17. 제 15 항에 있어서, 상기 주소들의 미리결정된 범위는 어떠한 물리적 저장 위치들에도 대응하지 않는, 인터페이싱 방법.
18. 데이터 처리 시스템에 있어서,
명령 세트의 명령들을 디코딩하고 실행하기 위한 디코딩 및 실행 회로와 페치 주소들을 발생하기 위한 명령 페치 회로를 구비하는, 프로세서; 및
상기 프로세서에 결합된 코프로세서로서, 상기 명령 세트의 명령을 발생하고 상기 페치 주소들이 주소들의 미리결정된 범위 내에 있을 때 상기 발생된 명령을 상기 프로세서로 제공하기 위한 명령 발생 회로를 구비하는, 상기 코프로세서를 포함하는, 데이터 처리 시스템.
19. 제 18 항에 있어서, 상기 코프로세서는 적어도 하나의 코프로세서 동작을 수행하는 기능회로를 더 포함하고, 상기 코프로세서는 상기 명령 페치 회로에 의해 발생된 페치 주소가 상기 주소들의 미리결정된 범위 내에 있을 때 상기 적어도 하나의 코프로세서 동작을 개시하며, 상기 코프로세서는 상기 페치 주소가 상기 주소들의 미리결정된 범위 내의 어디에 속하는지에 기초하여 상기 적어도 하나의 코프로세서 동작을 선택하는, 데이터 처리 시스템.
20. 제 18 항에 있어서, 상기 주소들의 미리결정된 범위의 기준 주소를 저장 하기 위한 기준 레지스터 주소; 및 상기 페치 주소들을 상기 기준 주소와 비교하기 위한 비교기를 더 포함하는, 데이터 처리 시스템.
21. 제 18 항에 있어서, 상기 주소들의 미리결정된 범위는 어떠한 물리적 저장 위치들에도 대응하지 않는, 데이터 처리 시스템.
Claims (9)
- 제 1 명령 세트를 디코딩하고 실행하는 프로세서에 코프로세서(coprocessor)를 인터페이싱하는 방법에 있어서,상기 코프로세서가 상기 제 1 명령 세트의 적어도 하나의 명령을 발생하는 단계; 및상기 코프로세서가 상기 제 1 명령 세트의 상기 발생된 적어도 하나의 명령을 디코딩 및 실행하기 위해 상기 프로세서로 제공하는 단계를 포함하는, 인터페이싱 방법.
- 저장 명령 및 로딩 명령을 포함하는 제 1 명령 세트를 디코딩하고 실행하는 프로세서에 코프로세서를 인터페이싱하는 방법에 있어서,상기 코프로세서가 상기 저장 명령 또는 상기 로딩 명령에 대응하는 연산부호(opcode)를 선택하는 단계;상기 코프로세서가 상기 선택된 연산부호에 대응하는 주소 변위(address displacement)를 계산하는 단계;상기 코프로세서가 상기 선택된 연산부호 및 상기 계산된 주소 변위를 발생된 명령으로서 상기 프로세서로 제공하는 단계; 및상기 프로세서가 상기 발생된 명령을 디코딩하고 실행하는 단계를 포함하는, 인터페이싱 방법.
- 데이터 처리 시스템에 있어서,명령 세트의 명령들을 디코딩하고 실행하기 위한 디코딩 및 실행 회로와, 페치 주소들(fetch addresses)을 발생하기 위한 명령 페치 회로를 구비하는, 프로세서; 및상기 프로세서에 결합된 코프로세서로서, 상기 명령 세트의 적어도 하나의 명령을 발생하기 위한 명령 발생 회로를 구비하는, 상기 코프로세서를 포함하고;동작의 제 1 모드에서, 상기 프로세서는 상기 프로세서에 의해 발생된 상기 페치 주소들에서 저장되는 상기 명령 세트의 명령들을 디코딩하고 실행하며, 동작의 제 2 모드에서, 상기 프로세서는 상기 코프로세서의 상기 명령 발생 회로에 의해 발생된 상기 명령 세트의 명령들을 디코딩하고 실행하는, 데이터 처리 시스템.
- 코프로세서에 의해 프로세서를 위한 필터를 구현하는 방법에 있어서,상기 코프로세서가 복수의 입력 샘플들을 로딩하기 위한 복수의 로딩 명령들을 발생하는 단계;상기 발생된 복수의 로딩 명령들을 상기 프로세서로 제공하는 단계;상기 프로세서가 상기 발생된 복수의 로딩 명령들을 디코딩하고 실행하는 단계;상기 프로세서가 상기 발생된 복수의 로딩 명령들을 디코딩하고 실행하는 것에 응답하여, 상기 코프로세서가 상기 복수의 입력 샘플들을 수신하는 단계; 및상기 코프로세서가 상기 복수의 입력 샘플들을 이용하여 필터링 동작을 수행하는 단계를 포함하는, 필터 구현 방법.
- 코프로세서에 의해 프로세서를 위한 필터를 구현하는 방법에 있어서,상기 필터의 유형, 상기 필터의 길이, 및 상기 필터의 현 상태로 구성된 그룹에서 선택된 상기 필터의 적어도 하나의 특징을 결정하는 단계;상기 코프로세서가 상기 필터의 상기 적어도 하나의 특징에 기초하여 명령들의 시퀀스를 발생하는 단계로서, 상기 명령들의 시퀀스를 발생하는 단계는 상기 명령들의 시퀀스에서 각 명령의 주소 변위 필드를 계산하기 위해 상기 필터의 상기 적어도 하나의 특징을 이용하는 단계를 포함하는, 상기 명령들의 시퀀스 발생 단계;상기 코프로세서가 상기 프로세서에 상기 발생된 명령들의 시퀀스를 제공하는 단계; 및상기 프로세서가 상기 발생된 명령들의 시퀀스를 디코딩하고 실행하는 단계를 포함하는, 필터 구현 방법.
- 데이터 처리 시스템에 있어서,프로세서를 위한 필터를 구현하기 위한 코프로세서로서, 상기 코프로세서는,복수의 입력 샘플들을 로딩하기 위한 복수의 로딩 명령들을 발생하고, 복수의 계산된 값들을 저장하기 위한 복수의 저장 명령들을 발생하며, 상기 발생된 복수의 로딩 명령들 및 상기 발생된 복수의 저장 명령들을 상기 프로세서로 제공하는 명령 발생기로서, 상기 발생된 복수의 로딩 명령들 각각에 대해서 그리고 상기 발생된 복수의 저장 명령들 각각에 대해 주소 변위를 계산하기 위한 주소 변위 필드 발생기를 포함하는, 상기 명령 발생기; 및상기 복수의 계산된 값들을 얻도록 상기 복수의 입력 샘플들을 이용하여 필터 동작을 수행하는 기능회로를 포함하는, 상기 코프로세서; 및상기 코프로세서에 결합된 프로세서로서, 상기 코프로세서에 상기 입력 샘플들을 제공하기 위해 상기 발생된 복수의 로딩 명령들을 디코딩하고 실행하며, 상기 복수의 계산된 값들을 저장하기 위해 상기 발생된 복수의 저장 명령들을 디코딩하고 실행하기 위한 디코딩 및 실행 회로를 포함하는, 상기 프로세서를 포함하는, 데이터 처리 시스템.
- 복수의 코프로세서 동작들을 수행할 수 있는 코프로세서에 프로세서를 인터페이싱하는 방법에 있어서,상기 프로세서가 타겟 주소로부터 명령 페치를 수행하는 단계;상기 프로세서가 상기 타겟 주소로부터 상기 명령 페치를 수행하는 것에 응답하여, 상기 코프로세서가 상기 타겟 주소의 적어도 일부에 기초하여 선택되는 상기 복수의 코프로세서 동작들 중 하나를 개시하는 단계를 포함하는, 인터페이싱 방법.
- 복수의 코프로세서 동작들을 수행할 수 있는 코프로세서에 프로세서를 인터페이싱하는 방법에 있어서,상기 프로세서가 메모리로부터 복수의 명령들을 페치하는 단계;상기 프로세서가 상기 복수의 명령들을 실행하는 단계로서, 상기 복수의 명령들 중 제 1 명령은 타겟 주소를 갖는 분기 명령(branch instruction)을 포함하는, 상기 복수의 명령 실행 단계;상기 프로세서가 상기 타겟 주소로부터 명령 페치를 수행하는 단계;상기 프로세서가 상기 타겟 주소로부터 상기 명령 페치를 수행하는 것에 응답하여, 상기 코프로세서가 상기 프로세서에 적어도 하나의 명령을 제공하는 단계; 및상기 프로세서가 상기 적어도 하나의 명령을 디코딩하고 실행하는 단계를 포함하는, 인터페이싱 방법.
- 데이터 처리 시스템에 있어서,명령 세트의 명령들을 디코딩하고 실행하기 위한 디코딩 및 실행 회로와 페치 주소들을 발생하기 위한 명령 페치 회로를 구비하는 프로세서; 및상기 프로세서에 결합된 코프로세서로서, 상기 명령 세트의 명령을 발생하고 상기 페치 주소들이 미리결정된 범위의 주소들 내에 포함될 때 상기 발생된 명령을 상기 프로세서로 제공하기 위한 명령 발생 회로를 구비하는, 상기 코프로세서를 포함하는, 데이터 처리 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/426,628 US20070300042A1 (en) | 2006-06-27 | 2006-06-27 | Method and apparatus for interfacing a processor and coprocessor |
US11/426,628 | 2006-06-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20090023418A true KR20090023418A (ko) | 2009-03-04 |
Family
ID=38846364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087031623A KR20090023418A (ko) | 2006-06-27 | 2007-04-24 | 프로세서 및 코프로세서를 인터페이싱하는 방법 및 장치 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070300042A1 (ko) |
KR (1) | KR20090023418A (ko) |
CN (1) | CN101479712A (ko) |
WO (1) | WO2008002716A2 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7698542B2 (en) * | 2006-08-25 | 2010-04-13 | Infineon Technologies Ag | Circuit and method for comparing program counter values |
CN101895743B (zh) * | 2010-03-11 | 2013-11-13 | 宇龙计算机通信科技(深圳)有限公司 | 一种处理器间编解码数据的传输方法、系统及可视电话 |
CN102043609B (zh) * | 2010-12-14 | 2013-11-20 | 东莞市泰斗微电子科技有限公司 | 一种浮点协处理器及相应的配置、控制方法 |
CN104424033B (zh) * | 2013-09-02 | 2018-10-12 | 联想(北京)有限公司 | 一种电子设备及数据处理方法 |
US10733141B2 (en) * | 2018-03-27 | 2020-08-04 | Analog Devices, Inc. | Distributed processor system |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4882674A (en) * | 1985-03-05 | 1989-11-21 | Wang Laboratories, Inc. | Apparatus and method for control of one computer system by another computer system |
US5053949A (en) * | 1989-04-03 | 1991-10-01 | Motorola, Inc. | No-chip debug peripheral which uses externally provided instructions to control a core processing unit |
EP0624844A2 (en) * | 1993-05-11 | 1994-11-17 | International Business Machines Corporation | Fully integrated cache architecture |
US5790881A (en) * | 1995-02-07 | 1998-08-04 | Sigma Designs, Inc. | Computer system including coprocessor devices simulating memory interfaces |
US5960209A (en) * | 1996-03-11 | 1999-09-28 | Mitel Corporation | Scaleable digital signal processor with parallel architecture |
US6223277B1 (en) * | 1997-11-21 | 2001-04-24 | Texas Instruments Incorporated | Data processing circuit with packed data structure capability |
US6480952B2 (en) * | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
US6446221B1 (en) * | 1999-05-19 | 2002-09-03 | Arm Limited | Debug mechanism for data processing systems |
US6526430B1 (en) * | 1999-10-04 | 2003-02-25 | Texas Instruments Incorporated | Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing) |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US6865663B2 (en) * | 2000-02-24 | 2005-03-08 | Pts Corporation | Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode |
US6938132B1 (en) * | 2002-04-04 | 2005-08-30 | Applied Micro Circuits Corporation | Memory co-processor for a multi-tasking system |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
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 |
JP4211751B2 (ja) * | 2005-03-25 | 2009-01-21 | セイコーエプソン株式会社 | 集積回路装置 |
-
2006
- 2006-06-27 US US11/426,628 patent/US20070300042A1/en not_active Abandoned
-
2007
- 2007-04-24 WO PCT/US2007/067287 patent/WO2008002716A2/en active Application Filing
- 2007-04-24 CN CNA200780024086XA patent/CN101479712A/zh active Pending
- 2007-04-24 KR KR1020087031623A patent/KR20090023418A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
CN101479712A (zh) | 2009-07-08 |
WO2008002716A3 (en) | 2008-07-24 |
WO2008002716A2 (en) | 2008-01-03 |
US20070300042A1 (en) | 2007-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6718454B2 (ja) | 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと | |
US9965274B2 (en) | Computer processor employing bypass network using result tags for routing result operands | |
US9239735B2 (en) | Compiler-control method for load speculation in a statically scheduled microprocessor | |
US7065632B1 (en) | Method and apparatus for speculatively forwarding storehit data in a hierarchical manner | |
US7805590B2 (en) | Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence | |
JPH04313121A (ja) | インストラクションメモリ装置 | |
US10740105B2 (en) | Processor subroutine cache | |
US6611909B1 (en) | Method and apparatus for dynamically translating program instructions to microcode instructions | |
JP2002512399A (ja) | 外部コプロセッサによりアクセス可能なコンテキストスイッチレジスタセットを備えたriscプロセッサ | |
JPH02224025A (ja) | コンピューターシステム | |
WO2016210020A1 (en) | Explicit instruction scheduler state information for a processor | |
JP2011086298A (ja) | プログラム・フロー制御 | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
JP2012515388A (ja) | 大命令幅プロセッサにおける処理効率の向上 | |
US9977675B2 (en) | Next-instruction-type-field | |
JP5625809B2 (ja) | 演算処理装置、情報処理装置及び制御方法 | |
KR20090023418A (ko) | 프로세서 및 코프로세서를 인터페이싱하는 방법 및 장치 | |
EP1050811A1 (en) | Branching in a computer system | |
US20060095746A1 (en) | Branch predictor, processor and branch prediction method | |
US7925862B2 (en) | Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges | |
KR102458467B1 (ko) | 벡터 생성 명령 | |
KR100974401B1 (ko) | 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치 | |
US6675287B1 (en) | Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor | |
US5983344A (en) | Combining ALU and memory storage micro instructions by using an address latch to maintain an address calculated by a first micro instruction | |
JP2013161484A (ja) | 再構成可能コンピューティング装置、その第1メモリ制御器及び第2メモリ制御器、並びにそのデバッギング用のトレースデータを処理する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |