KR100563012B1 - 처리기를보조처리기에인터페이스하는방법및그장치 - Google Patents

처리기를보조처리기에인터페이스하는방법및그장치 Download PDF

Info

Publication number
KR100563012B1
KR100563012B1 KR1019980035079A KR19980035079A KR100563012B1 KR 100563012 B1 KR100563012 B1 KR 100563012B1 KR 1019980035079 A KR1019980035079 A KR 1019980035079A KR 19980035079 A KR19980035079 A KR 19980035079A KR 100563012 B1 KR100563012 B1 KR 100563012B1
Authority
KR
South Korea
Prior art keywords
coprocessor
processor
bus
command
instruction
Prior art date
Application number
KR1019980035079A
Other languages
English (en)
Other versions
KR19990029361A (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 KR19990029361A publication Critical patent/KR19990029361A/ko
Application granted granted Critical
Publication of KR100563012B1 publication Critical patent/KR100563012B1/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent 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
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent 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
    • G06F9/3881Arrangements for communication of instructions and data

Landscapes

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

Abstract

복수의 보조 처리 장치(coprocessor; 14, 16)를 지원하는 처리 장치(12)와 보조 처리 장치(14) 사이의 인터페이스는 컴파일러로 생성할 수 있는 소프트웨어 형태의 함수 호출과 반환, 명령 실행 및 변수 적재(variable load)와 저장 인터페이스 명령을 이용한다. 데이터는, 암시적으로는 레지스터 감시(register snooping)와 브로드캐스트를 통해서, 또는 명시적으로는 함수 호출과 반환 및 변수 적재와 저장 인터페이스 명령들을 통해서 양방향 공유 버스(28)를 통해 처리기(12)와 보조 처리기(14) 사이에서 이동된다. 적재 및 저장 인터페이스 명령은 선택적인 기억 기 어드레스 전증분(preincrementation)을 가능하게 한다. 양방향 버스(28)는 잠재적으로 각 클록 사이클의 양쪽 방향으로 구동된다. 인터페이스는 인터페이스 명령 디코딩과 실행(execution)을 분리한다. 실행 신호가 표명(assert)되기 전에 복호 신호를 취소(negate)함으로써 디코딩된 명령 폐기를 지시하는 것에 의해 파이프라인으로 된 동작(pipelined operation)이 제공된다.

Description

처리기를 보조 처리기에 인터페이스하는 방법 및 그 장치{Method and apparatus for interfacing a processor to a coprocessor}
본 발명은 일반적으로 처리기와 적어도 하나의 보조 처리기를 갖는 데이터 처리 시스템(data processing system)에 관한 것이며, 더 상세하게는 처리기를 보조 처리기에 인터페이스하는 방법 및 그 장치에 관한 것이다.
전용 및 특수 목적의 하드웨어 기능 구성 요소들을 통해 베이스라인 구조(baseline architecture)의 처리기의 기능을 확장할 수 있는 능력은 스케일링 가능하고(scalable) 확장 가능한(extensible) 구조들에서 중요한 양상이다.
베이스라인 구조의 처리기의 기능을 확장하는 양호한 방법들 중 하나는 보조 처리기들을 사용하는 것이다. 보조 처리기들은 통상 처리기의 지시에 따라 동작하는 단일 목적의 처리기들에 제공된다. 보조 처리기의 전통적인 용도들 중 하나는 이렇게 직접 지원되지 않았던 구조들에 부동 소수점을 계산 능력들(floating point capabilities)을 선택적으로 제공하는 수학 보조 처리기들에 대한 사용이었다. 이러한 수학 보조 처리기들의 어떤 예로는 인텔의 8087이나 80287이다. 그 밖에 다른 보조 처리기의 잠재적인 유형이나 용도는 곱셈-누산기들(multiply-accumulators), 변조/복조기들(modems), 디지털 신호 처리기들(DSP), 비터비 계산기들(viterbi calculators), 암호 처리기, 화상 처리기, 벡터 처리기를 포함한다.
보조 처리기들에 대해서는 두 가지 다른 액세스 방식이 있다. 한 가지는 디지털 이큅먼트 코포레이션(Digital Equipment Corporation ; DEC)의 PDP-11 계열의 컴퓨터를 위한 부동 소수점 장치인데 이는 그것의 프리미티브 처리기에 매우 밀접하게 결합되었다. 이와 같이 밀접하게 결합된 장치에서 나타나는 하나의 문제점은 프리미티브 처리기가 보조 처리기의 동작에 대하여 실질적인 양만큼을 알고 있어야 한다는 점이다. 이러한 문제점은 회로 설계를 복잡하게 만들어 집적 장치에 새로운 보조 처리기를 추가하는 것이 주요한 기술적 문제가 되기에 이르렀다.
대안적인 방법은 보조 처리기를 프리미티브 처리기에 소결합(loosely couple)시키는 것이다. 이러한 방법은 보조 처리기의 동작을 프리미티브 처리기로부터 추출하고 분리시킨다(abstracting and isolating)는 이점을 갖고 있으며, 따라서 기존의 처리기에 새로운 보조 처리기를 추가하는데 드는 노력을 줄여 주었다. 그러나 이 방법 역시 대가를 치르게 되었다. 이 액세스의 한 가지 문제점은 성능의 손실이다. 이 소결합으로 인한 이와 같은 성능 유형을 취하는 것의 문제점은 보조 처리기를 호출하는데 대한 이익과 손해가 맞먹는 지점(break-even point)이 상응하여 증가한다는 점이다. 이와 같이, 보조 처리기들에 대한 많은 다른 매력적인 응용들이 비용 면에서 비효율적이다. 또한, 이러한 액세스에는 종종 상응하는 부가 회로와 칩 영역(chip area)과 함께 버스의 사용이 필요하다.
따라서 매우 간단한 기능들을 호출(invoke)하는 것이 유리하도록 인터페이스를 사용하는 것이 충분히 고속으로 되게 조밀하게 결합(tightly couple)되고, 처리기의 구조가 임의의 주어진 보조 처리기의 가능한 한 많은 상세한 부분들로부터 분리할 수 있도록 인터페이스를 추출하는, 보조 처리기의 인터페이스를 가지는 것이 중요하다. 이 후자는 일부 하드웨어 대신 소프트웨어로 된 새로운 보조 처리기의 응용들을 만드는 것을 촉진하기 위해서 이 접속을 프로그래머에게 친숙하게(programmer friendly) 만드는 것을 포함한다.
본 발명의 특징들 및 이점들은 첨부 도면들과 함께 취해진 다음의 상세한 설명으로부터 더욱 명백하게 이해될 것이며, 도면상에서 동일한 참조 번호들은 동일하고 대응하는 부분들을 의미한다.
이하의 명세서에서, 특정한 워드(word) 또는 바이트(byte) 길이들 등으로 언급된 것과 같은 많은 특정한 세부 항목들은 본 발명에 대한 완전한 이해를 위하여 제공된 것이다. 그러나, 본 발명이 그러한 세부 항목들이 없이도 실행될 수 있음은 이 분야에서 통상의 지식을 가진 자들에게 명백할 것이다. 다른 예들로는, 회로들은 블록도의 형태로 표시되었는데, 이는 불필요한 상세 부분들로 인하여 본 발명을 불명료하게 하지 않으려는 의도에 따른 것이다. 대부분의 영역에서, 본 발명의 완전한 이해를 얻는데 필수적인 것이 아닌 한 관련된 기술 분야의 통상의 지식을 가진 자들이 알 수 있는 범위 내에서 타이밍 고려 사항들(timing considerations) 등에 관한 상세 부분들이 생략되었다.
"버스(bus)"라는 용어는 데이터, 어드레스들, 제어 또는 상태와 같은 하나 이상의 여러 가지 형태들의 정보를 전송하는데 사용될 수 있는 컨덕터들(conductors) 또는 복수의 신호들을 의미하는 것으로 사용될 것이다. "표명하다(assert)"와 "취소하다(negate)"라는 용어는 신호, 상태 비트, 또는 유사한 장치가 각각 논리적으로 참 또는 논리적으로 거짓인 상태로 되는 것을 의미할 때 사용될 것이다. 논리적으로 참(true)인 상태가 논리 레벨 1이라면, 논리적으로 거짓(false)인 상태는 논리 수준 0이 된다. 그리고 논리적으로 참인 상태가 논리 레벨 0이라면, 논리적으로 거짓인 상태는 논리 수준 1이 된다.
도 1은 데이터 처리 시스템(10)의 하나의 실시예를 도시한 블록도이다. 데이터 처리 시스템(10)은 처리기(12), 보조 처리기(14), 보조 처리기(16), 기억 장치(18), 다른 모듈들(20)과 버스(28)에 의하여 모두 양방향으로 결합되어 있는 외부 버스 인터페이스(22)를 포함한다. 본 발명의 다른 실시예는 하나의 보조 처리기(14), 두 개의 보조 처리기(14, 16), 또는 그보다 많은 보조 처리기(도시하지 않음)를 포함할 수 있다. 외부 버스 인터페이스(22)는 집적 회로 단말들(35)에 의하여 외부 버스(26)에 양방향으로 결합되어 있다. 기억 장치(24)는 외부 버스(26)와 양방향으로 결합되어 있다. 처리기(12)는 집적 회로 단말들(31)에 의하여 데이터 처리 시스템(10)과 외부로 결합되어 있을 수 있다. 보조 처리기(14)는 집적 회로 단말(32)에 의하여 데이터 처리 시스템(10)과 외부로 결합되어 있을 수 있다. 기억 기(18)는 집적 회로 단말(32)에 의하여 데이터 처리 시스템(10)과 외부로 결합되어 있을 수도 있다. 다른 모듈들(20)은 집적 회로 단말(34)에 의하여 데이터 처리 시스템(10)과 외부로 결합되어 있을 수 있다. 처리기(12)는 보조 처리기 인터페이스(30)에 의하여 두 보조 처리기(14, 16) 모두와 양방향으로 결합되어 있다.
도 2는 도 1의 처리기(12)의 일부를 나타내는 블록도이다. 하나의 실시예에서, 처리기(12)는 제어 회로(40), 명령 디코딩 회로(42), 명령 파이프(instruction pipe)(44), 레지스터(46), 산술 논리 유닛(ALU; 48), 래칭(latching) 다중화기(multiplexer ; MUX)(50), 래칭 MUX(52)와 MUX(54)를 포함한다. 본 발명의 하나의 실시예에서, 보조 처리기 인터페이스(30)는 신호(60 - 71)를 포함한다. 클록 신호(60)는 제어 회로(40)에 의해 발생된다. 보조 처리기 동작 신호(61)는 제어 회로(40)에 의해 발생되어 보조 처리기(14, 16)에 제공된다.
감시 모드 신호(supervisor mode signal; 62)는 제어 회로(40)에서 발생되어 보조 처리기들(14, 16)에 제공된다. 디코딩 신호(63)는 제어 회로(40)에서 발생되어 보조 처리기(14, 16)에 제공된다. 보조 처리기 사용중 신호(busy signal)(64)는 보조 처리기(14) 또는 보조 처리기(16)로부터 제어 회로(40)로 수신된다. 실행 신호(execute signal)(65)는 제어 회로(40)에서 발생되어 보조 처리기(14, 16)에 제공된다. 예외 신호(exception signal)(66)는 보조 처리기들(14) 또는 보조 처리기(16)로부터 제어 회로(40)로 수신된다. 레지스터 쓰기(REGWR*) 신호(67)는 제어 회로(40)에 의해 발생하여 보조 처리기들(14, 16)에 제공된다. 레지스터 신호(REG{4:0})는 제어 회로(40)에 의해 발생하여 보조 처리기(14, 16)에 제공된다. 오류 신호(H_ERR*)(69)는 제어 회로(40)에서 발생되어 보조 처리기(14, 16)로 제공된다. 데이터 스트로브 신호(data strobe signal)(H_DS*)(70)는 제어 회로(40)에서 발생하여 보조 처리기(14, 16)에 제공된다. 데이터 응답 신호(data acknowledge signal)(H_DA*)(71)는 보조 처리기(14) 또는 보조 처리기(16)로부터 제어 회로(40)로 수신된다. 보조 처리기 인터페이스(30)의 일부로 간주되는 하드웨어 데이터 포트 신호(HDP{31:0})(72)는 보조 처리기(14, 16)와 처리기 내의 내부 회로 사이에서 양방향으로 전달된다.
본 발명의 하나의 실시예에서 다수의 신호가 기억 장치(18) 및/또는 기억 장치(24) 내에 데이터를 적재하거나 저장하기 위하여 버스(28)로 또는 버스(28)로부터 제공된다. 하나의 실시예에서, 이 신호는 제어 회로(40)에서 발생하여 버스(28)로 제공되는 전송 요구 신호(TREQ*)(73)를 포함한다. 전송 오류 응답 신호(transfer error acknowledge signal)(TEA*)(74)가 버스(28)를 통해 제어 회로(40)로 제공된다. 전송 응답 신호(TA*)(75)가 버스(28)를 통해 제어 회로(40)로 제공된다. 명령은 버스(28)로부터 컨덕터(76)를 통해 명령 파이프(44)에 제공된다. 데이터는 컨덕터(76)를 통해 MUX(54)에 제공된다. DRIVE_DATA 신호(79)는 래칭 MUX(52)로부터 컨덕터들(88, 76)을 통해 데이터를 제공하기 위하여 3상태 버퍼(tristate buffer)(95)를 사용 가능하게 한다. ADDRESS_SELECT 신호(78)는 컨덕터(77)를 통해 버스(28)로 어드레스를 제공하기 위하여 래칭 MUX(50)를 사용 가능하게 한다. MUX(54)로 들어오는 다른 입력이 HDP 신호(HDP{31:0})(72)에 의해 제공된다. MUX(54)로 들어오는 다른 입력이 ALU RESULT 컨덕터(86)를 통해 제공된다. MUX(54)의 출력인 RESULT 신호(83)는 레지스터(46)와 3상태 버퍼(96)의 입력에 제공된다. DRIVE_HDP 신호(82)는 3상태 버퍼(96)를 사용 가능하게 하여 HDP 신호(72) 위의 RESULT 신호(83)를 구동한다. 3상태 버퍼(96)의 출력은 또한 래칭 MUX(52)의 입력에 결합된다. 본 발명의 다른 실시예에서는 레지스터(46) 내부의 레지스터들의 수는 변경될 수 있다. RESULT 신호(83)가 래칭 MUX(50)의 입력에 제공된다. RESULT 신호들(83)은 MUX(54)를 통해 레지스터들(46)에 제공된다. RESULT_SELECT 신호(81)가 MUX(54)의 입력 중 어떤 것이 RESULT 컨덕터들(83)에서 구동될 것인지를 선택한다. SOURCE_SELECT 신호(80)가 컨덕터(88) 위의 3상태 버퍼(95)로 구동될 신호를 선택하기 위하여 래칭 MUX(52)에 제공된다. 제어 회로(40)는 레지스터(46)로부터 컨덕터들(91)을 통해 제어 정보를 제공하고 상태 정보를 수신한다. 제어 회로(40)는 컨덕터들(92)을 통해 제어 신호들을 제공하고 산술 논리 유닛(48)으로부터 상태 신호들을 수신한다. 제어 회로(40)는 컨덕터들(93)을 통해 제어 신호들을 제공하고 명령 파이프(44)와 명령 디코딩 회로(42)로부터 상태 신호들을 수신한다. 명령 파이프(44)는 컨덕터들(89)을 통해 명령 디코딩 회로(42)로 명령을 제공하기 위하여 결합되어 있다. 명령 디코딩 회로(42)는 복호된 명령 정보를 컨덕터들(90)을 통해 제어 회로(40)에 제공한다. 레지스터(46)는 SOURCE 오퍼랜드들을 컨덕터(84)를 통해 산술 논리 유닛(48)에 제공한다. 레지스터(46)는 컨덕터(84), 래칭 MUX(52), 3상태 버퍼(95)와 컨덕터(76)를 통해 데이터를 기억장치(18) 또는 기억 장치(24)에 저장되도록 제공한다. 레지스터들(46)은 컨덕터들(84), 래칭 MUX(50)과 어드레스 컨덕터(77)를 통해 어드레스 정보를 기억장치(18) 또는 기억 장치(24)에 제공한다. 레지스터들(46)은 제2 소스 오퍼랜드를 컨덕터들(85)을 통해 산술 논리 유닛(48)에 제공한다.
도 3은 보조 처리기(14)의 일부에 대한 하나의 실시예를 나타낸 블록도이다. 하나의 실시예에서, 보조 처리 장치(14)는 제어 회로(100), 계산 회로(102)와 선택적인 저장 회로(104)를 포함한다. 제어 회로(100)는 신호들(60 - 72)을 포함하는 보조 처리기 인터페이스(30)에 의하여 처리기(12)에 양방향으로 결합되어 있다. 본 발명의 하나의 실시예에서 제어 회로(100)는 처리 장치(12)로부터 연산 신호들(61)과 디코딩 신호(63)를 수신하는 디코딩 회로(106)를 포함한다. 제어 회로(100)는 컨덕터들(108)을 통해 제어 정보를 제공하며 선택적인 저장 회로(104)로부터 상태 정보를 수신한다. 제어 회로(100)는 컨덕터들(109)을 통해 제어 정보를 제공하며 계산 회로(102)로부터 상태 정보를 수신한다. 계산 회로(102)와 선택적인 저장 회로(104)는 컨덕터(110)에 의하여 양방향으로 결합되어 있다. 하나 또는 그보다 많은 신호들(110)이 버스(28)나 집적 회로 단말(32)로 또는 버스(28)나 직접 회로 단말들(32)로부터 제공된다. 제어 회로(100)는 컨덕터(112)를 통해 버스(28)나 집적 회로 단말들(32)로부터 정보를 수신하거나 버스(28)나 집적 회로 단말들(32)로 정보를 제공한다. 신호들(72)은 계산 회로(102) 및 선택적인 저장 회로(104)와 양방향으로 결합되어 있을 수도 있다. 또한, 신호들(72)은 버스(28) 또는 집적 회로 단말들(32)에 양방향으로 결합되어 있을 수도 있다. 본 발명의 다른 실시예에서는, 선택적인 저장 회로(104)는 구현되지 않을 수도 있다. 선택적인 저장 회로(104)가 구현되어 있는 본 발명의 실시예에서 저장 회로(104)는 레지스터 들, 임의의 형태의 기억 장치, 래치들이나 프로그래밍할 수 있는 논리 배열들 등을 포함하는 임의의 형태의 저장 회로 등을 이용하여 구현될 수 있다. 본 발명의 다른 실시예에서는 계산 회로(102)가 임의의 형태의 논리 또는 계산 기능을 수행할 수 있다.
시스템은 특정한 응용에 관계된 동작들을 위해 최적화된 외부 보조 처리기(14)(또는 하드웨어 가속기)에 의한 태스크 가속(task acceleration)에 대한 지원을 제공한다. 이러한 외부 보조 처리 장치(14, 16)는 모집단 계산(population count)을 수행하기 위해서, 또는 DSP 가속 보조 처리기(14)나 고속 곱셈/누산 동작이 가능한 보조 처리기(14)와 같이 더 복잡한 기능을 수행하는 보조 처리기(14)와 같은 정도로 간단하다.
데이터는 처리기(12)와 보조 처리기(14) 사이에서 특정한 구현에 적합한 몇개의 메커니즘들 중 하나 또는 그보다 많은 메커니즘에 의해 전송된다. 이것은 보조 처리기(14)로의 전송과 보조 처리기(14)로부터의 전송으로 나눌 수 있다.
보조 처리 장치(14)로 데이터를 전송하는 메커니즘 중 하나는 레지스터 감시 메커니즘이다. 이 메커니즘은 명령 프리미티브를 포함하고 있지 않으며, 정상적인 처리기(12) 동작의 부산물(by-product)이다. 이 메커니즘은 보조 처리기(14)가 처리기(12) 레지스터들의 하나 또는 그 이상에 대한 갱신을 모니터링할 수 있도록 해주는 처리기(12)의 인터페이스를 통한 범용 레지스터들("GPR")(46)에 대한 반사 갱신(reflecting update)을 수반한다. 보조 처리기(14)가 내부 레지스터나 기능을 위하여 GPR(46)을 "중첩 (overlay)"한다면 이러한 메커니즘이 적합할 수 있다. 이 경우에는, 처리기(12)로부터 보조 처리기(14)로 어떤 명시적 매개 변수들의 전달도 요구되지 않는다.
명령 프리미티브는 외부 보조 처리기들(14, 16)과 처리기(12) 사이에서 오퍼랜드들과 명령들을 명시적으로 전송하기 위하여 기본 처리기(12) 내에서 제공된다. 핸드셰이킹 메커니즘은 명령과 데이터 전송의 비에 대한 제어를 허용하기 위하여 제공된다.
보조 처리기(14) 기능들은 특정한 유닛들(units)을 구현하기 위하여 설계되었고, 따라서 주어진 유닛의 정확한 기능성은 다른 구현들에서는, 동일한 명령 맵핑들(instruction mapping)이 존재할 수 있는 경우에도 트랜잭션될 수 있다.
도 4는 레지스터 감시 동작을 취소 타이밍도이다. 보조 처리기(14)나 외부 모니터로 전달되는 매개 변수의 성능 오버헤드(performance overhead)를 피하기 위하여 레지스터 감시 메커니즘이 제공된다. 이 메커니즘은 보조 처리기(14)가 하나 또는 그보다 많은 처리기(12)의 범용 레지스터(46)의 샤도우 복사(shadow copy)를 구현하도록 한다. 이러한 성능은 처리기의 GPR들(46) 중 하나에 기록되는 값과 각각의 GPR 갱신에 대하여 어느 레지스터(46)가 갱신되었는지에 대한 표시를 전송함으로써 구현된다. 스트로브 신호 REGWR*(67)가 각 레지스터 갱신에 대하여 표명된다. 이 값은 32-비트 양방향 데이터 경로 HDP[31:0](72)를 통해 전송된다. 그리고 5-비트 레지스터 번호 버스가 갱신된 실제 처리기 레지스터(46)(REG[4:0])(68)를 가리키는 포인터를 제공한다. 레지스터 번호는 표준 파일(normal file)이나 대체 파일(alternate file) 내의 레지스터(46)를 참조할 수 있다. 바람직한 실시예에서는 보조 파일 레지스터들은 REG[4] == 1로 나타나며, 표준 파일 레지스터들은 REG[4] == 0에 의해 나타난다. 그러나 본 발명은 레지스터 세트를 실제로 분할하는 방법에 의존하지는 않는다.
보조 처리기(14)는 이후에 명시적으로 옮기는 것을 피하기 위하여 목표 레지스터(46) 번호가 가리키는 바에 따라 내부적으로 값을 래치할 수도 있다. 이러한 기능은 또한 레지스터 파일(46)이나 서브세트의 상태를 추적하기 위하여 디버그(debug) 보조 처리기(14)에 의해 사용될 수도 있다. 도 4는 감시 능력의 예를 보여 준다.
특정 목적을 위한 12-비트 명령 버스(H_OP[11:0])(61)는 외부의 보조 처리기(14)에 발행(issue)되는 보조 처리기 인터페이스(coprocessor interface)(30) 오퍼랜드 부호(opcode)를 제공한다. 이 버스는 처리 장치의 연산 부호의 낮은 차수의 12 비트를 반사한다. 높은 차수의 4 비트는 항상 0b1000이기 때문에 반사되지 않는다. 감시 모드 지시기(supervisor mode indicator)(H_OP)(62)가 또한 처리기가 감시 모드에서 동작하는지 사용자 모드에서 동작하는지를 지시하기 위한 PSR(S) 비트의 현재 상태를 가리키기 위하여 제공된다. 어떤 보조 처리기 기능을 감시 모드로 제한하는 것이 유용할 수 있다. 처리기(12)와 외부 보조 처리기들(14, 16) 사이의 핸드셰이크 신호의 세트가 보조 처리기 인터페이스(30) 명령 실행을 조정한다.
처리기(12)에 의해 발생된 제어 신호는 처리기의 내부 파이프라인 구조의 반영(reflection)이다. 처리기 파이프라인(44)은 명령 인출(fetch), 명령 디코딩(42), 실행, 결과 기록(result writeback)을 위한 단계들로 이루어진다. 이는 하나 또는 그보다 많은 명령 레지스터들(IR)을 포함한다. 처리기(12)는 또한 디코딩 스테이지(42) 전에 명령을 버퍼에 넣는 것을 가능하게 하는 명령 프리페치 버퍼(prefetch buffer)를 포함한다. 명령은 이 버퍼로부터 명령 복호 레지스터 IR에 들어감으로써 명령 디코딩 스테이지(42)로 진행한다.
명령 디코더(42)는 IR로부터 입력을 수신하고, IR에 남겨진 값에 근거한 출력들을 생성한다. 이 복호(42) 출력들은 항상 유효한 것을 아니고, 예외 상황들이나 명령 흐름의 트랜잭션들에 의해 폐기될 수도 있다. 유효한 경우에도, 명령 파이프라인의 실행 스테이지로 진행되기 전까지는 명령은 IR 내에 남아 있을 수 있다. 이와 같은 일은 이전 명령들이 완전히 실행되기까지(이를 위해서는 복수의 클록들이 소요될 수 있음)는 일어나지 않기 때문에, 디코더는 IR이 갱신될 때까지 IR 내에 저장되어 있는 값을 계속적으로 디코딩한다.
도 5는 명령 핸드셰이킹을 위한 기본 명령 인터페이스 연산을 도시한 타이밍도이다. 명령 복호 스트로브(H_DEC*) 신호(63)가 보조 처리기 인터페이스(30) 오퍼랜드 부호의 디코딩을 지시하기 위해 처리기(12)에 의해 제공된다. 이 신호는, 비록 명령이 실행되지 않고 폐기될 수도 있기는 하지만, 보조 처리기 인터페이스(30) 오퍼랜드 부호가 IR 내에 남아 있을 때에 표명된다. 동일한 명령에 대하여 명령이 실질적으로 발행(issue)되거나 폐기되기 전까지 H_DEC*(63) 출력은 여러 클록에 걸쳐 표명된 채로 유지될 수 있다.
사용중 신호(H_BUSY*)(64)는 외부 보조 처리기(14)가 보조 처리기 인터페이스(30) 명령을 받아들일 수 있는지를 결정하기 위해 처리기(12)에 의해 모니터링되고, 부분적으로는 명령의 발행이 일어날 때를 제어한다. H_DEC*(63)이 표명되는 동안 H_BUSY*(64) 신호가 취소된다면, 명령 실행은 인터페이스에 의해 중지되지 않으며, 명령의 실행이 진행되자마자 H_EXEC*(65) 신호가 표명될 수 있다. 처리기(12)에서 보조 처리기 인터페이스(30) 오퍼랜드 부호(이는 H_DEC*(63)의 표명(assertion)으로 지시됨)를 디코딩할 때 H_BUSY*(64) 신호가 표명되면, 보조 처리기 인터페이스(30) 오퍼랜드 부호의 실행은 강제로 중지된다. 일단 H_BUSY*(64) 신호가 취소되면, 처리기(12)는 H_EXEC*(65)를 표명함으로써 명령을 발령할 수 있다. 보조 처리 장치(14)가 명령을 버퍼에 저장할 수 있다면, H_BUSY*(64) 신호는 버퍼를 채우는 것을 돕는데 사용될 수 있다.
도 6은 H_BUSY*(64)가 보조 처리기 인터페이스(30) 명령 실행을 위해 사용될 때의 명령 인터페이스 동작(Instruction interface operation)을 도시한 타이밍도이다. 임의의 내부 중지 상태가 해결되었고, H_BUSY*(64) 신호가 취소되었으면, 처리기는 보조 처리기 인터페이스(30) 명령이 파이프라인의 실행 스테이지에 들어갔음을 지시하기 위하여 H_EXEC*(65)를 표명할 수 있다. 외부 보조 처리기(14)는 명령의 실질적인 실행을 제어하기 위해 H_EXEC*(65) 신호를 모니터링해야 하는데, 이는 어떤 상황에서는 처리기가 명령을 실행 전에 폐기할 수도 있기 때문이다. 먼저 보낸 명령의 실행이 예외가 되면, H_EXEC*(65) 신호는 표명되지 않으며, H_DEC*(63) 출력은 취소된다. 프로그램 흐름의 트랜잭션으로 인해 IR 내의 명령이 폐기되면 유사한 과정이 일어난다.
도 7은 명령 폐기(instruction discard)를 도시한 타이밍도이다. 명령이 폐기되면, 다른 보조 처리기 인터페이스(30) 오퍼랜드 부호가 H_OP[11:0](61) 버스 위에 놓이기 전에 H_DEC*(63) 신호는 취소된다.
도 8은 명령 파이프라인 중지(instruction pipeline stall)의 예를 도시한 타이밍도이다. H_DEC*(63)이 표명되고 H_BUSY*(64)가 취소되었는데도 처리기(12)가 H_EXEC*(65)의 표명을 지연시키는 상황이 있다. 이는 먼저 보낸 명령이 완성되기를 기다리는 동안에 일어난다.
도 9는 중지들이 없는 연속적인(back-to-back) 실행의 예를 도시한 타이밍도이다. 연속적인 보조 처리기 인터페이스(30) 명령을 위하여, H_OP[11:0](61) 버스가 IR에 들어온 새로운 명령에 따라 갱신되더라도 H_DEC*(63) 신호는 취소되지 않고 표명된 채로 남아 있을 수 있다. 일반적으로 H_EXEC*(65)의 표명은 이전 클록에서 디코딩된 명령의 실행에 대응한다.
도 10은 내부 파이프라인 중지가 있는 연속적인 동작을 도시한 타이밍도이다. 이 경우에는, H_BUSY*(64)가 취소되지만, 처리기는 내부 중지 상황이 사라질 때까지 두 번째 보조 처리기 인터페이스(30) 명령을 위하여 H_EXEC*(65)를 표명하지 않는다.
도 11은 H_BUSY*(64) 중지들이 있는 연속적인 보조 처리기 인터페이스(30) 명령들을 도시한 타이밍도이다. 이 예에서는, 외부 보조 처리기(14)가 사용중이고, 두 번째 명령을 즉시 받아들일 수 없다. 처리기(12)에 의해 두 번째 명령이 발행되지 않도록 하기 위해 H_BUSY*(64)가 표명된다. 일단 보조 처리기(14)가 비게(free) 되면, H_BUSY*(64)는 취소되고 다음 보조 처리기 인터페이스(30) 명령이 실행 스테이지(execution stage)로 진행한다.
보조 처리기 인터페이스(30) 오퍼랜드 부호의 디코딩에 관련된 예외는 외부 보조 처리기(14)에 의해 H_EXCP*(66) 신호와 함께 신호화될 수 있다. 이 처리기(12)로의 입력은 H_DEC*(63)이 표명되고 H_BUSY*(64)가 취소되는 클록 사이클 동안 샘플링되며, 보조 처리기 인터페이스(30) 오퍼랜드 부호가 앞서 설명된 것처럼 폐기되지 않는다면 하드웨어 보조 처리기(14) 예외를 위한 예외 처리(exception processing)를 하게 된다. 이 예외 처리에 대해서는 이하에서 상세히 설명한다.
도 12는 디코딩에 대응하여 보조 처리기(14)에 의해 표명되고 보조 처리기 인터페이스(30) 오퍼랜드 부호의 실행이 시도된 H_EXCP*(66) 신호의 예를 보여주는 타이밍도이다. H_EXCP*(66) 신호는 H_DEC*(63)이 표명되고 H_BUSY*(64)가 취소된 클록 동안 처리기(12)에 의해 샘플링된다. H_EXEC*(65) 신호는 인터페이스에 의해 예외가 시그널링되었는지에 관계없이 표명된다, 이 표명은 예외가 받아들여진 경우와 명령 폐기의 경우를 구별한다.
예외는 이전 클록 사이클에서 디코딩된 명령에 대응하는 것이며 실제로 아무런 실행도 이루어지지 않았다는 점을 유의해야 한다. 보조 처리기(14)는 위반되는(offending) 명령과 신호를 처리기 파이프라인의 실행 단계 이전에 식별될 수 있는 예외로 받아들여야 한다. H_DEC*(63)이 취소되거나 H_BUSY*(64)가 표명된 모든 클록 사이클에서 H_EXCP*(66) 신호는 무시된다.
도 13은 디코딩에 대응하여 보조 처리기(14)에 의해 표명되고 보조 처리기 인터페이스(30) 오퍼랜드 부호의 실행이 시도된 H_EXCP*(66) 신호의 예를 도시한 타이밍도이다. 도 14의 타이밍도와는 대조적으로 이 예에서는, 보조 처리기 인터페이스(30) 명령이 폐기되고, 따라서 H_EXEC*(65) 신호는 표명되지 않으며, H_DEC*(63)이 취소된다.
도 14는 H_BUSY*(64)가 예외를 발생시키는 보조 처리기 인터페이스(30) 오퍼랜드 부호의 실행을 지연시키기 위하여 표명된 예를 도시한 타이밍도이다.
H_BUSY*(64)와 H_EXCP*(66) 신호들은 모든 보조 처리기들(14, 16)에 의해 공유되며, 따라서 이 신호들은 조화된 방식으로 구동되어야 한다. 이 신호들은 H_DEC*(63)이 표명된 클록 사이클들 위의 H_OP[11:10](61)에 대응하는 보조 처리기(14, 16)에 의해 구동되어야 한다(이 신호는 높거나 낮은 쪽 중 적당한 쪽으로 구동된다). 출력을 클록의 낮은 부분 동안만 구동함으로써, 이 신호들은 다툼(contention) 없이 복수의 보조 처리기들(14, 16)에 의해 공유될 수 있다. 아무런 유닛도 구동하지 않는 클록의 높은 위상 동안 클록을 유효한 상태로 유지하기 위한 입력으로 처리기(12) 내부의 보유 래치(holding latch)가 제공된다.
보조 처리기 인터페이스(30) 명령 프리미티브의 일부는 또한 처리기(12)와 외부 보조 처리기(14) 사이의 데이터 항목의 전송을 포함한다. 오퍼랜드들(operands)은 실행되고 있는 특정한 프리미티브의 기능으로 보조 처리기 인터페이스(30)를 지나 전송될 수 있다. 32-비트 양방향 데이터 경로를 지나 보조 처리기(14)로 또는 보조 처리기(14)로부터 하나 또는 그보다 많은 처리기(12) GPR을 전송하기 위한 준비가 이루어진다. 또한, 단일 데이터 항목을 보조 처리기 인터페이스(30)인 데이터 싱크/소스(data sink/source)와 함께 기억 장치(18)로부터 적재하거나 기억 장치(18)로 저장하기 위한 준비도 이루어진다. 처리기(12)는 CLK(60)의 높은 부분 동안 HDP[31:0](72) 버스를 통해 매개 변수들을 외부 보조 처리기들(14, 16)로 전달하고, 오퍼랜드들은 클록의 낮은 위상 동안 처리기(12)에 의하여 보조 처리기 인터페이스(30)로부터 수신되고 래치된다. 짧은 주기의 버스 핸드오프(hand-off)가 가능하도록 하는 구동이 일어나기 전에 클록 변환이 높게 일어나도록 지연이 제공된다. 보조 처리기(14) 인터페이스는 하강 클록 가장자리에서 동일한 작은 지연을 제공해야 한다. 데이터 항목의 핸드셰이킹은 데이터 스트로브(H_DS*(70)) 출력, 데이터 응답(H_DA*(71)) 입력 및 데이터 오류(H_ERR*(69)) 출력 신호와 함께 지원된다.
처리기(12)는 소프트웨어 서브루틴을 호출하고 반환하는 것과 동일한 방법으로 보조 처리기 인터페이스(30)로 매개 변수를 호출 또는 반환하는 목록을 전송하는 능력을 제공한다. 인수들의 카운트는 전달되는 매개 변수들의 수를 제어하기 위하여 H_CALL 이나 H_RET 프리미티브 내에서 지시된다. 처리기(12) 레지스터(R4)의 내용으로 시작하는 레지스터 값은 H_CALL(H_RET) 프리미티브의 실행의 일부로 외부 보조 처리기(14)로(로부터) 전송된다. 모두 7개까지의 레지스터 변수가 전달될 수 있다. 이 규약은 소프트웨어 서브루틴을 호출하는 규약과 유사하다.
오퍼랜드 전송의 핸드셰이킹은 데이터 스트로브(H_DS*(70)) 출력과 데이트 응답(H_DA*(71)) 입력 신호들에 의해 제어된다. 데이터 스트로브는 전송들에 걸리는 시간 동안 처리기(12)에 의해 표명되고, 전송들은 처리기(12) 인터페이스 동작과 아주 유사한 중첩되는 방식으로 일어난다. 데이터 응답(H_DA*(71))은 데이터 요소가 보조 처리기(14)에 의해 받아들여지거나 구동되는 것을 나타내기 위해 사용된다.
도 15는 H_CALL 프리미티브와 관련된 레지스터(46) 전송의 예를 도시한 타이밍도이다. 명령 프리미티브들은 복수의 처리기 레지스터들을 전송하기 위해 제공되며 전송들은 이상적으로 매 클록마다 일어날 수 있다. 외부 보조 처리기(14)로의 전송을 위하여, 처리기는 현재 항목의 응답 이전에(또는 동시에) 자동적으로 다음 동작(필요한 경우)을 구동하기 시작할 것이다. 외부 논리는 데이터의 손실을 막기 위해서 한 수준의 버퍼 저장이 가능하여야 한다. 이 도면은 두 레지스터들이 전송될 때 보조 처리기 인터페이스(30)로 향하는 H_CALL 전송의 시퀀스를 보여준다. 두 번째 전송은 데이터 응답(H_DA*(71))이 취소되어서 반복된다.
외부 보조 처리기(14)로부터 처리기 레지스터들(46)로의 전송을 위하여 처리 기(12)는 H_DS*(70)이 표명된 이후 매 클록 사이클마다 외부의 보조 처리기(14)로부터 값을 받아들일 수 있어야 하며, 이 값들은 수신되자마자 레지스터 파일(46)에 기록되고, 따라서 버퍼 저장은 요구되지 않는다.
도 16은 H_RET 프리미티브와 관련된 레지스터(46) 전송들의 예를 도시한 타이밍도이다. 이 예에서는 두 개의 레지스터(46) 값이 전송된다. 보조 처리기(14)는 H_EXEC*(65) 신호의 표명에 뒤따르는 클록에서부터 데이터를 구동할 수 있고, 이는 H_DS*(70)이 처음으로 표명될 클록이다. H_DA*(71) 입력이 CLK(60)의 낮은 위상 동안 샘플링되는 데에 반해, H_DS*(70) 출력은 CLK(60)의 상승 가장자리에서 변환된다.
처리기(12)는 단일 기억 장치 오퍼랜드를 보조 처리기 인터페이스(30)로 또는 보조 처리기 인터페이스(30)로부터 H_LD 또는 H_ST 명령 프리미티브들과 함께 전송하는 능력을 제공한다.
H_LD 프리미티브는 기억 장치(18)로부터 보조 처리기(14)로 데이터를 전송하는데 사용된다. 보조 처리기(14)로 오퍼랜드를 전송하는 것의 핸드셰이킹은 데이터 스트로브(H_DS*(70)) 신호에 의해 제어된다. 데이터 스트로브는 처리기(12)에 의해 표명되어 HDP[31:0](72) 버스에 유효한 오퍼랜드가 위치되었는지를 가리킨다. 데이터 응답(H_DA*(71)) 입력은 이 전송에서 무시된다.
도 17은 보조 처리기 인터페이스(30)로 향하는 H_LD 전송의 시퀀스를 도시한 타이밍도이다. 이 경우에는 비-대기(no-wait) 상태 기억 장치(18) 액세스가 있다. n개의 대기 상태들 함께 기억 장치(18)가 액세스되는 동안, 오퍼랜드와 H_DS*(70)은 n 클록 후에 구동된다. 기본 레지스터(base register)(46)를 적재된 유효한 어드레스로 갱신하는 옵션이 선택되어 있는 경우에는 갱신된 값은 계산되고 나서 첫번째 클록(H_EXEC*(65) 표명 후의 클록) 뒤에 HDP[31:0](72)에서 구동된다.
도 18은 기억 장치(18) 액세스가 액세스 예외가 된 경우의 프로토콜(protocol)을 도시한 타이밍도이다. 이러한 경우에서는, H_ERR*(69) 신호가 표명되어 외부 보조 처리기(14)로 되돌아간다.
H_ST 프리미티브는 보조 처리기(14)로부터 기억 장치(18)로 데이터를 전송하는 데에 사용될 수 있다. 기본 레지스터(46)를 저장된 유효한 어드레스로 갱신하는 옵션이 선택되어 있는 경우에는, 갱신된 값은 계산되고 나서 첫 번째 클록(H_EXEC*(65) 표명 후의 클록) 뒤에 HDP[31:0](72)에서 구동된다.
도 19는 H_ST 프리미티브와 관련된 전송의 예를 도시한 타이밍도이다. H_ST 프리미티브와 관련된 핸드셰이킹은 두 부분으로 이루어져 있는데, 하나는 저장을 위해 데이터를 제공하여야 하는 보조 처리기(14)로부터의 초기 핸드셰이크이고, 다른 하나는 일단 기억 장치(18)로의 저장이 완료된 후의 처리기(12)로부터의 완전한 핸드셰이크이다.
초기 핸드셰이크는 보조 처리기(14)가 저장 데이터를 처리기(12)로 구동한다는 신호를 알리기 위하여 처리기(12)로 향하는 H_DA*(71) 입력을 사용한다. H_DA*(71) 신호는 데이터가 보조 처리기(14)에 의해서 HDP[31:0](72)로 구동되는 것과 동일한 클록에서 표명된다. 저장 데이터는 1/2워드 크기의 저장을 위하여 버스의 낮은 쪽 반으로부터 가져오며, 위쪽 16 비트는 기억 장치에 기록되지 않는다. H_DA*(71) 신호는 H_EXEC*(65) 신호가 표명되는 클록에서 시작하여 샘플링된다. 기억 장치 사이클은 H_DA*(71)이 인식되는 동안 요구되며, 저장 데이터는 다음 클록에서 기억 장치(18)로 구동된다. 일단 저장이 완료되면, 처리기(12)는 H_DS*(70) 신호를 표명한다.
도 20은 지연된 저장 데이터의 전송의 예를 도시한 타이밍도이다.
도 21은 저장이 액세스 오류가 되었을 때의 프로토콜 신호를 도시한 타이밍도이다. H_ERR*(69) 신호가 여기서 표명되는 것을 유의해야 한다. 하드웨어 유닛이 H_EXCP*(66) 즉, H_EXEC*(65)가 표명된 클록을 표명함으로써 명령을 중지시킬 경우, H_DA*(71) 신호는 표명되어서는 안 된다.
도 22 내지 도 26은 하드웨어 가속기(또는 보조 처리기)(14)로의 인터페이스를 하기 위한 명령 세트의 일부에 제공되는 명령을 나타낸 것이다. 처리기(12)는 프리미티브의 필드 중 일부를 번역하고, 나머지들은 보조 처리기(14)에 의해서만 번역된다.
도 22는 H_CALL 프리미티브에 대한 명령 형식이다. 이 명령은 보조 처리기(14)에 의해 구현된 함수를 "호출"하기 위해 사용된다. 패러다임(paradigm)은 표준 소프트웨어 호출 규약과 유사하지만, 하드웨어 콘텍스트(context) 내에 있다. H_CALL 프리미티브는 처리기(12)와 보조 처리기(14) 모두에 의해 번역되어 처리기(12)로부터 "호출 매개 변수들" 또는 인수의 목록을 전송하고 보조 처리기(14) 내의 특정한 함수를 초기화시킨다.
명령 워드의 UU와 CODE 필드들은 처리기(12)에 의해 번역되지 않고, 보조 처리기(14)의 특정한 함수를 지정하기 위해 사용된다. UU 필드는 특정한 보조 처리기(14, 16)를 지정할 수 있고, CODE 필드는 특정한 동작을 지정할 수 있다. CNT 필드는 처리기(12)와 보조 처리기(14) 모두에 의해 번역되고, 보조 처리기(14)로 전달하기 위한 레지스터 인수들의 수를 지정한다.
인수들은 R4로 시작하여 R(4 + CNT - 1)로 계속되는 범용 레지스터들(46)로부터 전달된다. 7개의 매개 변수들(또는 레지스터 내용)까지 반환할 수 있다.
H_CALL 명령은 모듈화된 모듈 호출(modular module invocation)을 구현하는 데 사용될 수 있다. 이러한 형태의 인터페이스를 사용하는 것은 소프트웨어 시스템이 높은 신뢰성과 적은 버그를 갖도록 한다는 것은 오래 전부터 알려져 있다. 일반적으로 함수 매개 변수들은 값에 의해 가장 잘 전달될 수 있다. 이는 부작용들을 획기적으로 줄인다. 많은 경우에, C나 C++과 같은 블록-구조의 언어들을 위한 최신의 컴파일러들은 짧은 수열의 매개 변수들 또는 인수들의 레지스터(46) 내의 호출된 함수들이나 서브루틴들로 전달한다. 이 기술은 H_CALL 명령에 의해 구현될 수 있다. 컴파일러는 R4에서 시작하는 연속적인 레지스터들(46) 내로 매개 변수나 인수를 7개까지 적재하도록 형성될 수 있으며, 이는 표준 컴파일러에서 발생된 서브루틴 연결 명령을 대체할 수 있는 H_CALL 명령을 발생시킨다.
도 23은 H_RET 프리미티브에 대한 명령 형식을 나타내고 있다. 이 명령은 보조 처리기(14)에 의해 구현된 함수로부터 "반환(return from)"하도록 하는 데 사용된다. 패러다임(paradigm)은 처리기(12)에 의해 사용되는 표준 소프트웨어 호출 규약과 유사하지만, 하드웨어 콘텍스트(context) 내에 있다. H_RET 프리미티브는 처리기(12)와 보조 처리기(14) 모두에 의해 번역되어 보조 처리기(14)로부터 "반환 매개 변수들" 또는 값들의 목록을 전송한다.
명령 워드의 UU와 CODE 필드들은 처리기(12)에 의해 번역되지 않고, 보조 처리기(14)의 특정한 함수를 지정하기 위해 사용된다. UU 필드는 하드웨어 유닛을 지정할 수 있고, CODE 필드는 반환해야 할 보조 처리기(14) 내의 레지스터들(46)의 세트 또는 특정한 동작을 지정할 수 있다. CNT 필드는 처리기(12)와 보조 처리기(14) 모두에 의해 번역되고, 보조 처리기(14)로부터 처리기(12)로 전달되는 레지스터(46) 인수들의 수를 지정한다.
인수는 R4로 시작하여 R(4 + CNT - 1)로 계속되는 처리기(12) 범용 레지스터들(46)로 전달된다. 7개의 매개 변수들(또는 레지스터 내용)까지 반환할 수 있다.
H_CALL 명령에서와 같이, H_RET 명령이 모듈로 이루어진 프로그래밍을 구현하는데 또한 사용될 수 있다. 구조화된 프로그래밍은 함수 반환 값들이 값에 의해서 호출 루틴으로 가장 잘 되돌아갈 수 있도록 요구한다. 이는 종종 컴파일러들에 의해 하나 또는 그보다 많은 반환 값들을 서브루틴이나 함수의 반환을 위해 레지스터들에 위치시킴으로써 효과적으로 수행된다. 전통적인 구조적 프로그래밍이 서브루틴이나 함수 호출 후에 즉시 그 서브루틴이나 함수가 반환할 것을 기대하고 있다는 점을 유의하여야 한다. 보조 처리기들(14)의 경우, 실행은 처리기(12) 호출의 실행과 동기되지 않는 경우가 종종 있다. H_RET 명령은 처리기(12)와 보조 처리기(14)를 재동기화하기 위해 사용될 수 있다. 이와 같이, 처리기(12)는 하나 또는 그보다 많은 레지스터들(46)을 적재하고, 하나 또는 그보다 많은 H_CALL 명령으로 보조 처리기를 활성화하고, 관계되지 않은 명령을 실행시키며, H_RET 명령을 발행함으로써 보조 처리기(14)로부터 결과값(들)을 수신하여 보조 처리기(14)와 재동기화한다.
도 24는 H_EXEC 프리미티브에 대한 명령 형식을 나타내고 있다. 이 명령은 함수를 초기화하거나 가속기에 의해 구현된 연산 모드로 들어가게 하기 위하여 사용된다. H_EXEC 명령은 UU 필드에 지정된 특정한 보조 처리기(14, 16)의 함수를 제어하기 위하여 사용될 수 있다. 코드 필드는 처리기(12)에 의해 번역되지 않고, 지정된 보조 처리기(14, 16)를 위해 예약(reserve)되어 있다. 명령 워드의 UU와 CODE 필드들은 처리기(12)에 의해 번역되지 않고, 보조 처리기(14)의 특정한 함수를 지정하기 위해 사용된다. UU 필드는 특정한 보조 처리기(14, 16)를 지정하고, CODE 필드는 특정한 동작을 지정할 수 있다.
도 25는 H_LD 명령을 위한 명령 형식을 나타내고 있다. 이 명령은 기억 장치 오퍼랜드를 범용 레지스터(GPR ; General Purpose Register)(46)에 임시로 저장하는 일이 없이 기억 장치(18)로부터 보조 처리기(14)로 어떤 값을 전달하는 데 사용된다. 기억 장치 오퍼랜드는 기본 포인터와 오프셋을 이용하여 어드레스가 지정된다.
H_LD 명령은 기억 장치(18)에 어떤 값을 적재하는 기능을 수행하며, 기억 장치 오퍼랜드를 레지스터(46)에 저장하지 않고 보조 처리기(14)로 전달한다. H_LD 동작은 세 가지 옵션들을 가지고 있는데, w - 워드(word), h - 1/2 워드(half word)와 u - 갱신(update)이다. IMM2 필드를 적재 크기로 스케일링하고 0 확장(zero-extending)으로써 DISP를 얻을 수 있다. 이 값은 레지스터 RX의 값에 보태지고 이 어드레스로부터 특정한 크기의 적재가 수행되며, 적재된 값은 하드웨어 인터페이스(28)로 전달된다. 1/2 워드 적재를 위해서는 인출된 데이터가 32-비트까지 0 확장된다(zero-extended). .u 옵션이 특정되었다면, 적재의 유효 어드레스(effective address)는 계산된 후에 레지스터 RX(46)에 위치된다.
명령 워드의 UU 필드는 처리기(12)에 의해 번역되지 않고, 이 필드는 특정한 보조 처리 장치(14, 16)를 지정할 수 있다. SZ 필드는 오퍼랜드의 크기(1/2 워드 또는 워드 중 하나)를 지정한다. DISP 필드는 적재를 위한 유효 어드레스를 형성하기 위하여 Rbase 필드에 의해 지정된 레지스터의 내용에 더해져야 할 부호가 없는 오프셋 값을 지정한다. DISP 필드의 값은 전송될 오퍼랜드의 크기에 의해 스케일링 된다. UP 필드는 Rbase 레지스터(46)가 계산된 후에 적재의 유효 어드레스로 갱신되어야 하는지 여부를 지정한다. 이 옵션은 "자동-갱신(auto-update)" 어드레스 모드를 가능하게 한다.
도 26은 H_ST 명령을 위한 명령 형식을 나타낸다. 이 명령은 처리기(12) 레지스터(46) 내에 기억 장치 오퍼랜드를 임시로 저장하지 않고 보조 처리기(14)로부터 기억 장치(18)로 값을 전달할 때 사용된다. 기억 장치 오퍼랜드는 기본 포인터와 오프셋을 사용하여 어드레스가 정해진다.
명령 워드의 UU 필드는 처리기(12)에 의해 번역되지 않는다. 이 필드는 특정한 보조 처리 장치(14, 16)를 지정한다. SZ 필드는 오퍼랜드의 크기(1/2 워드 또는 워드 중 하나)를 지정한다. DISP 필드는 저장을 위한 유효 어드레스를 형성하기 위하여 Rbase 필드에 의해 지정된 레지스터(46)의 내용에 더해져야 할 부호가 없는 오프셋 값을 지정한다. DISP 필드의 값은 전송될 오퍼랜드의 크기에 의해 스케일링 된다. UP 필드는 Rbase 레지스터(46)가 계산된 후에 저장의 유효 어드레스로 갱신되어야 하는지 여부를 지정한다. 이 옵션은 "자동-갱신(auto-update)" 어드레스 모드를 가능하게 한다.
H_ST 명령은 보조 처리기(14)로부터 온 오퍼랜드를 레지스터(46)에 저장하지 않고 기억 장치(18)로 저장하는 기능을 수행한다. H_ST 동작은 세 가지 옵션을 갖는데, w - 워드(word), h - 1/2 워드(half word)와 u - 갱신이다. IMM2 필드를 저장 크기로 스케일링하고 0 확장으로 DISP를 얻을 수 있다. 이 값은 레지스터 RX의 값에 보태지고 하드웨어 인터페이스로부터 저장을 위해 얻어진 데이터와 함께 이 어드레스로 특정한 크기의 저장이 수행된다. .u 옵션이 특정되었다면, 적재의 효율적인 어드레스는 계산된 후에 레지스터 RX (46)에 위치된다.
H_LD 명령과 H_ST 명령은 기억 장치(18)로부터 보조 처리기(14)로 및 보조 처리기(14)로부터 기억 장치(18)로 데이터가 레지스터(46)를 경유하지 않고 오퍼랜드를 옮길 수 있는 효율적인 메커니즘을 제공한다. 오프셋과 색인 부착(indexing) 규약(provisions)은 배열을 통해 효과적으로 단계를 밟아 나가는 메커니즘을 제공한다. 이와 같이, 명령들은 루프(loop) 내에서 특별히 유용하다. 적재되고 저장되는 모든 오퍼랜드에 대하여 명령들이 처리기(12)를 보조 처리기(14)에 동기시킨다는 점을 유의해야 한다. 이는 필수적인 것이거나 바람직한 것은 아니라고 하더라도, 반복적으로 지정된 레지스터들(46)에 기억 장치(18)로부터의 데이터를 적재함으로써 다른 방법으로 데이터를 보조 처리기(14)로 보낼 수 있으며, 보조 처리 장치 인터페이스(30)가 또한 레지스터 감시를 위해서도 사용되기 때문에 보조 처리기(14)가 이러한 적재를 검출할 수 있다.
이 기술 분야에서 통상의 지식을 가진 자라면 이 발명의 생각을 벗어나지 않으면서도 변경이나 변화가 이루어질 수 있음을 알 수 있을 것이다. 따라서 이 발명은 첨부한 특허청구범위의 범위 내에 포함될 수 있는 모든 변경이나 변형을 포함하는 것으로 이해되어야 한다.
이와 같이 본 발명의 실시예에 따르면 속도가 빠르면서도 처리기와 보조 처리기를 밀접하게 결합시키는 인터페이스를 제공한다. 또한, 본 발명에 따른 인터페이스는 소프트웨어 형태의 함수 호출과 반환, 명령 실행 및 변수 적재와 저장 인터페이스 명령을 이용하여 소프트웨어로 된 보조 처리기의 응용을 만드는 것을 쉽게 할 수 있다.
도 1은 본 발명에 따른 데이터 처리 시스템의 하나의 실시예를 도시한 블록도.
도 2는 도 1의 처리기의 일부를 도시한 블록도.
도 3은 도 1의 보조 처리기 일부의 하나의 실시예를 도시한 블록도.
도 4는 본 발명에 따른 레지스터 감시 동작을 도시한 타이밍도.
도 5는 명령 핸드셰이킹(instruction handshaking)을 위한 기본 명령 인터페이스 동작(basic instruction interface operation)을 도시한 타이밍도.
도 6은 보조 처리기 인터페이스 명령 실행을 제어하기 위하여 H_BUSY* 신호가 사용된 경우의 명령 인터페이스 동작을 취소 타이밍도.
도 7은 명령 폐기(instruction discard)를 도시한 타이밍도.
도 8은 명령 파이프라인 중지(stall)의 예를 도시한 타이밍도.
도 9는 중지가 없는 연속적인(back-to-back) 실행의 예를 도시한 타이밍도.
도 10은 내부 파이프라인 중지가 있는 연속적인 동작을 취소 타이밍도.
도 11은 H_BUSY* 중지가 있는 연속적인 보조 처리기(30) 명령을 도시한 타이밍도.
도 12는 보조 처리기 인터페이스 오퍼랜드 부호(opcode)의 디코딩과 시도된 실행에 대응하여 보조 처리기에 의해 표명된 H_EXCP* 신호의 예를 취소 타이밍도.
도 13은 보조 처리기 인터페이스 명령이 폐기된 때의 보조 처리기 인터페이스 조작 부호의 디코딩과 시도된 실행에 대응하여 보조 처리기에 의해 표명된 H_EXCP* 신호의 예를 도시한 타이밍도.
도 14는 보조 처리기 인터페이스 조작 부호의 실행을 지연시키도록 H_BUSY*가 표명된 예를 도시한 타이밍도.
도 15는 H_CALL 프리미티브(primitive)와 연관된 레지스터 전송들의 예를 도시한 타이밍도.
도 16은 H_RET 프리미티브와 연관된 레지스터 전송들의 예를 도시한 타이밍도.
도 17은 보조 처리기 인터페이스에 대한 H_LD 전송의 시퀀스를 도시한 타이밍도.
도 18은 기억 장치 액세스가 액세스 예외(access exception)가 된 경우의 프로토콜을 도시한 타이밍도.
도 19는 H_ST 프리미티브와 연관된 전송들의 예를 도시한 타이밍도.
도 20은 지연된 저장 데이터의 전송의 예를 취소 타이밍도.
도 21은 기억 장치가 액세스 오류일 때 프로토콜 신호를 도시한 타이밍도.
도 22는 본 발명에 따른 H_CALL 프리미티브에 대한 명령 형식(instruction format)을 나타내는 것이고,
도 23은 본 발명에 따른 H_RET 프리미티브에 대한 명령 형식을 나타내는 것이고,
도 24는 본 발명에 따른 H_EXEC 프리미티브에 대한 명령 형식을 도시한 도면.
도 25는 본 발명에 따른 H_LD 명령에 대한 명령 형식을 도시한 도면.
도 26은 본 발명에 따른 H_ST 명령에 대한 명령 형식을 도시한 도면.
* 도면 부호에 대한 설명 *
10 : 데이터 처리 시스템 12 : 처리기
14, 16 : 보조 처리기 18, 24 : 기억 장치
20 : 다른 모듈들 22 : 외부 버스 인터페이스
26 : 외부 버스 28 : 버스
30 : 보조 처리기 인터페이스 40 : 제어 회로
42 : 명령 디코딩 회로 44 : 명령 파이프
46 : 레지스터 48 : 산술 논리 유닛
50, 52 : 래칭 MUX 54 : MUX
100 : 제어 회로 102 : 계산 회로
104 : 선택적 저장 회로 106 : 명령 디코딩 회로

Claims (11)

  1. 보조 처리기 버스(coprocessor bus; 30)를 통해 처리기(12)에 결합된 보조 처리기(14, 16)와 협동하도록 적응된 상기 처리기(12)를 동작시키는 방법으로서, 상기 보조 처리기 버스는 시스템 버스로부터 분리되고, 상기 처리기는, 상기 보조 처리기에 전달될 인수들의 수를 정의하는 카운트 필드 및 코드 필드를 포함하는 적어도 하나의 명령(H_CALL)의 실행시, 상기 시스템 버스를 사용하지 않고 상기 보조 처리기 버스를 통해 상기 보조 처리기와 통신할 수 있는, 상기 처리기(12) 동작 방법에 있어서:
    상기 명령을 수신하는 단계;
    상기 보조 처리기 버스의 제 1 사이클을 통해, 상기 카운트 및 코드 필드들을 상기 보조 처리기에 제공하는 단계;
    상기 카운트 필드가 0보다 큰 값을 가지면, 상기 보조 처리기 버스의 제 2 사이클을 통해, 제 1 오퍼랜드(first operand)를 상기 보조 처리기에 제공하는 단계; 및
    상기 명령을 완료하는 단계를 포함하는, 처리기 동작 방법.
  2. 보조 처리기 버스(30)를 통해 처리기(12)에 결합된 보조 처리기(14, 16)와 협동하도록 적응된 상기 처리기(12)를 동작시키는 방법으로서, 상기 보조 처리기 버스는 시스템 버스로부터 분리되고, 상기 처리기는, 상기 보조 처리기에 전달될 인수들의 수를 정의하는 카운트 필드 및 코드 필드를 포함하는 적어도 하나의 명령(H_CALL)의 실행시, 상기 시스템 버스를 사용하지 않고 상기 보조 처리기 버스를 통해 상기 보조 처리기와 통신할 수 있는, 상기 처리기(12) 동작 방법에 있어서:
    상기 명령을 수신하는 단계;
    상기 보조 처리기 버스의 제 1 사이클을 통해, 상기 카운트 및 코드 필드들을 상기 보조 처리기에 제공하는 단계;
    상기 카운트 필드가 0보다 큰 값을 가지만, 상기 보조 처리기 버스의 제 2 사이클을 통해, 상기 보조 처리기로부터 제 1 오퍼랜드를 수신하는 단계; 및
    상기 명령을 완료하는 단계를 포함하는, 처리기 동작 방법.
  3. 복수의 레지스터들을 포함하는 제지스터 파일을 갖는 처리기가, 보조 처리기 통신 버스를 통해, 상기 레지스터 파일의 모든 기록 트랜잭션들을 브로드캐스트(broadcast)하기 위한 방법에 있어서:
    상기 레지스터 파일에 기록될 오퍼랜드를 수신하는 단계;
    상기 레지스터 파일에서 상기 복수의 레지스터들 중 하나를 선택하는 단계; 및
    상기 레지스터 파일에 기록될 상기 오퍼랜드와;
    상기 레지스터 파일에서 상기 복수의 레지스터들 중 상기 선택된 하나를 나타내는 제 1 제어 신호와;
    상기 오퍼랜드가 상기 복수의 레지스터들 중 상기 선택된 하나에 기록될 것을 요청하는 제 2 제어 신호를, 상기 보조 처리기 통신 버스를 통해 상기 레지스터 파일에 제공하는 단계를 포함하는, 기록 트랜잭션들 브로드캐스트 방법.
  4. 제 1 처리기가, 보조 처리기 통신 버스를 통해, 제 2 처리기의 복수의 레지스터들을 포함하는 레지스터 파일에 대한 모든 기록 트랙잭션들을 모니터링하기 위한 방법에 있어서:
    상기 레지스터 파일에 기록될 오퍼랜드와;
    상기 레지스터 파일에서 상기 복수의 레지스터들 중 선택된 하나를 나타내는 제 1 제어 신호와;
    상기 오퍼랜드가 상기 복수의 레지스터들 중 상기 선택된 하나에 기록될 것을 요청하는 제 2 제어 신호를, 상기 보조 처리기 통신 버스를 통해 상기 제 2 처리기로부터 수신하는 단계; 및
    상기 오퍼랜드, 상기 제 1 제어 신호 및 상기 제 2 제어 신호의 수신에 응답하여 미리 결정된 동작을 수행하는 단계를 포함하는, 기록 트랜잭션들 모니터링 방법.
  5. 처리기가, 보조 처리기 버스를 통해, 실행을 위해 상기 처리기에 의해 수신된 명령의 보조 처리기에 의한 실행을 개시하기 위한 방법에 있어서:
    상기 명령을 수신하는 단계;
    상기 명령을 디코딩하는 단계;
    상기 보조 처리기 버스의 제 1 부분을 통해, 상기 명령의 적어도 미리 결정된 부분과;
    상기 명령이 상기 보조 처리기 버스의 제 2 부분을 통해 상기 처리기에 의해 디코딩되는 것을 나타내는 제 1 제어 신호를, 상기 디코딩과 적어도 부분적으로 일치시켜 상기 보조 처리기에 제공하는 단계;
    상기 명령의 실행이 진행(proceed)하는 때를 나타내는 제 2 제어 신호를 상기 보조 처리기 버스에 제공하는 단계; 및
    상기 제 2 제어 신호가 표명(assert)되기 전에 상기 제 1 제어 신호가 취소(negate)되면, 상기 명령의 처리를 중단하는 단계를 포함하는, 실행 개시 방법.
  6. 처리기가, 보조 처리기 버스를 통해, 실행을 위해 상기 처리기에 의해 수신된 명령의 보조 처리기에 의한 실행을 개시하기 위한 방법에 있어서:
    상기 명령을 수신하는 단계;
    상기 명령을 디코딩하는 단계;
    상기 보조 처리기 버스의 제 1 부분을 통해, 상기 명령의 적어도 미리 결정된 부분과;
    상기 명령이 상기 보조 처리기 버스의 제 2 부분을 통해 상기 처리기에 의해 디코딩되는 것을 나타내는 제 1 제어 신호를, 상기 디코딩과 적어도 부분적으로 일치시켜 상기 보조 처리기에 제공하는 단계; 및
    상기 명령 전에, 선행(earlier) 명령의 실행이 예외(exception)를 유발하면, 상기 제 1 제어 신호를 취소하고 상기 명령의 처리를 중단하는 단계를 포함하는, 실행 개시 방법.
  7. 처리기가, 보조 처리기 버스를 통해, 실행을 위해 상기 처리기에 의해 수신된 명령의 보조 처리기에 의한 실행을 개시하기 위한 방법에 있어서:
    상기 명령을 수신하는 단계;
    상기 명령을 디코딩하는 단계;
    상기 보조 처리기 버스의 제 1 부분을 통해, 상기 명령의 적어도 미리 결정된 부분과;
    상기 명령이 상기 보조 처리기 버스의 제 2 부분을 통해 상기 처리기에 의해 디코딩되는 것을 나타내는 제 1 제어 신호를, 상기 디코딩과 적어도 부분적으로 일치시켜 상기 보조 처리기에 제공하는 단계; 및
    상기 명령이 상기 처리기 내의 명령 레지스터로부터 폐기되면(discarded), 상기 제 1 제어 신호를 취소하고 상기 명령의 처리를 중단하는 단계를 포함하는, 실행 개시 방법.
  8. 처리기가, 보조 처리기 버스를 통해, 실행을 위해 상기 처리기에 의해 수신된 명령의 보조 처리기에 의한 실행을 개시하기 위한 방법에 있어서:
    상기 명령을 수신하는 단계;
    상기 명령을 디코딩하는 단계;
    상기 보조 처리기 버스의 제 1 부분을 통해, 상기 명령의 적어도 미리 결정된 부분과;
    상기 명령이 상기 보조 처리기 버스의 제 2 부분을 통해 상기 처리기에 의해 디코딩되는 것을 나타내는 제 1 제어 신호를, 상기 디코딩과 적어도 부분적으로 일치시켜 상기 보조 처리기에 제공하는 단계; 및
    상기 보조 처리기 버스로부터 제 2 제어 신호를 수신하는 단계로서, 상기 제 2 제어 신호는 상기 보조 처리기 내의 명령 버퍼를 채우도록 상기 보조 처리기를 보조하기 위한 것인, 상기 제 2 제어 신호 수신 단계를 포함하는, 실행 개시 방법.
  9. 처리기가, 보조 처리기 버스를 통해, 실행을 위해 상기 처리기에 의해 수신된 명령의 보조 처리기에 의한 실행을 개시하기 위한 방법에 있어서:
    상기 명령을 수신하는 단계;
    상기 명령을 디코딩하는 단계; 및
    상기 보조 처리기 버스의 제 1 부분을 통해, 상기 명령의 적어도 미리 결정된 부분과;
    상기 처리기가 상기 보조 처리기 버스의 제 2 부분을 통해 감시 모드(supervisor mode)로 동작하는지를 나타내는 제 1 제어 신호를, 상기 디코딩과 적어도 부분적으로 일치시켜 상기 보조 처리기에 제공하는 단계를 포함하는, 실행 개시 방법.
  10. 처리기가, 보조 처리기 버스를 통해, 실행을 위해 상기 처리기에 의해 수신된 명령의 보조 처리기에 의한 실행을 개시하기 위한 방법에 있어서:
    상기 명령을 수신하는 단계;
    상기 명령을 디코딩하는 단계;
    상기 보조 처리기 버스의 제 1 부분을 통해, 상기 명령의 적어도 미리 결정된 부분과;
    상기 명령이 상기 보조 처리기 버스의 제 2 부분을 통해 상기 처리기에 의해 디코딩되는 것을 나타내는 제 1 제어 신호를, 상기 디코딩과 적어도 부분적으로 일치시켜 상기 보조 처리기에 제공하는 단계; 및
    상기 명령의 상기 미리 결정된 부분이 상기 보조 처리기 내에서 예외를 유발했는지를 나타내는 제 2 제어 신호를, 상기 보조 처리기로부터 수신하는 단계를 포함하는, 실행 개시 방법.
  11. 보조 처리기가, 보조 처리기 버스를 통해, 상기 보조 처리기에 결합된 처리기에 의해 수신된 명령에 응답하여 동작을 수행하기 위한 방법에 있어서:
    상기 보조 처리기 버스의 제 1 부분을 통해 상기 명령의 적어도 미리 결정된 부분과 상기 명령이 상기 보조 처리기 버스의 제 2 부분을 통해, 상기 처리기에 의해 디코딩되는 것을 나타내는 제 1 제어 신호를 상기 처리기로부터 수신하는 단계;
    상기 명령의 실행을 개시하는 단계; 및
    상기 명령이 예외를 유발했는지를 나타내는 제어 신호를 상기 처리기에 제공하는 단계를 포함하는, 동작 수행 방법.
KR1019980035079A 1997-09-05 1998-08-28 처리기를보조처리기에인터페이스하는방법및그장치 KR100563012B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/924,518 1997-09-05
US08/924,518 US6505290B1 (en) 1997-09-05 1997-09-05 Method and apparatus for interfacing a processor to a coprocessor
US8/924,518 1997-09-05

Publications (2)

Publication Number Publication Date
KR19990029361A KR19990029361A (ko) 1999-04-26
KR100563012B1 true KR100563012B1 (ko) 2007-04-10

Family

ID=25450311

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980035079A KR100563012B1 (ko) 1997-09-05 1998-08-28 처리기를보조처리기에인터페이스하는방법및그장치

Country Status (8)

Country Link
US (3) US6505290B1 (ko)
EP (2) EP0901071B1 (ko)
JP (1) JP3920994B2 (ko)
KR (1) KR100563012B1 (ko)
CN (3) CN1299218C (ko)
DE (1) DE69814268T2 (ko)
SG (2) SG102528A1 (ko)
TW (1) TW385410B (ko)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001092663A (ja) * 1999-09-17 2001-04-06 Sanyo Electric Co Ltd データ処理装置
EP2804106A1 (en) * 2000-09-06 2014-11-19 Ericsson Modems SA Inter-processor communication system
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
JP2002149402A (ja) * 2000-11-14 2002-05-24 Pacific Design Kk データ処理装置およびその制御方法
JP2002169724A (ja) * 2000-12-01 2002-06-14 Oki Electric Ind Co Ltd キャッシュメモリにおける部分無効化装置
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US7287147B1 (en) 2000-12-29 2007-10-23 Mips Technologies, Inc. Configurable co-processor interface
US7237090B1 (en) 2000-12-29 2007-06-26 Mips Technologies, Inc. Configurable out-of-order data transfer in a coprocessor interface
US7168066B1 (en) 2001-04-30 2007-01-23 Mips Technologies, Inc. Tracing out-of order load data
US7240203B2 (en) * 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
GB2378271B (en) * 2001-07-30 2004-12-29 Advanced Risc Mach Ltd Handling of coprocessor instructions in a data processing apparatus
US7228401B2 (en) * 2001-11-13 2007-06-05 Freescale Semiconductor, Inc. Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
US6886092B1 (en) * 2001-11-19 2005-04-26 Xilinx, Inc. Custom code processing in PGA by providing instructions from fixed logic processor portion to programmable dedicated processor portion
US6795877B2 (en) * 2001-11-29 2004-09-21 Intel Corporation Configurable serial bus to couple baseband and application processors
FR2834154B1 (fr) * 2001-12-21 2005-03-11 Oberthur Card Syst Sa Unite electronique incluant des moyens de cryptographie capables de traiter des informations a haut debit
US7305567B1 (en) 2002-03-01 2007-12-04 Cavium Networks, In. Decoupled architecture for data ciphering operations
US7154941B2 (en) * 2002-06-28 2006-12-26 Nokia Corporation Modem having a vector-architecture processor, and associated methodology therefor
EP1387259B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Inter-processor control
JP4182801B2 (ja) * 2003-04-24 2008-11-19 日本電気株式会社 マルチプロセサシステム
KR100849296B1 (ko) * 2003-06-13 2008-07-29 삼성전자주식회사 주제어부와 보조제어부를 구비하는 시스템에서의보조제어부의 초기화 장치 및 방법
JP4224430B2 (ja) * 2003-07-07 2009-02-12 株式会社ルネサステクノロジ 情報処理装置
US7441106B2 (en) 2004-07-02 2008-10-21 Seagate Technology Llc Distributed processing in a multiple processing unit environment
EP1615123B1 (en) * 2004-07-09 2010-04-07 Michael Colin George Chapman High performance user configurable coprocessor
JP3768516B1 (ja) * 2004-12-03 2006-04-19 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステムとそのシステムにおけるプログラム実行方法
US20060155974A1 (en) * 2005-01-07 2006-07-13 Moyer William C Data processing system having flexible instruction capability and selection mechanism
JP3867804B2 (ja) * 2005-03-22 2007-01-17 セイコーエプソン株式会社 集積回路装置
US7472261B2 (en) * 2005-11-08 2008-12-30 International Business Machines Corporation Method for performing externally assisted calls in a heterogeneous processing complex
KR100781340B1 (ko) * 2006-09-18 2007-11-30 삼성전자주식회사 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법
US8095699B2 (en) * 2006-09-29 2012-01-10 Mediatek Inc. Methods and apparatus for interfacing between a host processor and a coprocessor
US8006069B2 (en) * 2006-10-05 2011-08-23 Synopsys, Inc. Inter-processor communication method
US20080147357A1 (en) * 2006-12-15 2008-06-19 Iintrinisyc Software International System and method of assessing performance of a processor
FR2942556B1 (fr) * 2009-02-24 2011-03-25 Commissariat Energie Atomique Unite d'allocation et de controle
CN102804136B (zh) 2009-06-23 2015-03-11 精工爱普生株式会社 副处理器、集成电路装置及电子设备
EP2278452A1 (en) * 2009-07-15 2011-01-26 Nxp B.V. Coprocessor programming
JP5632651B2 (ja) * 2010-05-19 2014-11-26 スパンション エルエルシー 半導体回路及び設計装置
KR101595637B1 (ko) 2011-04-01 2016-02-18 인텔 코포레이션 벡터 친숙형 명령어 형식 및 그의 실행
CN102736895B (zh) * 2011-04-07 2015-06-10 中兴通讯股份有限公司 一种实现寄存器文件间的数据传输方法及装置
EP2525286A1 (en) * 2011-05-17 2012-11-21 Nxp B.V. Co-processor interface
JP2012252374A (ja) * 2011-05-31 2012-12-20 Renesas Electronics Corp 情報処理装置
JP5653865B2 (ja) * 2011-08-23 2015-01-14 日本電信電話株式会社 データ処理システム
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US9329870B2 (en) 2013-02-13 2016-05-03 International Business Machines Corporation Extensible execution unit interface architecture with multiple decode logic and multiple execution units
US9203835B2 (en) 2013-03-01 2015-12-01 Paypal, Inc. Systems and methods for authenticating a user based on a biometric model associated with the user
US20150261535A1 (en) * 2014-03-11 2015-09-17 Cavium, Inc. Method and apparatus for low latency exchange of data between a processor and coprocessor
CN105988773B (zh) 2015-02-10 2021-03-09 恩智浦美国有限公司 硬件接口组件和用于硬件接口组件的方法
CN106648400B (zh) * 2015-11-03 2020-04-03 华为终端有限公司 一种触摸数据上报的方法及电子设备
CN108076476B (zh) * 2016-11-18 2020-11-06 华为技术有限公司 用于传输数据的方法和装置
US11263014B2 (en) * 2019-08-05 2022-03-01 Arm Limited Sharing instruction encoding space between a coprocessor and auxiliary execution circuitry
CN110532040A (zh) * 2019-08-29 2019-12-03 北京地平线机器人技术研发有限公司 固件程序的加载方法及装置、存储介质和电子设备
CN111917471B (zh) * 2020-09-09 2021-09-28 西安工程大学 一种自由空间可见光通信系统及其通信性能优化算法

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4270167A (en) 1978-06-30 1981-05-26 Intel Corporation Apparatus and method for cooperative and concurrent coprocessing of digital information
US4547849A (en) 1981-12-09 1985-10-15 Glenn Louie Interface between a microprocessor and a coprocessor
US4509116A (en) 1982-04-21 1985-04-02 Digital Equipment Corporation Special instruction processing unit for data processing system
US4715013A (en) 1983-04-18 1987-12-22 Motorola, Inc. Coprocessor instruction format
US4731736A (en) 1983-04-18 1988-03-15 Motorola, Inc. Method and apparatus for coordinating execution of an instruction by a selected coprocessor
US4729094A (en) 1983-04-18 1988-03-01 Motorola, Inc. Method and apparatus for coordinating execution of an instruction by a coprocessor
US4763242A (en) * 1985-10-23 1988-08-09 Hewlett-Packard Company Computer providing flexible processor extension, flexible instruction set extension, and implicit emulation for upward software compatibility
JPH079643B2 (ja) 1986-09-24 1995-02-01 株式会社日立マイコンシステム コプロセツサデ−タ転送制御方式
US5001624A (en) 1987-02-13 1991-03-19 Harrell Hoffman Processor controlled DMA controller for transferring instruction and data from memory to coprocessor
US5091845A (en) * 1987-02-24 1992-02-25 Digital Equipment Corporation System for controlling the storage of information in a cache memory
US5226170A (en) * 1987-02-24 1993-07-06 Digital Equipment Corporation Interface between processor and special instruction processor in digital data processing system
IN171198B (ko) * 1987-02-24 1992-08-15 Digital Equipment Corp
US5341482A (en) * 1987-03-20 1994-08-23 Digital Equipment Corporation Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions
JPS63259727A (ja) 1987-04-17 1988-10-26 Hitachi Ltd コプロセツサのインタ−フエイス方式
US4991078A (en) 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
JPH0679307B2 (ja) 1987-10-22 1994-10-05 日本電気株式会社 コプロセッサの並行動作制御方式
JPH01147656A (ja) 1987-12-03 1989-06-09 Nec Corp マイクロプロセッサ
JPH01277934A (ja) * 1988-04-29 1989-11-08 Nec Corp パラメータリスト参照方法の切換え方式
JP2741867B2 (ja) * 1988-05-27 1998-04-22 株式会社日立製作所 情報処理システムおよびプロセツサ
US5109514A (en) * 1988-07-28 1992-04-28 Sun Microsystems, Inc. Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions
JP2754825B2 (ja) 1989-02-03 1998-05-20 日本電気株式会社 マイクロプロセッサ
US5093908A (en) 1989-04-17 1992-03-03 International Business Machines Corporation Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
US5218711A (en) 1989-05-15 1993-06-08 Mitsubishi Denki Kabushiki Kaisha Microprocessor having program counter registers for its coprocessors
US5247650A (en) * 1989-08-30 1993-09-21 Industrial Technology Institute System for combining originally software incompatible control, kinematic, and discrete event simulation systems into a single integrated simulation system
AU7305491A (en) 1990-01-29 1991-08-21 Teraplex, Inc. Architecture for minimal instruction set computing system
EP0468831B1 (en) 1990-06-29 1997-10-15 Digital Equipment Corporation Bus protocol for write-back cache processor
US5305446A (en) 1990-09-28 1994-04-19 Texas Instruments Incorporated Processing devices with improved addressing capabilities, systems and methods
US5826101A (en) 1990-09-28 1998-10-20 Texas Instruments Incorporated Data processing device having split-mode DMA channel
US5283881A (en) * 1991-01-22 1994-02-01 Westinghouse Electric Corp. Microcoprocessor, memory management unit interface to support one or more coprocessors
JP3206006B2 (ja) * 1991-01-25 2001-09-04 株式会社日立製作所 二重化バス制御方法及び装置
US5488729A (en) 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5767939A (en) 1991-10-09 1998-06-16 Seiko Epson Corporation Eyeglass lens
US5708784A (en) * 1991-11-27 1998-01-13 Emc Corporation Dual bus computer architecture utilizing distributed arbitrators and method of using same
AU3616793A (en) 1992-02-18 1993-09-03 Apple Computer, Inc. A programming model for a coprocessor on a computer system
US5481743A (en) 1993-09-30 1996-01-02 Apple Computer, Inc. Minimal instruction set computer architecture and multiple instruction issue method
US5706478A (en) * 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5603047A (en) 1995-10-06 1997-02-11 Lsi Logic Corporation Superscalar microprocessor architecture
US5898897A (en) * 1996-10-18 1999-04-27 Samsung Electronics Company, Ltd. Bit stream signal feature detection in a signal processing system
US5953741A (en) * 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US5715439A (en) * 1996-12-09 1998-02-03 Allen-Bradley Company, Inc. Bi-directional co-processor interface
GB2326253A (en) 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US6226738B1 (en) 1997-08-01 2001-05-01 Micron Technology, Inc. Split embedded DRAM processor
US6163836A (en) 1997-08-01 2000-12-19 Micron Technology, Inc. Processor with programmable addressing modes
US6760833B1 (en) 1997-08-01 2004-07-06 Micron Technology, Inc. Split embedded DRAM processor
US6216222B1 (en) 1998-05-14 2001-04-10 Arm Limited Handling exceptions in a pipelined data processing apparatus
US6247113B1 (en) 1998-05-27 2001-06-12 Arm Limited Coprocessor opcode division by data type
US6434689B2 (en) 1998-11-09 2002-08-13 Infineon Technologies North America Corp. Data processing unit with interface for sharing registers by a processor and a coprocessor
KR100308618B1 (ko) 1999-02-27 2001-09-26 윤종용 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법
US6446221B1 (en) 1999-05-19 2002-09-03 Arm Limited Debug mechanism for data processing systems
US6557069B1 (en) 1999-11-12 2003-04-29 International Business Machines Corporation Processor-memory bus architecture for supporting multiple processors
US6513091B1 (en) 1999-11-12 2003-01-28 International Business Machines Corporation Data routing using status-response signals
US6526469B1 (en) 1999-11-12 2003-02-25 International Business Machines Corporation Bus architecture employing varying width uni-directional command bus
US6658545B1 (en) 2000-02-16 2003-12-02 Lucent Technologies Inc. Passing internal bus data external to a completed system
US6626489B2 (en) * 2001-07-18 2003-09-30 Evenflo Company, Inc. Infant seat providing a cushioned carry

Also Published As

Publication number Publication date
CN1307536C (zh) 2007-03-28
JP3920994B2 (ja) 2007-05-30
CN1983167A (zh) 2007-06-20
DE69814268T2 (de) 2004-01-22
US6505290B1 (en) 2003-01-07
EP0901071A3 (en) 1999-10-13
US6327647B1 (en) 2001-12-04
US7007154B2 (en) 2006-02-28
SG102528A1 (en) 2004-03-26
CN1560729A (zh) 2005-01-05
KR19990029361A (ko) 1999-04-26
EP0901071A2 (en) 1999-03-10
EP0901071B1 (en) 2003-05-07
CN100573445C (zh) 2009-12-23
SG103282A1 (en) 2004-04-29
EP1282035A1 (en) 2003-02-05
DE69814268D1 (de) 2003-06-12
TW385410B (en) 2000-03-21
JPH11154144A (ja) 1999-06-08
CN1211012A (zh) 1999-03-17
CN1299218C (zh) 2007-02-07
US20020049894A1 (en) 2002-04-25

Similar Documents

Publication Publication Date Title
KR100563012B1 (ko) 처리기를보조처리기에인터페이스하는방법및그장치
US5923893A (en) Method and apparatus for interfacing a processor to a coprocessor
US5983338A (en) Method and apparatus for interfacing a processor to a coprocessor for communicating register write information
US7254695B2 (en) Coprocessor processing instructions in turn from multiple instruction ports coupled to respective processors
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
US5978838A (en) Coordination and synchronization of an asymmetric, single-chip, dual multiprocessor
US7293159B2 (en) Coupling GP processor with reserved instruction interface via coprocessor port with operation data flow to application specific ISA processor with translation pre-decoder
US6003129A (en) System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US6603481B1 (en) Geometry processor capable of executing input/output and high speed geometry calculation processing in parallel
KR100308618B1 (ko) 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법
US5440747A (en) Data processor with control logic for storing operation mode status and associated method
US5062041A (en) Processor/coprocessor interface apparatus including microinstruction clock synchronization
US5941984A (en) Data processing device
JPH07120284B2 (ja) データ処理装置
US7051146B2 (en) Data processing systems including high performance buses and interfaces, and associated communication methods
KR100267089B1 (ko) 스칼라/벡터연산이조합된단일명령복수데이터처리
US20060095723A1 (en) Method and apparatus for interfacing a processor to a coprocessor
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
EP0365187A2 (en) Apparatus for selective execution of instructions following a branch instruction
JP2636074B2 (ja) マイクロプロセッサ
JPH0325656A (ja) コプロセッサ

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20130227

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140226

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150227

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160225

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee