KR100981033B1 - 프로세서를 코프로세서에 인터페이싱하기 위한 방법 및 장치 - Google Patents

프로세서를 코프로세서에 인터페이싱하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR100981033B1
KR100981033B1 KR1020047007338A KR20047007338A KR100981033B1 KR 100981033 B1 KR100981033 B1 KR 100981033B1 KR 1020047007338 A KR1020047007338 A KR 1020047007338A KR 20047007338 A KR20047007338 A KR 20047007338A KR 100981033 B1 KR100981033 B1 KR 100981033B1
Authority
KR
South Korea
Prior art keywords
broadcast
coprocessor
registers
register
processor
Prior art date
Application number
KR1020047007338A
Other languages
English (en)
Other versions
KR20050058240A (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 KR20050058240A publication Critical patent/KR20050058240A/ko
Application granted granted Critical
Publication of KR100981033B1 publication Critical patent/KR100981033B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

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

Abstract

본 발명은 일반적으로 프로세서(12)를 적어도 하나의 코프로세서(14, 16)와 인터페이싱하는 것에 관한 것이다. 그 하나의 실시예는, 프로세서 내의 레지스터에 기록되는 오퍼랜드를 코프로세서 통신 버스로 선택적으로 전송함에 사용하는, 일련의 브로드캐스트 지정자(broadcast specifiers)를 갖는 프로세서와 관련된다. 각 브로드캐스트 지정자는 상기 프로세서의 각 범용 레지스터에 대응하는 전송 지시자(broadcast indicator)를 포함할 수 있다. 다른 실시예는, 브로드캐스트 영역들(broadcast regions, 164, 166, 168, 170)의 개념을 이용할 수 있는데, 각 브로드캐스트 영역은 대응 브로드캐스트 지정자를 가질 수 있고, 하나의 브로드캐스트 지정자는 다중 브로드캐스트 영역들에 대응할 수 있다. 또한 하나의 실시예에서, 상기 프로세서는 상기 브로드캐스트 지정자들과는 독립적인 브로드캐스트 영역들을 사용할 수 있는데, 상기 코프로세서는 현재 브로드캐스트 영역에 응답하여 그 기능을 변경할 수 있다. 하나의 실시예에서, 상기 프로세서는 현재 브로드캐스트 영역을 지시하도록 코프로세서 통신 버스(30)를 통해 영역 특정자(H REGION)를 제공할 수 있다.
Figure R1020047007338
프로세서, 코프로세서, 브로드캐스트 지정자, 브로드캐스트 영역, 브로드캐스트 지시자

Description

프로세서를 코프로세서에 인터페이싱하기 위한 방법 및 장치{Method and apparatus for interfacing a processor to a coprocessor}
본 발명은 일반적으로 프로세서와 적어도 하나의 코프로세서(coprocessor)를 갖는 데이터 프로세싱 시스템(data processing system)에 관한 것으로, 특히, 프로세서를 코프로세서에 인터페이싱하기 위한 방법 및 장치에 관한 것이다.
전용의 특정 하드웨어 기능 소자들을 통해 베이스라인 구조(baseline architecture) 및 프로세서 기능을 확장하는 능력은 스케일 가능하고 확장가능한 구조들의 중요한 측면이다.
베이스라인 구조 및 프로세서 기능을 확장하기 위한 양호한 방법들 중 하나는 코프로세서들을 사용한다. 이들은 프로세서의 방향으로 동작하는 통상적으로 단일의 목적의 전용 프로세서들이다. 코프로세서들의 전통적인 사용들 중 하나는 소수점 능력을 전에는 직접 지원하지 못하던 구조들에 선택적으로 제공할 수 있는 수학적 코프로세서들(math coprocessors)이다. 그와 같은 수학적 코프로세서들의 일부 예가 Intel 8087 및 80287이다. 코프로세서들의 일부 다른 유형 또는 잠재적 용도는, 승산-누산기(multiply-accumulators), 변조기/복조기들(모뎀들), 디지털 신호 프로세서들(DSP; digital signal processors), 비터비 연산기들(vitterbi calculators), 암호 프로세서들(cryptographic processors), 이미지 프로세서들, 벡터 프로세서들을 포함한다.
코프로세서들을 구현하는 하나의 방법은, 매우 간단한 기능의 호출이 유리하고 프로세서 구조가 가능한 한 어떤 주어진 코프로세서의 다수의 디테일들로부터 분리될 수 있을 정도로 인터페이스의 사용이 충분히 빠르도록 충분히 밀착 연결된 코프로세서 인터페이스를 사용하는 것이다. 예를 들어, 상기 밀착 연결된 코프로세서는 메인 프로세서에 한정된 인터페이스를 통해 오퍼랜드들(operands) 및 제어 워드들(control words)을 수신할 수 있다. 종종, 상기 메인 프로세서는, 상기 메인 프로세서에 의해 수행되는 일련의 연산에 기초하여 값(value)을 생성한 후, 이를 코프로세서에 전달하게 된다. 최종 수정 후, 코프로세서로 보내질 수 있다. 그러나, 상기 최종 전송은 일부 코프로세서 연산들에서는 수용할 수 없는 오버헤드(overhead)를 포함한다.
본 발명은 예시로서 도시되었고 첨부하는 도면들에 의해 한정되는 것은 아니며, 동일한 참조 번호들은 동일한 요소들을 지시하는 것이다.
당업자라면 본 명세서에 첨부된 도면들이 간략하고 명확히 하기 위해 실제 크기로 그려지지 않았음을 알 것이다. 예를 들면, 상기 도면들의 일부 요소들의 크기는 본 발명의 실시예의 이해를 돕기 위해 다른 요소에 비해 과장되었다.
이하의 설명에서, 다수의 특정한 디테일들(details)은 본 발명의 완전한 이해를 제공하기 위해 특정 단어 또는 바이트 길이들 등을 설명한다. 그러나, 당업자는 본 발명이 상기 특정한 디테일들 없이 실행될 수 있을 것이란 것은 명백하게 될 것이다. 다른 상황들에서, 회로들은 본 발명에서 불필요하게 불명료하지 않기 위해 블록도 형태로 도시되었다. 대부분의 파트에 대해서, 타이밍 고려들(considerations)등에 대한 디테일들은 본 발명의 완전한 이해를 얻기 위해서 불필요하고, 당업자의 기술들내에 있으므로 생략되었다.
용어 "버스(bus)"는 다수의 신호들 또는 데이터, 어드레스, 컨트롤 또는 상태와 같은 하나 또는 그 이상의 다양한 타입들의 정보를 전송하기 위해 사용될 수 있는 컨덕터들을 나타내는데 사용될 것이다. 단어 "주장하다(assert)" 및 "부정하다(negate)"는 신호의 랜더링, 상태 비트 또는 유사한 장치가 논리적으로 참 또는 논리적으로 거짓을 나타내는데 각각 사용될 것이다. 논리적으로 참 상태는 논리적 레벨 일(one)이라면, 논리적으로 거짓 상태는 논리적 레벨 영(zero)이 될 것이다. 그리고, 논리적으로 참 상태가 논리적 레벨 영이라면, 논리적으로 거짓 상태는 논리적 레벨 일이 될 것이다. 신호명을 이하의 심볼 "*" 는 신호가 논리적으로 참 상태가 논리적 레벨 영을 의미하는 액티브 로우 신호(active low signal)를 가리킨다.
도 1은 본 발명에 따른 데이터 프로세싱 시스템의 일 실시예를 도시하는 블록도.
도 2는 도 1의 프로세서의 일부의 일 실시예를 도시하는 블록도.
도 3은 도 1의 코프로세서의 일부의 일 실시예를 도시하는 블록도.
도 4는 레지스터 브로드캐스트 동작의 일 실시예를 도시하는 타이밍도.
도 5는 전송 마스크 레지스터의 일 실시예를 도시하는 블록도.
도 6은 브로드캐스트 영역들의 일 실시예를 도시하는 블록도.
도 7은 레지스터 브로드캐스트 동작의 다른 실시예를 도시하는 타이밍도.
도 8은 도 2의 제어 회로의 일부의 일 실시예를 도시하는 블록도.
도 9는 도 2의 브로드캐스트 영역 제어 유닛의 일부의 일 실시예를 도시하는 블록도.
도 1은 버스(28)에 의해 모두 양방향으로 연결된 프로세서(12), 코프로세서(14), 코프로세서(16), 메모리(18), 다른 모듈들(20) 및 외부 버스 인터페이스(22)를 포함하는 데이터 프로세싱 시스템(10)의 일 실시예를 도시하는 블록도이다. 본 발명의 대안 실시예들은 하나의 프로세서(14), 두 개의 코프로세서들(14, 16) 또는 도시되지 않았지만 심지어 더 많은 코프로세서들을 가질 것이다. 외부 버스 인터페이스(22)는 집적 회로 단자들(35)에 의해 외부 버스(26)에 양방향으로 연결되었다. 메모리(24)는 외부 버스(26)에 양방향으로 연결되었다. 프로세서(12)는 집적 회로 단자들(31)에 의해 데이터 프로세싱 시스템(10)의 외부에 선택적으로 연결될 수 있다. 코프로세서(14)는 집적 회로 단자들(32)에 의해서 데이터 프로세싱 시스템(10)의 외부에 선택적으로 연결될 수 있다. 메모리(18)는 집적 회로 단자들(33)에 의해 데이터 프로세싱 시스템(10)의 외부에 선택적으로 연결될 수 있다. 다른 모듈들(20)은 집적 회로 단자들(34)에 의해 데이터 프로세싱 시스템(10)의 외부에 선택적으로 연결될 수 있다. 프로세서(12)는 코프로세서 인터페이스(30)에 의해서 코프로세서(14)와 코프로세서(16)에 양방향으로 연결될 수 있다. 도 1에서 도시되지는 않았지만, 대안 실시예들도 버스(28)를 통해 연결된 메모리(18)와 유사한 추가적인 메모리들을 또한 가질 수 있다.
도 2는 도 1의 프로세서(12)의 부분을 도시하는 블록도이다. 일 실시예에 있어서, 프로세서(12)는 제어 회로(40), 명령 디코딩 회로(42), 명령 파이프(44), 레지스터들(46), 연산 논리 회로(ALU)(48), 래칭 멀티플렉서(MUX)(50), 래칭 멀티플렉서(MUX)(52), 멀티플렉서(MUX)(54), 브로드캐스트 영역 제어 유닛(120), 및 프로그램 카운터 유닛(130)을 포함한다. 본 발명의 일 실시예에 있어서, 코프로세서 인터페이스(30)는 신호들(60 내지 72, 128)을 포함한다. 클럭 신호(60)는 제어 회로(40)에 의해 발생된다. 코프로세서 동작 신호들(61)은 제어 회로(40)에 의해 발생되고, 코프로세서들(14, 16)에게 제공된다.
감독 모드 신호(supervisor mode signal; 62)는 제어 회로(40)에 의해 발생되고 코프로세서들(14, 16)에게 제공된다. 디코드 신호(63)는 제어 회로(40)에 의해 발생되고, 코프로세서(14, 16)에게 제공된다. 코프로세서 비지 신호(coprocessor busy signal)(64)는 제어 회로(40)에 의해서 코프로세서(14) 또는 코프로세서(16)로부터 수신된다. 실행 신호(execute signal)(65)는 제어 회로(40)에 의해 발생되고, 코프로세서들(14, 16)에 제공된다. 예외 신호(exception signal)(66)는 제어 신호(40)에 의해 코프로세서(14) 또는 코프로세서(16)로부터 수신된다. 레지스터 쓰기(REGWR*) 신호(67)는 제어 회로(40)에 의해 발생되고, 코프로세서들(14, 16)에게 제공된다. 레지스터 신호들(REG[4:0])(68)은 제어 회로(40)에 의해 발생되고, 코프로세서들(14, 16)에게 제공된다. 에러 신호(H_ERR*)(69)는 제어 회로(40)에 의해 발생되고, 코프로세서들(14, 16)에게 제공된다. 데이터 스트로브 신호(data strobe signal)(H_DS*)(70)는 제어 회로(40)에 의해 발생되고, 코프로세서들(14, 16)에 제공된다. 데이터 승인 신호(data acknowledge signal)(H_DA*)(71)는 제어 회로(40)에 의해 코프로세서(14 또는 16)로부터 수신된다. 영역 신호(H_REGIONN:1])는 브로드캐스트 영역 제어 유닛(120)에 의해 발생되고, 제어 회로(40) 및 코프로세서들(14, 16)에 제공된다. 또한, 프로세서 인터페이스(30)의 부분으로 고려되는 하드웨어 데이터 포트들 신호(HDP[31:0])(72)는 프로세서(12)내의 코프로세서들(14, 16)과 내부 회로 사이에서 양방향성이다.
본 발명의 일 실시예에서, 다수의 신호들은 메모리(18) 및/또는 메모리(24)에 데이터를 로딩 또는 저장하기 위해 버스(28)에/로부터 제공된다. 일 실시예로서, 이들 신호들은 제어 회로(40)에 의해 발생되고 버스(28)에 제공되는 전송 요청 신호(TREQ*)(73)를 포함한다. 전송 에러 승인 신호(TEA*)(74)는 버스(28)에 의해 제어 회로(40)에 제공된다. 전송 승인 신호(TA*)(75)는 버스(28)에 의해 제어 회로(40)에게 제공된다. 명령들은 컨덕터들(76)에 의해 버스(28)로부터 명령 파이프(44)에 제공된다. 데이터는 컨덕터들(76)에 의해 먹스(MUX)(54)에 제공된다. 드라이브 데이터 신호(79)는 3상태 버퍼(9)가 컨덕터들(88, 76)에 의해 래칭 먹스(latching MUX)(52)로부터 데이터를 제공할 수 있다. 어드레스 선택 신호(78)는 래칭 MUX(50)가 어드레스들을 컨덕터들(77)을 경유하여 버스(28)에 제공하도록 인에이블한다. MUX(54)로의 다른 입력은 HDP 신호(HDP[31:0])(72)에 의해 제공된다. MUX(54)로의 다른 입력은 ALU 결과 컨덕터들(86)에 의해 제공된다. MUX(54)의 출력 즉, 결과 신호들(83)은 레지스터들(46)과 3상태 버퍼(96)의 입력에 제공된다. ENABLE_BROADCAST 신호(82)는 3상태 버퍼(96)가 결과 신호들(83)을 HDP[31:0](72)상에 구동하도록 인에이블한다. 3상태 버퍼(96)의 출력은 또한 래칭 MUX(52)의 입력에 결합된다. 결과 신호들(83)은 입력으로서 래칭 MUX(50)에 제공되고 입력으로서 제어 회로(40)에 제공된다. 결과 신호들(83)은 MUX(54)에 의해 레지스터들(46)에 제공된다. 결과 선택 신호(RESULT_SELECT)(81)는 MUX(54)의 어떤 입력이 결과 컨덕터들(83) 상에 구동되어야 하는지를 선택한다. 소스 선택 신호(SOURCE_SELECT)(80)는 래칭 MUX(52)에 제공되어 어떤 신호가 컨덕터들(88) 상의 3상태 버퍼(95)에 구동되어야 하는지를 선택한다. 제어 회로(40)는 제어 정보를 제공하고 컨덕터들(91)로 레지스터들(46)로부터의 상태 정보를 수신한다. 제어 회로(40)는 제어 신호들을 제공하고 컨덕터들(92)에 의해 산술 논리 유닛(48)으로부터 상태 신호들을 수신한다. 제어 회로(40)는 제어 및 정보 신호들을 제공하고 REGION_SPECIFIERS(122)에 의해 브로드캐스트 영역 제어 유닛(20)으로부터 제어 및 정보 신호들을 수신한다. 제어 회로는 제어 신호들을 제공하고 컨덕터들(124)에 의해 프로그램 카운터 유닛(130)으로부터 상태 신호들을 수신한다. 제어 회로(40)는 제어 신호들을 제공하고 컨덕터들(93)에 의해 명령 파이프(44)와 명령 디코드 회로(42)로부터 상태 신호들을 수신한다. 명령 파이프(44)는 컨덕터들(89)에 의해 명령들을 명령 디코드 회로(42)에 제공하도록 결합된다. 명령 디코드 회로(42)는 디코딩된 명령 정보를 컨덕터들(90)에 의해 제어 회로(40) 및 프로그램 카운터 유닛(130)에 제공한다. 레지스터들(46)은 소스 오퍼랜드들(source operands)을 컨덕터들(84)에 의해 산술 논리 유닛(48)에 제공한다. 레지스터들(46)은 컨덕터들(84), 래칭 MUX(52), 3상태 버퍼(95), 및 컨덕터(76)에 의해 메모리(18) 또는 메모리(24)에 저장될 데이터를 제공한다. 레지스터(46)는 컨덕터들(84), 래칭 MUX(50), 및 어드레스 컨덕터(77)에 의해 메모리(18) 또는 메모리(24)에 어드레스 정보를 제공한다. 레지스터들(46)은 컨덕터들(85)에 의해 제 2 소스 오퍼랜드를 산술 논리 유닛(48)에 제공한다. 프로그램 카운터 유닛(130)은 프로그램 카운터를 메모리(18) 또는 메모리(24)에 컨덕터들(126), 래칭 MUX(50), 및 어드레스 컨덕터(77)에 의해 제공한다. 또한 프로그램 카운터 유닛(130)은 프로그램 카운터 정보를 브로드캐스트 영역 제어 유닛(120)에 제공한다. 프로그램 카운터 유닛(130)은 다음 메모리 어드레스를 발생하기 위해 입력으로서 래칭 MUX(50)로부터 출력 어드레스를 수신한다.
본 발명의 대안적인 실시예들은 레지스터들(46)에 어떤 수의 레지스터들도 포함할 수 있다는 것을 주의해야 한다. 또한 본 발명의 대안적인 실시예들은 정보를 나르기 위해 양 방향 버스들 대신에 한 쌍의 단일 방향 버스들을 사용할 수 있으며 3상태 버퍼들 대신에 멀티플렉서 논리를 사용할 수 있다. 예를 들어, HDP[31:0] 또는 다른 양 방향 버스들은 분리된 입력 및 출력 부분들로서 구현될 수 있다.
도 3은 코프로세서(14)의 부분의 일 실시예를 도시하는 블록도이다. 일 실시예에서, 코프로세서(14)는 제어 회로(100), 계산 회로(102), 및 선택 기억 회로(104)를 포함한다. 제어 회로(100)는 신호들(60 내지 72, 128)을 포함하는 코프로세서 인터페이스(30)로 프로세서(12)에 양방향적으로 결합된다. 본 발명의 일 실시예에서 제어 회로(100)는 프로세서(12)로부터 동작 신호들(61)과 디코드 신호(63)를 수신하는 디코드 회로(106)를 포함한다. 제어 회로(100)는 제어 정보를 제공하고 컨덕터들(108)로 선택 기억 회로(104)로부터 상태 정보를 수신한다. 제어 회로(100)는 제어 정보를 제공하고 컨덕터들(109)로 계산 회로(102)로부터 상태 정보를 수신한다. 계산 회로(102) 및 선택 기억 회로(104)는 컨덕터들(110)에 의해 양방향적으로 결합된다. 하나 이상의 신호들(110)은 버스(28)에 또는 집적 회로 단자들(32)로부터 제공될 수 있다. 제어 회로(100)는 컨덕터들(112)에 의해 버스(28)에 또는 집적 회로 단자들(32)로 또는 그로부터 정보를 수신 또는 제공할 수 있다. 신호들(72)은 계산 회로(102) 및 선택 기억 회로(104)에 양방향적으로 결합될 수 있다. 또한, 신호들(72)은 버스(28) 또는 집적 회로 단자들(32)에 양방향적으로 결합될 수 있다. 본 발명의 대안적인 실시예에서, 선택 기억 회로(104)는 구현되지 않을 수 있다. 선택 기억 회로(104)가 구현되는 본 발명의 실시예들에서, 레지스터들, 어떤 형식의 메모리, 래치들 또는 프로그램 가능한 논리 어레이들을 포함하는 어떤 형식의 기억 회로 등을 사용하여 구현될 수 있다. 본 발명의 대안적인 실시예들에서, 계산 회로(102)는 어떤 형식의 논리 또는 계산 기능을 수행할 수 있다.
상기 시스템은 동작들과 관련된 특정 애플리케이션에 대해 최적화되는 외부 코프로세서(14)(또는 하드웨어 가속기)에 의해 작업 가속을 위한 지원을 제공한다. 이들 외부 코프로세서들(14, 16)은 모집단 카운트를 수행하는 코프로세서(14)만큼 간단하거나, 고속 곱셈/누산 연산을 수행할 수 있는 코프로세서(16) 또는 DSP 가속 코프로세서(14)와 같은 더 복잡한 기능일 수 있다.
특별 구현에 적절한 것으로서 하나 이상의 몇몇 메커니즘들에 의해 데이터가 프로세서(12)와 코프로세서(14) 간에 전송된다. 이들은 코프로세서(14)로의 전송들과 코프로세서(14)로부터의 전송들로 분할될 수 있다.
코프로세서(14)로 데이터를 전송하는 메커니즘들 중 하나는 레지스터 브로드캐스트 메커니즘이며, 이는 명령 원어를 포함하지 않지만 일반 프로세서(12) 동작의 부산물이다. 이것은 코프로세서(14)가 하나 이상의 프로세서(12) 레지스터들에 업데이트들을 모니터링하도록 인터페이스를 통해 프로세서(12)의 범용 레지스터들("GPR")(46)에 업데이트들을 반영하는 것을 포함한다. 코프로세서(14)가 내부 레지스터 또는 기능에 대해 GPR(46)을 "중첩"한다면 이것이 적절할 것이다. 이 경우, 프로세서(12)로부터 코프로세서(14)까지 파라미터들의 명확한 통과가 요구되지 않을 것이다.
코프로세서(14)에 데이터를 전송하는 또 다른 방식은 코프로세서로의 하나 이상의 데이터 아이템들의 전송을 포함하는 코프로세싱에 대한 데이터 구동 방식이다. 이들 아이템들의 전송은 코프로세서 명령 또는 명령어(instruction)의 명확한 전송이 없이 코프로세싱 동작을 야기할 수 있다. 코프로세서를 갖춘 통신 오버헤드의 감소는 상당한 성능 향상을 가져올 수 있다.
외부 코프로세서들(14, 16)과 프로세서(12) 사이의 오퍼랜드와 명령들의 명확한 전송을 위해 베이스 프로세서(12)에는 명령어 프리미티브들(instruction primitives)이 제공된다. 명령과 데이터 전송의 속도를 제어하기 위해 핸드쉐이킹 메커니즘(handshaking mechanism)이 제공된다.
코프로세서(14) 기능들이 구현 특정 유닛들로 설계되어, 주어진 유닛의 정확한 기능성이 서로 다른 구현들에 걸쳐서 변경되는 것이 자유로우며, 동일한 명령어라도, 매핑들이 제공될 수 있음에 유의하자.
도 4는 레지스터 브로드캐스트 동작을 보여주는 타이밍도이다. 코프로세서(14) 또는 외부 모니터로 전달되는 파라미터의 성능 오버헤드를 회피하기 위해, 레지스터 브로드캐스트 메커니즘(레지스터 스누핑 메커니즘(register snooping mechanism)이라 할 수 있음)이 제공된다. 이것은 코프로세서(14)가 하나 이상의 프로세서(12)의 일반적인 레지스터들(46)의 쉐도우 카피(shadow copy)를 구현할 수 있게 한다. 그 성능은 프로세서 GPR들(46) 중 하나에 기록되는 값 및 레지스터(46)가 각 GPR 업데이트를 위해 업데이트되는 명령을 전송함으로써 구현된다. (언더라인된 레지스터들, 예컨대, RA와 RC는 대응하는 명령의 지정 레지스터를 나타냄에 유의하자) 스트로브 신호 REGWR*67은 각 레지스터 업데이트를 위해 어서트(assert)된다. 상기 값은 32 비트 양방향 데이터 경로 HDP[31:0](72)를 통해 전송되고, 5 비트 레지스터 넘버 버스는 업데이트되는 실제 프로세서 레지스터(46)에 포인터를 제공한다(REG[4:0] 68). 레지스터 넘버는 정규 파일 또는 교호 파일(alternate file) 내의 레지스터(46)를 참조할 수 있다. 바람직한 실시예에서, 교호 파일 레지스터들은 REG[4]==1로써 나타내지고, 정규 파일 레지스터들은 REG[4]==0으로써 나타내진다. 하지만, 본 발명은 레지스터 세트의 실제 구획에 대한 임의의 방식에 의존하지 않음에 유의하자.
코프로세서(14)는 차후에 레지스터 정보의 명확한 이동을 회피하기 위해 지정 레지스터(46) 넘버의 명령과 함께 내부적으로 그 값을 래치할 수 있다. 이 기능성은 또한 레지스터 파일(46) 또는 그것의 서브세트의 상태를 트랙킹하기 위해 디버그 코프로세서(14)에 의해 사용될 수 있다. 도 4는 브로드캐스트 성능의 예를 보여준다. 도 4를 참조하여 도시된 브로드캐스트 성능은 레지스터 파일로의 매기록 트랜잭션을 위해 HDF[31:0](72)를 통해 브로드캐스트를 수행한다. 그러므로, 이 성능은 코프로세서(14)가 프로세서(12)의 레지스터 파일(즉, GPR (46))의 쉐도우 카피를 유지하게 하고, 프로세서(12)에서 코프로세서(14)로의 일부 파라미터들을 정확하게 통화하게 할 필요성을 제거한다. 하지만, 프로세서(12)와 코프로세서(14)의 브로드캐스트 성능들을 추가적으로 제어하기 위한 능력의 필요성이 존재한다. 그러므로, 도 5 내지 도 9는 프로세서(12)에 대한 선택적인 브로드캐스트 성능을 가능하게 하고 코프로세서에 대한 선택적인 업데이트 정책을 가능하게 하는 본 발명의 일 실시예를 보여준다.
도 5는 본 발명의 일 실시예에 따른 선택적인 브로드캐스트 성능의 구현을 가능하게 하는 브로드캐스트 마스크 레지스터를 보여준다. 그러므로, 모든 결과 업데이트를 GPR(46)에 브로드캐스트하는 대신에, 브로드캐스트 마스크 레지스터는 그 결과들이 코프로세서(14)에 브로드캐스트되는 GPR(46)의 서브세트를 선택하는데 사용될 수 있다. 예를 들면, GPR(46) 내의 각 레지스터에 대해, 그 특정 레지스터에 대한 업데이트가 코프로세서(14)(H에[31:0](72)를 통해)에 업데이트된 레지스터 콘텐츠를 전송하게 할지를 결정하기 위해 브로드캐스트 지시자(broadcast indicator)로서 단일 비트가 사용될 수 있다. 도 5는 GPR(46)이 16개의 레지스터들을 갖는 것으로 가정된 브로드캐스트 마스크 레지스터의 일 예를 보여준다. 이 실시예에서, 0은 특정 비트와 연관된 레지스터가 그 결과 브로드캐스트가 디스에이블된다는 것을 나타내며, 1은 특정 비트와 연관된 레지스터가 그 결과 브로드캐스트가 인에이블된다는 것을 나타낸다. 그러므로, 도 5의 예에서, 비트 위치들(8, 9)에 대응하는 레지스터들(일 실시예에서, GPR(46) 내의 레지스터(R8) 및 레지스터(R9)일 수 있음)에 대한 업데이트들만이 코프로세서(14)에 브로드캐스트된다. GPR(46)가 단지 8개의 레지스터들을 포함하면, 브로드캐스트 마스크 레지스터는 8비트 길이만을 필요로 한다. 그러므로, 브로드캐스트 마스크 레지스터는 GPR(46)에 대응하는 브로드캐스트 지시자들의 세트를 갖는 브로드캐스트 지정자(broadcast specifier)로 고려될 수 있다.
일 실시예에서, 브로드캐스트 마스크 레지스터(예컨대, 브로드캐스트 지정자)는 사용자 프로그램가능(소프트웨어에 의한 액세스가능)하고, 그러므로 새로운 필요조건들이 나타남에 따라 시간에 대해 서로 다른 대응하는 활성을 설명하도록 시스템 상태가 변하기 때문에 수정될 수 있다. 다른 실시예에서, 브로드캐스트 마스크 레지스터 또는 브로드캐스트 지정자는 브로드캐스트 마스크 레지스터를 업데이트하도록 설계된 특정 명령 내 직접 필드(immediate field)에 의해 액세스가능하게 될 수 있다. 대안의 실시예들은 또한 도 5에 도시된 바와 같이 브로드캐스트 마스크 레지스터의 사용 이외에 프로세서(12)에 의해 브로드캐스트된 그 결과들을 필요로로 할 수 있는 각 레지스터에 대해 대응하는 브로드캐스트 지시자를 제공하는 상이한 브로드캐스트 지정자들 및 상이한 방법들을 사용할 수 있다. 예를 들어, 레지스터 마스크 필드는 GPR(46)에 대응하는 메모리(18 또는 24)에 저장될 수 있다.
브로드캐스트 마스크 레지스터(또는 다른 브로드캐스트 지정자)의 사용을 통해, HDP[31:0]의 로딩 및 전체 전력 소모를 줄일 수 있다. 예를 들면, 값이 코프로세서(14)에 의해 스누핑될 필요가 없다면, 이 값을 저장하기 위한 GPR(46) 내의 레지스터를 할당하고 이 레지스터에 대한 브로드캐스트를 디스에이블하도록 브로드캐스트 마스크를 사용함으로써 프로세서(12)에 의해 이 값이 브로드캐스트될 수 없다. 그러므로, 계산된 값들의 서브세트만이 프로세서(12)에서 코프로세서(14)로 브로드캐스트될 수 필요가 있다면, GPR(46)의 서브세트는 이들 값들을 보유하도록 보존될 수 있으며, 그후에 이들 보존된 레지스터 중 하나의 업데이트만이 계산된 값이 브로드캐스트된다. 결과들을 생성하는 명령들의 수가 높으므로, 모든 기록 결과들을 브로드캐스트하므로 불필요하게 HDP[31:0](72)를 로드하고 더 많은 전력을 소모한다. 그러므로, 레지스터의 서브세트만이 코프로세서(14)에 브로드캐스트되도록 브로드캐스트를 마스킹하여, 프로세서(12) 내 전력 소모를 절감하고 HDP[31:0](72)에 대한 초과 로딩을 감소시킨다.
브로드캐스트 능력들을 더욱 제어하기 위해, 브로드캐스트 영역들이 사용될 수 있다. 도 6은 4개의 브로드캐스트 영역들, 즉 브로드캐스트 영역 1(164), 브로드캐스트 영역 2(166), 브로드캐스트 영역 3(168), 및 브로드캐스트 영역 4(170)으로 나누어지는 샘플 프로그램 공간(172)을 도시한다. 프로그램 공간(172)은 프로세서(12) 내의 임의의 프로그램 공간일 수 있고, 메모리(18 또는 24)와 같은 임의의 프로그램 메모리에 위치될 수 있다. 브로드캐스트 영역은 브로드캐스트가 제어되는 명령 어드레스들의 영역(즉 프로그램 영역 또는 실행 영역)이라 한다. 도 6에 있어서, 각 브로드캐스트 영역은 대응하는 브로드캐스트 마스크를 가진다. 예를 들면, 브로드캐스트 영역 1(164)는 브로드캐스트 마스크 1(158)에 대응하고, 브로드캐스트 영역 2(166) 및 브로드캐스트 영역 4(170) 모두는 브로드캐스트 마스크 2(160)에 대응하고, 브로드캐스트 영역 3(168)은 브로드캐스트 마스크 3(162)에 대응한다. 그러므로, 브로드캐스트 마스크는 하나 이상의 브로드캐스트 영역에 대응할 수 있다.
브로드캐스트 영역으로의 브로드캐스트 마스크의 할당은 복수의 방법으로 제어될 수 있다. 소프트웨어 제어 하에서 고정되거나 있을 수 있고 사용자에 의해 프로그램 가능하다. 프로그래밍은 브로드캐스트 마스크를 각 구현 브로드캐스트 영역과 쌍을 이루는 제어 레지스터를 통해, 또는 다른 저장 수단을 통해 행해질 수 있다. 시스템 실행이 진행함에 따라, 브로드캐스트 영역과의 브로드캐스트 마스크의 관련이 사용자 프로그램 제어 하에서, 또는 시스템 이벤트들의 하드웨어 모니터링에 의해, 또는 데이터 프로세싱 시스템에 적합한 임의의 다른 제어 수단에 의해 변경될 수 있다.
코드가 브로드캐스트 영역 내에서 실행될 때, 대응하는 브로드캐스트 마스크는 업데이트 결과들의 선택 브로드캐스트를 제공하기 위해 사용된다. 예를 들면, 브로드캐스트 영역 1(164) 내에서, 브로드캐스트 마스크 1(158) 에 의해 지시된 레지스터들로의 이들 업데이트만이 코프로세서(14)로 브로드캐스트된다. 브로드캐스트 영역 2(166) 또는 브로드캐스트 영역 4(170) 내에서, 브로드캐스트 마스크 2(160)에 의해 지시된 레지스터들로의 업데이트들이 코프로세서(14)로 브로드캐스트된다. 브로드캐스트 영역 3(168) 내에서, 브로드캐스트 마스크 3(162)에 의해 지시된 레지스터들로의 업데이트들이 코프로세서(14)로 브로드캐스트된다.
이와 같은 브로드캐스트 영역들의 사용은 또한 코프로세서(14)의 단순화된 동작을 고려한다. 예를 들면, 몇몇 경우에 있어서, 코프로세서(14)는 더 이상 프로세서(12)로부터의 명백한 명령들 형태의 지식을 필요로 하지 않지만, 코프로세서(12)가 정확한 구동 아이템들만을 코프로세서(14)로 전달하도록 설계될 수 있기 때문에, 대신 데이터 구동 방식으로 동작할 수 있다. 그러므로, 브로드캐스트 영역들과 브로드캐스트 마스크들을 사용함으로써, 프로세서(12)는 그 브로드캐스트 능력을 제어할 수 있고 따라서 코프로세서(14)로 보내는 구동 아이템들을 제어할 수 있다. 데이터 구동 방식으로 동작함으로써, 코프로세서(14 또는 16)로의 전달 개개의 제어 동작 또는 명령들과 관련된 오버헤드가 감소되거나 제거될 수 있고, 따라서 시스템 성능을 향상시키고 시스템 전력 소모를 낮출 수 있다.
대안으로, 도 6의 브로드캐스트 영역(1 내지 4)은 또한 브로드캐스트 마스크들(1 내지 3)과 독립적으로 사용될 수 있다. 예를 들면, 브로드캐스트 영역들은 브로드캐스트가 일어나거나 일어나지 않는 영역들로서 정의될 수 있다. 즉, 브로드캐스트 영역 1(164) 내의 코드에 대해, 브로드캐스트은 항상 GPR(46)의 어떤 업데이트를 위해 일어날 수 있다. 그러나, 브로드캐스트 영역(2)은, 이러한 영역 내의 코드에 대해, 브로드캐스트가 전혀 일어나지 않도록 정의될 수 있다. 그러므로, 브로드캐스트 성능은 또한 브로드캐스트 마스크들 또는 브로드캐스트 마스크들과 영역들의 조합에 기초하기보다는 단순히 브로드캐스트 영역들에 기초하여 선택될 수 있다.
도 7은 선택 레지스터 브로드캐스트 동작의 일례를 도시한 타이밍도이다. 명령들 ADD R3, R2 및 OR R4, R5은 도 6의 브로드캐스트 영역 1(164)에 포함되므로, 브로드캐스트 마스크 1(158)에 대응하며, 또한 그 예는 도 7에 도시된다. 명 령들 AND R6, R7, SUB R3, R4 및 MUL R9, R10은 도 6의 브로드캐스트 영역 2(166)에 포함되므로, 브로드캐스트 마스크 2(160)에 대응하며, 또한 그 예는 도 7에 도시된다. 도 7의 타이밍도는, 명령들이 명령 파이프라인(44)의 실행단에 있을 때를 나타낸다. 각 명령에 밑줄 그어진 레지스터는 목적지 레지스터(그 결과가 기록되어지는 레지스터)를 나타낸다.
영역 1(164)에서, ADD R3, R2의 결과는 레지스터 R3(여기서 R3=R3+R2)에 기록된다. 브로드캐스트 마스크 1(158)이 비트 위치 3에 기록된 "1"을 가지므로, 레지스터 R3의 임의의 기록은 HDP[31:0](72)를 통해 프로세서(12)에 의해 브로드캐스트될 것이다. 그러므로, 도 7의 타이밍도의 제 1 클럭 사이클 내에서, ADD 명령의 결과(프로세서(12)의 R3에 기록된 결과)는 HDP[31:0](72)를 통해 코프로세서로 브로드캐스트된다. 이것이 브로드캐스트되므로, R3에 대응하는 레지스터 번호는 또한 REG[4:0] 68에 의해 코프로세서(14)에 제공된다. REGWR*(67)은 코프로세서(14)가 인입 결과를 그 레지스터들 중 하나에 기록하도록 어서트되며, ENABLE_BROADCAST(82)는 도 2의 3개로 된(tristate) 버퍼(96)가 HDP[31:0](72) 상에서 결과를 구동할 수 있도록 어서트된다. 또한, 영역 지시기(indicator)는 H-REGION[N:1](128)에 의해 코프로세서(14)에 제공된다. 그러므로, 코드가 영역 1에서 실행되는 동안, H-REGION[N:1](128)(N 비트 값에 대응)은 "1"을 나타낸다.
OR R4, R5 명령들은 ADD R3, R2 명령 다음에 오며, 여전히 브로드캐스트 영역 1(164)에 있으나, 그 목적지 레지스터는 R4이다. 브로드캐스트 마스크 1(158)에 따라, R4에 기록된 결과들은 브로드캐스트되지 않으며, 그러므로, OR 명령의 결과는 코프로세서(14)에 제공되지 않고, 레지스터 번호는 REG[4:0](68)를 통해 요청되지 않으며, REGWR* 및 ENABLE_BROADCAST 둘 다는 디어서트(deassert)된다.
다음 3개의 명령들 AND R6, R7, SUB R3, R4 및 MUL R9, R10 전부 브로드캐스트 영역 2(166)에 포함된다. 밑줄 그어진 R6, R3 및 R9는 그 대응하는 명령에 대한 목적지 레지스터를 나타낸다. 일단 브로드캐스트 영역 2(166)에 들어가면, H-REGION[N:1] 128은 '2'를 나타내도록 상태가 변한다. 브로드캐스트 영역 2(166)는 대응하는 브로드캐스트 마스크 2(160)를 가지며, 그 대응하는 브로드캐스트 마스크 2(160)는 레지스터 R9 및 R6의 기록들만이 브로드캐스트되어야 함을 나타낸다. 그러므로, 도 7의 타이밍도에 도시된 바와 같이, AND 및 MUL 명령의 결과들만이 브로드캐스트 영역 2(166)에 있는 동안 HDP[31:0](72)를 통해 코프로세서(14)로 브로드캐스트된다. 각각에 대한 레지스터 번호는 또한 REG[4:0](68)을 통해 전송되며, REGWR* 및 ENABLE_BROADCAST(82) 둘 다는 어서트된다. 그러나, SUB 명령의 결과들은 브로드캐스트되지 않는데, 그 이유는 브로드캐스트 마스크 2(160)가 브로드캐스트 영역 2(166) 내에서, 레지스터 R3의 기록이 브로드캐스트되지 않아야 함을 나타내기 때문이다.
도 8은 블록도의 형태로, 도 2의 제어 회로(40)의 일부의 일 실시예를 도시한다. 제어 회로(40)의 일부는 브로드캐스트 마스크 1 레지스터(134), 브로드캐스트 마스크 2 레지스터(136), 브로드캐스트 마스크 M 레지스터(138), 마스크 선택 회로(132), 목적지 비교 유닛(142)을 포함한다. 제어 회로(40)는 M 개의 브로드캐 스트 마스크 레지스터들을 포함한다. (또한, 제어 회로(40)는, 비록 3개의 브로드캐스트 마스크 레지스터들이 도시되었지만 1 또는 2개의 브로드캐스트 마스크 레지스터들만을 포함할 수 있음에 유념하라.) 제어 회로(40)는 또한 브로드캐스트 마스크 1 레지스터(134), 브로드캐스트 마스크 2 레지스터(136), 및 브로드캐스트 마스크 M 레지스터(138)로 결합된 마스크 선택 회로(132)를 포함한다. 마스크 선택 회로는 또한 H_REGION[N:1]을 수신하고 현재의 브로드캐스트 마스크(140)를 목적지 비교 유닛(142)으로 제공한다. 목적지 비교 유닛(142)은 또한 명령 디코드(42)로부터 컨덕터들(90)과 결합되고, 3상태(tristate) 버퍼(96)에 ENABLE_BROADCAST(82)를 제공한다.
동작시, 브로드캐스트 마스크 레지스터들(134, 136, 138)의 값들은 결과 신호들(83)을 통해 로드될 수 있다. 따라서, 명령이 값들을 브로드캐스트 마스크 레지스터들로 로드하도록 프로세서(12)로 실행될 수 있고; 따라서, 컨턱터들(90)을 통한 제어 신호들은 브로드캐스트 마스크 레지스터들(134, 136, 또는 138)을 로드하기 위한 신호가 MUX(54)로부터의 결과 신호들(83)로서 제공되는 실제값으로 실행된다는 것을 나타낼 수 있다. 따라서, 이러한 실시예에서, 브로드캐스트 마스크 레지스터들(134, 136, 138)이 사용자 프로그램가능하다. 마스크 선택 회로(132)는 코드의 현재 실행 영역(즉, 현재 프로그램 영역)을 나타내는 N-비트 값인 H_REGION[N:1]을 수신한다. (영역들의 수 Y는 프로세서(12)의 설계에 따라 브로드캐스트 마스크 영역들의 수보다 크거나 작을 수 있다.) 마스크 선택 회로(132)는 각 영역이 H_REGION[N:1]로 나타내지는 브로드캐스트 마스크 레지스터들(134, 136,...,138) 중 하나와 연관된 다수의 상이한 방법들로 수행될 수 있다. 일 실시예에서, 마스크 선택 회로(132)는 각 브로드캐스트 영역을 갖는 유일한 브로드캐스트 마스크와 연관된다. 대안의 실시예들에서, 마스크 선택 회로(132)는 각 브로드캐스트 영역으로 선택된 브로드캐스트 마스크의 임의의 연관을 허용하는 사용자 프로그램가능한 레지스터들 또는 다른 회로를 포함할 수 있고, 따라서 상이한 브로드캐스트 영역들에 의한 브로드캐스트 마스크들의 공유를 허용한다. 대안적으로, 브로드캐스트 영역으로의 브로드캐스트 마스크의 연관은 데이터 프로세싱 시스템(10)의 상태에 기초할 수 있으며, 소프트웨어 개입없이 동적으로 변화될 수 있다.
따라서 마스크 선택 회로(132)는 H_REGION[N:1](128)을 대응 브로드캐스트 마스크 레지스터(134, 136 또는 138)를 선택하도록 사용하며 이를 현재의 브로드캐스트 마스크(140)로서 제공한다. 예를 들면, H_REGION[N:1](128)은 도 6의 브로드캐스트 영역 2(166)를 나타내며, 마스크 선택 회로(132)는 (브로드캐스트 마스크 레지스터들(134, 136 또는 138)의 임의의 하나에 저장될 수 있는) 브로드캐스트 마스크 2(160)에 대응하는 값을 갖는 브로드캐스트 마스크 레지스터를 선택할 것이다. 목적지 비교 유닛(142)은 이후 명령이 GPR(46) 내의 목적지 레지스터로 기록되도록 하는 때를 결정하고 브로드캐스트를 인에이블하는지 여부를 결정하기 위해 컨덕터들(90)을 통해 제공된 목적지 레지스터와 현재의 브로드캐스트 마스크(140)를 갖는 명령 디코드(42)와 비교한다. 비교가 결과가 브로드캐스트되어야 한다는 것을 나타낸다면, ENABLE_BROADCAST(82)가 어서트되고 3상태 버퍼(96)가 HDP[31:0](72)로 결과들을 구동하도록 인에이블한다.
도 9는 도 2의 브로드캐스트 영역 제어 유닛(120)의 일부의 일 실시예를 블럭도의 형태로 도시한다. 브로드캐스트 영역 제어 유닛(120)은 영역 1 상부 바운드 레지스터(146), 영역 1 하부 바운드 레지스터(148), 영역 2 상부 바운드 레지스터(150), 영역 2 하부 바운드 레지스터(152), 영역 Y 상부 바운드 레지스터(154), 영역 Y 하부 바운드 레지스터(156), 및 경계 비교 유닛(bounds compare unit; 144)을 포함한다. 영역 1 상부 바운드 레지스터(146), 영역 1 하부 바운드 레지스터(148), 영역 2 상부 바운드 레지스터(150), 영역 2 하부 바운드 레지스터(152), 영역 Y 상부 바운드 레지스터(154), 영역 Y 하부 바운드 레지스터(156)는 제어 유닛(40)으로부터 REGION_SPECIFIERS(122)를 수신하고, 이들 지정자들을 저장한다. 유일한 지정자들이 각 바운드 레지스터(146, 148, 150, 152, 154, 156)에 제공될 수 있다. 이러한 지정자들은 결과(83)로부터 제어 회로(40)에 의해 선택될 수 있고, 따라서 명령 실행 결과값의 함수일 수 있으며, 또는 명령 디코드(90)를 통하거나 다른 대안의 수단에 의해 제공될 수 있다. 경계들의 레지스터들(146, 148, 150, 152, 154, 156)은 출력을 경계 비교 유닛(144)으로 제공한다. 경계 비교 유닛(144)은 또한 프로그램 카운터 유닛(130)으로부터 컨덕터들(126)로 결합되고 출력으로서 H_REGION[N:1](128)을 제공한다.
동작시, 영역 1 상부 바운드 레지스터(146) 및 영역 1 하부 바운드 레지스터(148)는 브로드캐스트 영역 1(예를 들면, 도 6의 브로드캐스트 영역 1(164)과 같은)에 대응하는 개시 및 종료 명령 어드레스들을 정의한다. 그러므로, (프로그램 카운터 유닛(130) 내의) 프로그램 카운터가 개시 및 종료 명령 어드레스들 내(즉, 영역 1의 상부 또는 하부 경계들 내)에 있을 때, 경계 비교 유닛(144)은 영역 1을 나타내기 위해 H_REGION[N:1](128)을 출력한다. 유사하게, 예를 들어, 150 및 152 또는 154 및 156과 같은 상부와 하부 영역 경계들의 각 쌍은 브로드캐스트 영역을 정의하고, 프로그램 카운터가 임의의 이들 영역들 내에 있을 때 대응 영역이 H_REGION[N:1](128)로 출력된다. 도 9에 도시된 바와 같이, 브로드캐스트 영역 제어 유닛(120)은 3개의 브로드캐스트 영역 정의들을 포함하나; 영역들의 임의의 수 Y가 정의될 수 있다는 것을 주의하라. 이러한 상부 및 하부 바운드 레지스터들(146, 148, 150, 152, 154, 156)은 이러한 레지스터들을 로드하기 위해 값들 및 제어 신호들 모두를 제공하는 REGION_SPECIFIERS(122)를 통해 모두 사용자 프로그램가능해질 수 있다.
다른 실시예들에 있어서, 다른 방법들과 레지스터들은 브로드캐스트 영역들을 규정하기 위해 사용될 것이다. 예를 들면, 기준 어드레스와 마스크는 하한 및 상한보다는 오히려 각 브로드캐스트 영역을 규정하기 위해 사용될 것이다. 또한, 페이지 속성들은 보호들 또는 재배치 제어(테이블 룩 어사이드 버퍼(table look aside buffer); TLB)를 사용하는 시스템에서 브로드캐스트 영역들을 규정하기 위해 사용될 것이다. 다른 실시예들에 있어서, 브로드캐스트 영역 제어 유닛(120)은 또한 제어 회로(40) 내부에 위치될 것이다. 대안적으로, 특별 마스크가 특정 지역에 의해 선택되도록 브로드캐스트 마스크 레지스터들과 브로드캐스트 영역 제한 레지스터들은 결합될 것이다. 이런 방식에 있어서, 마스크들과 영역 정의들을 업데이트하기 위한 오버헤드는 축소될 것이다. 또한, 상기 언급된 것처럼, 다른 브로드캐스트 영역들은 같은 브로드캐스트 마스크를 공유할 것이고, 또한 브로드캐스트 마스크 레지스터들의 수를 줄일 것이다. 또한, 다른 실시예들은 브로드캐스트 영역 정보를 코프로세서(14)에 제공하는 것을 필요하지 않을 것이며, H_REGION[N:1](128)을 향한 필요를 제거한다.
본 발명의 다른 실시예에 있어서, 도 6의 브로드캐스트 영역들 1-4는 또한 코프로세서(14)가 선택적 수행모드 방침을 수행하도록 허락할 것이다. 브로드캐스트 영역들은 또한 실행 영역들로 불릴 것이다. 예를 들면, (상기 설명된 H_REGION[N:1](128)과 같은) 현재 수행 지역을 가리키는 신호를 통과함으로써, 프로세서(12)는 코프로세서(14)에 실행 환경을 제공할 수 있다. 즉, H_REGION[N:1](128)은 코프로세서(14)가 H_REGION[N:1](128)의 값에 의해 프로세서(12)의 동작 중에 동적으로 선택된 스스로 다르고 유일한 데이터에 있어서의 조작 셋업하도록 사용될 수 있다. 예를 들면, 현재의 실행 영역(즉, 프로그램 코드의 어느 섹션이 현재 실행되는가)에 의존하면서, 코프로세서(14)는 다른 모드들로 조작하기 위해 또는 H_REGION[N:1](128)에 응답하여 다른 기능들을 수행하기 위해 셋업될 수 있다. 예를 들면, 만약 H_REGION[N:1](128)이 실행 영역(2)를 가리킨다면, 코프로세서(14)는 메모리로의 전송상에 Cyclic Redundancy Check를 수행할 것이고, 만약 H_REGION[N:1](128)이 실행 영역(3)을 가리킨다면, 코프로세서(14)는 필터링 기능이나 하드웨어 해싱 기능(hardware hashing function)을 대신 수행할 것이다. 그러므로, 코프로세서(14)는 현재의 실행 영역에 응답하여 자신의 기능을 변경할 수 있다.
본 발명의 몇몇 실시예들에 있어서, 프로세서(12)와 코프로세서(14) 사이에 명령 전송의 오버헤드를 줄이는 것 뿐만 아니라, H_REGION[N:1]를 통해 현재 실행 영역 지시자 수신에 응답하여 코프로세서(14)의 변경 운영 개념은 코프로세서가 단순화되기를 허락한다. 코프로세서(14)는 HDP[31:0](72)를 통해 프로세서(12)로부터 데이터의 전송에 응답하여 처리가 일어나는 데이터 운영 방식으로 조작할 것이다. 그리고 업데이트 되고 있는 GPRs 46 속의 레지스터의 REG[4:0](68)을 통한 지시이다. 브로드캐스트 마스크들의 개념과 결합될 때, 단지 아이템들을 모는 엄밀한 데이터는 코프로세서(14)로 통과된다. 이 방법에서, REG[4:0](68)에 의해 지시된 각 값은, 프로세서(12)에 의해 수행되는 명령어의 목적 레지스터에 대응하여, 현재 수행 콘텍스트(context)의 기능으로서 코프로세서(14)에 의해 수행되는 특정 조작을 지시하는 기능을 더 수행할 것이다. 프로세서(12)에 의한 명령 실행은 GPRs 46 내의 특별한 레지스터들을 겨냥하여 레지스터 브로드캐스트 동작이 일어날 때 코프로세서(14)에 의해 선택된 기능에 간접적으로 영향을 미칠 것이다. 게다가, REG[4:0](68)의 특별 부호화가 대응하는 선택된 함수는 프로세서(12)에 의해 명시적인 부품을 바꾸는 코프로세서(14)의 오버헤드 없이, H_REGION[N:1] 변화에 의해 지시되는 실행 환경으로서 변경될 수 있다.
앞서 상세한 설명에 있어서, 본 발명은 특정 실시예들에 관하여 설명되었다. 그러나, 이 기술 분야에서 숙련된 사람은 다양한 변화 및 변경들이 하기 청구 범위에 기술된 것처럼 본 발명의 범위로부터 벗어나지 않고 만들어질 수 있음을 이해한다.
예를 들어, 여기서 개시된 회로는 단 하나의 집적 회로, 또는 하나 이상의 집적 회로 또는 하드웨어와 소프트웨어의 조합으로 실시될 수 있다. 따라서, 명세서와 도면은 제한하기 위한 것이 아니고 예시적인 것으로 간주되어야 하며, 모든 그러한 수정들은 본 발명의 범위내에 포함되는 것으로 한다.
이점들, 기타 다른 장점들 및 문제점들에 대한 해결책들을 특정 실시예들을 참조하여 지금까지 설명하였다. 그러나, 이점, 기타 다른 장점 또는 해결책을 발생시키거나 더욱 단정하게 되는 이점들, 기타 다른 장점들, 문제점들에 대한 해결책들 및 어떤 요소(들)을 어떤 또는 모든 청구항들의 임계적이로 요구되거나 또는 본질적인 특징 또는 요소로서 구속하려는 것이 아니다. 여기서 사용되는 바와 같은 용어 "포함하며" , "포함하는", 또는 그 밖의 다른 변형들은 비배제적인 포함을 카바하는 것으로, 요소들의 리스트를 포함하는 프로세스, 방법, 물품 또는 장치는 그러한 요소들만을 포함하는 것이 아니고 그러한 프로세스, 방법, 물품 또는 장치에 나열하지 않은 다른 요소들도 포함한다.

Claims (10)

  1. 복수의 레지스터들을 포함하는 레지스터 파일 및 상기 레지스터 파일에 대응하는 브로드캐스트 지정자(broadcast specifier)를 갖는 프로세서가, 상기 레지스터 파일로의 기입 트랜잭션들(write transactions)을 코프로세서 통신 버스를 통해 선택적으로 브로드캐스트하는 방법에 있어서,
    상기 레지스터 파일 내의 상기 복수의 레지스터들 중 하나를 선택하는 단계;
    상기 선택된 레지스터에 기입될 오퍼랜드(operand)를 수신하는 단계;
    상기 수신된 오퍼랜드를 상기 선택된 레지스터에 제공하는 단계; 및
    상기 선택된 레지스터에 대응하는 브로드캐스트 지시자에 기초하여 상기 선택된 레지스터에 기입될 상기 오퍼랜드를 상기 코프로세서 통신 버스를 통해 코프로세서에 선택적으로 제공하는 단계를 포함하고,
    상기 브로드캐스트 지정자는 복수의 브로드캐스트 지시자(broadcast indicator)들을 포함하며,
    상기 복수의 브로드캐스트 지시자들 내의 각각의 브로드캐스트 지시자들은 상기 복수의 레지스터들 중 하나에 대응하고 상기 대응하는 레지스터에 대한 기입이 상기 코프로세서 통신 버스를 통해 브로드캐스트 되는지의 여부를 지시하는, 브로드캐스트 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 브로드캐스트 지정자는 상기 프로세서내의 복수의 브로드캐스트 지정자들 중 하나이며, 상기 복수의 브로드캐스트 지정자들 각각은 상기 프로세서의 적어도 하나의 브로드캐스트 영역에 대응하고;
    현재 기입 트랜잭션의 현재 브로드캐스트 영역에 대응하는 영역 지시자를 상기 코프로세서 통신 버스를 통해 선택적으로 제공하는 단계를 더 포함하는, 브로드캐스트 방법.
  4. 삭제
  5. 삭제
  6. 복수의 레지스터들을 포함하는 레지스터 파일을 갖는 프로세서가 기입 트랜잭션들을 코프로세서 통신 버스를 통해 상기 레지스터 파일로 선택적으로 브로드캐스트하는 방법에 있어서,
    상기 레지스터 파일 내의 상기 복수의 레지스터들 중 하나를 선택하는 단계;
    상기 선택된 레지스터에 기입될 오퍼랜드를 수신하는 단계;
    상기 수신된 오퍼랜드를 상기 선택된 레지스터에 제공하는 단계; 및
    상기 프로세서의 현재 실행 영역에 기초하여, 상기 선택된 레지스터에 기입될 상기 오퍼랜드를 상기 코프로세서 통신 버스를 통해 코프로세서에 선택적으로 제공하는 단계를 포함하는, 브로드캐스트 방법.
  7. 복수의 레지스터들;
    상기 복수의 레지스터들 중 하나에 대해 기입 동작을 수행하기 위한 회로;
    상기 복수의 레지스터들 중 상기 하나에 대한 상기 기입 동작을 위한 오퍼랜드를 전달하기 위한 컨덕터들;
    한 세트의 브로드캐스트 지정자들로서, 상기 한 세트의 브로드캐스트 지정자들 내의 각 브로드캐스트 지정자는 복수의 브로드캐스트 지시자들을 포함하고, 각각의 브로드 캐스트 지시자는 상기 복수의 레지스터들 중 하나의 레지스터에 대응하고 상기 대응하는 레지스터로의 기입이 브로드캐스팅되는지의 여부를 지시하는, 상기 한 세트의 브로드캐스트 지정자들;
    상기 복수의 레지스터들 중 하나의 레지스터와 상기 브로드캐스트 지정자들 중 선택된 하나에서 대응하는 브로드캐스트 지시자를 비교하고 브로드캐스트 인에이블 신호를 제공하기 위한 비교 회로; 및
    상기 비교 회로에 결합되고, 코프로세서 통신 버스와 통신하기 위한 포트로서, 상기 브로드캐스트 인에이블 신호에 응답하여 상기 오퍼랜드를 코프로세서에 선택적으로 제공하기 위한 적어도 하나의 코프로세서 통신 버스 신호를 전달하는, 상기 포트를 포함하는, 프로세서.
  8. 삭제
  9. 삭제
  10. 복수의 레지스터들;
    상기 복수의 레지스터들 중 하나에 대한 기입 동작을 수행하기 위한 회로;
    상기 복수의 레지스터들 중 상기 하나에 상기 기입 동작을 위한 오퍼랜드를 전달하기 위한 컨덕터들;
    어드레스 위치를 지시하기 위한 프로그램 카운터 유닛;
    상기 프로그램 카운터 유닛에 결합되고, 상기 프로그램 카운터 유닛으로부터의 상기 지시된 어드레스 위치가 한 세트의 실행 영역들 중 하나 내에 있을 때를 지시하기 위한 실행 영역 제어 유닛; 및
    상기 실행 영역 제어 유닛에 결합되고, 코프로세서 통신 버스와 통신하기 위한 포트로서, 상기 지시된 어드레스 위치가 상기 세트의 실행 영역들 중 하나 내에 있을 때 상기 세트의 실행 영역들로부터 현재의 실행 영역을 지시하는 적어도 하나의 코프로세서 통신 버스 신호를 전달하는, 상기 포트를 포함하는, 프로세서.
KR1020047007338A 2001-11-13 2002-10-30 프로세서를 코프로세서에 인터페이싱하기 위한 방법 및 장치 KR100981033B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/054,577 2001-11-13
US10/054,577 US7228401B2 (en) 2001-11-13 2001-11-13 Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor

Publications (2)

Publication Number Publication Date
KR20050058240A KR20050058240A (ko) 2005-06-16
KR100981033B1 true KR100981033B1 (ko) 2010-09-10

Family

ID=21992061

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047007338A KR100981033B1 (ko) 2001-11-13 2002-10-30 프로세서를 코프로세서에 인터페이싱하기 위한 방법 및 장치

Country Status (7)

Country Link
US (1) US7228401B2 (ko)
EP (1) EP1446717A1 (ko)
JP (1) JP4098241B2 (ko)
KR (1) KR100981033B1 (ko)
CN (1) CN1290003C (ko)
TW (1) TWI313822B (ko)
WO (1) WO2003042819A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
WO2004015563A1 (en) * 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US20050131561A1 (en) * 2003-12-16 2005-06-16 Dell Products L.P. Information handling system including docking station with digital audio capability
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
US7490223B2 (en) * 2005-10-31 2009-02-10 Sun Microsystems, Inc. Dynamic resource allocation among master processors that require service from a coprocessor
US8914618B2 (en) 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7921195B2 (en) * 2008-06-09 2011-04-05 International Business Machines Corporation Optimizing service processing based on business information, operational intelligence, and self-learning
CN102207919A (zh) 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
US20130326192A1 (en) * 2011-12-22 2013-12-05 Elmoustapha Ould-Ahmed-Vall Broadcast operation on mask register
WO2013095618A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
US9336000B2 (en) * 2011-12-23 2016-05-10 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
US9864602B2 (en) 2011-12-30 2018-01-09 Intel Corporation Packed rotate processors, methods, systems, and instructions
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10346195B2 (en) * 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9785444B2 (en) 2013-08-16 2017-10-10 Analog Devices Global Hardware accelerator configuration by a translation of configuration data
CN104298639B (zh) * 2014-09-23 2017-03-15 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口
US10409601B2 (en) * 2017-12-29 2019-09-10 Intel Corporation Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline
US10719329B2 (en) * 2018-06-28 2020-07-21 Arm Limited Apparatus and method for using predicted result values
US11487556B2 (en) * 2020-12-15 2022-11-01 International Business Machines Corporation Command-type filtering based on per-command filtering indicator

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US5283881A (en) * 1991-01-22 1994-02-01 Westinghouse Electric Corp. Microcoprocessor, memory management unit interface to support one or more coprocessors
EP0519348B1 (en) * 1991-06-19 1999-07-28 Hewlett-Packard Company Co-processor supporting architecture adapted to a processor which does not natively support co-processing
US6047122A (en) * 1992-05-07 2000-04-04 Tm Patents, L.P. System for method for performing a context switch operation in a massively parallel computer system
US6505290B1 (en) 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US5983338A (en) * 1997-09-05 1999-11-09 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor for communicating register write information
US5923893A (en) * 1997-09-05 1999-07-13 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6223277B1 (en) * 1997-11-21 2001-04-24 Texas Instruments Incorporated Data processing circuit with packed data structure capability
US6138185A (en) * 1998-10-29 2000-10-24 Mcdata Corporation High performance crossbar switch

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Gates, A.Q. et al., "Dynamics: an automated and independent software-fault detection approach", High-assuarance system engineering, 1999. Proceedings.

Also Published As

Publication number Publication date
CN1290003C (zh) 2006-12-13
EP1446717A1 (en) 2004-08-18
US7228401B2 (en) 2007-06-05
US20030093648A1 (en) 2003-05-15
JP2005528669A (ja) 2005-09-22
WO2003042819A1 (en) 2003-05-22
TWI313822B (en) 2009-08-21
JP4098241B2 (ja) 2008-06-11
KR20050058240A (ko) 2005-06-16
TW200300230A (en) 2003-05-16
CN1610880A (zh) 2005-04-27

Similar Documents

Publication Publication Date Title
KR100981033B1 (ko) 프로세서를 코프로세서에 인터페이싱하기 위한 방법 및 장치
EP0838762B1 (en) A data processor having a cache memory
US5748950A (en) Method and apparatus for providing an optimized compare-and-branch instruction
US7991978B2 (en) Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor
US20070186077A1 (en) System and Method for Executing Instructions Utilizing a Preferred Slot Alignment Mechanism
US5481734A (en) Data processor having 2n bits width data bus for context switching function
JP2741594B2 (ja) I/oプロセツサ用の実行装置
EP0782071A2 (en) Data processor
EP1282035A1 (en) Method and apparatus for interfacing a processor to a coprocessor
JPH09311786A (ja) データ処理装置
US4773041A (en) System for executing a sequence of operation codes with some codes being executed out of order in a pipeline parallel processor
KR100465388B1 (ko) Risc 구조의 8비트 마이크로 제어기
EP1680735B1 (en) Apparatus and method that accomodate multiple instruction sets and multiple decode modes
US5410721A (en) System and method for incrementing a program counter
US5666508A (en) Four state two bit recoded alignment fault state circuit for microprocessor address misalignment fault generation
US8583897B2 (en) Register file with circuitry for setting register entries to a predetermined value
US5596717A (en) Four state token passing alignment fault state circuit for microprocessor address misalignment fault generation
US6904515B1 (en) Multi-instruction set flag preservation apparatus and method
KR20050119125A (ko) 프로세서
US11775310B2 (en) Data processing system having distrubuted registers
JP3128843B2 (ja) 情報処理装置
JP3102399B2 (ja) データ処理装置及び方法
JPH06332700A (ja) 情報処理装置
JPH01243123A (ja) 情報処理装置
JPH0926945A (ja) 情報処理装置

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130823

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140902

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 10