KR20050010508A - 다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법 - Google Patents

다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법 Download PDF

Info

Publication number
KR20050010508A
KR20050010508A KR10-2004-7019511A KR20047019511A KR20050010508A KR 20050010508 A KR20050010508 A KR 20050010508A KR 20047019511 A KR20047019511 A KR 20047019511A KR 20050010508 A KR20050010508 A KR 20050010508A
Authority
KR
South Korea
Prior art keywords
context
register
contexts
data processing
processing system
Prior art date
Application number
KR10-2004-7019511A
Other languages
English (en)
Other versions
KR100989215B1 (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 KR20050010508A publication Critical patent/KR20050010508A/ko
Application granted granted Critical
Publication of KR100989215B1 publication Critical patent/KR100989215B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F9/30134Register stacks; shift registers

Landscapes

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

Abstract

다중 레지스터 컨텍스트들(34, 35, 36)을 갖는 데이터 프로세싱 시스템(10)이 기술된다. 본 발명의 일 실시예는 다중 레지스터 컨텍스트들의 각각에 대한 사용자 프로그램가능한 컨텍스트 제어 레지스터(140)를 사용하여 대체 레지스터 컨텍스트의 일부를 현재의 레지스터 컨텍스트로 매핑할 수 있게 한다. 컨텍스트 제어 레지스터를 사용하여 다중 레지스터 컨텍스트들 사이에서 공통 스택 포인터를 공유하기 위해 제공할 수 있다. 따라서, 현재 레지스터 컨텍스트에서 동작할 때, 컨텍스트 제어 레지스터는 현재 레지스터 컨텍스트의 대응하는 일부를 액세스하는 대신에 대체 레지스터 컨텍스트의 일부를 액세스하도록 사용될 수 있다.

Description

다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템 및 이를 위한 방법{DATA PROCESSING SYSTEM HAVING MULTIPLE REGISTER CONTEXTS AND METHOD THEREFOR}
마이크로프로세서와 같은 데이터 프로세싱 시스템에 있어서, 동작의 실행 및 처리를 제어하기 위해 프로세서가 이용된다. 프로세서는 정상 동작 및 예외 프로세싱 동안에 프로세서가 사용하는 레지스터 컨텍스트를 저장하는 레지스터들을 포함한다. 인터럽트 또는 프로세스 전환이 발생하는 경우에, 인터럽트 프로세싱 프로그램 또는 새로운 프로세스가 동일한 레지스터를 사용하게 되고 그 안의 값들 중 일부를 변경할 수 있기 때문에 레지스터 컨텍스트 정보가 손상될 수 있다.
상술한 문제점에 대한 한가지 해결책은, 인터럽트 또는 새로운 프로세스의 처리를 시작하기 이전에 레지스터 컨텍스트의 현재 값들을 메모리에 저장하고, 인터럽트 프로세싱이 완료되거나 또는 현재 프로세스로 돌아올 때 메모리로부터 이 저장된 레지스터 컨텍스트 값들을 판독하여 레지스터로 되돌리는 것이다. 그러나, 레지스터 컨텍스트를 저장하고 새로운 컨텍스트를 로딩하는 오버헤드는 실시간 또는 고성능의 환경에서 바람직하지 못하다. 따라서, 유연성있고 오버헤드를 감소시키는 데이터 프로세싱 시스템에서의 레지스터 컨텍스트 선택 설계에 대한 필요성이 존재한다.
본 발명은 일반적으로 데이터 프로세싱 시스템에 관한 것이며, 특히 다중 레지스터 컨텍스트들을 갖는 데이터 프로세싱 시스템에 관한 것이다.
본 발명은 예시적으로 설명되는 것이고 첨부되는 도면들에 의해 한정되는 것은 아니며, 도면들에서 유사한 참조 번호들은 유사한 구성요소들을 나타낸다.
도 1은 본 발명의 일 실시예에 따른 데이터 프로세싱 시스템을 블록도의 형태로 도시한 도면;
도 2는 본 발명의 일 실시예에 따른 프로세서를 블록도의 형태로 도시한 도면;
도 3은 본 발명의 일 실시예에 따른 레지스터 컨텍스트를 도시한 도면; 및
도 4 및 도 5는 본 발명의 다양한 실시예에 따라 레지스터 컨텍스트들 내의 예시의 매핑을 도시한 도면.
당업자들은 도면 중의 구성요소들은 간략화 및 명확성을 위해 도시된 것이며 반드시 실제크기에 맞게 도시될 필요가 있지 않음을 알 것이다. 예를 들어, 도면 중의 구성요소들의 일부의 크기는 다른 구성요소들에 비해 과장되게 도시되어 본 발명의 실시예에 대한 이해를 향상시키는 것을 도울 수 있다.
여기에 사용되는 용어 "버스"는 데이터, 어드레스, 제어, 또는 상태와 같은 하나 이상의 다양한 형태의 정보를 전송하기 위해 사용될 수 있는 복수의 신호들또는 도체들을 지칭하는데 사용된다. 용어 "어써트(assert)" 및 "취소(negate)" (또는 "디어써트(deassert)")는 신호, 상태 비트, 또는 유사한 장치를 그의 논리적으로 참 또는 논리적으로 거짓인 상태로 각각 표현하는 것을 지칭하는 경우에 사용된다. 논리적으로 참인 상태가 논리 레벨 1이면, 논리적으로 거짓인 상태는 논리 레벨 0이다. 논리적으로 참인 상태가 논리 레벨 0이면, 논리적으로 거짓인 상태는 논리 레벨 1이다. 숫자 바로 앞의 기호 "$"는 그 숫자가 16진법으로 또는 기수 16 형태로 표현되어짐을 나타낸다. 숫자 바로 앞의 기호 "%"는 그 숫자가 2진법으로 또는 기수 2 형태로 표현되어짐을 나타낸다.
도 1은 데이터 버스(4) 및 어드레스 버스(6)를 통해 외부 디바이스(2)에 접속되어 있는 데이터 프로세싱 시스템(10)을 도시한다. 데이터 프로세싱 시스템(10)은 프로세서(12)를 포함한다. 일 실시예에서, 데이터 프로세싱 시스템(10) 및 외부 디바이스(2)는 각각 개별적인 집적 회로들로서 구현된다. 대안의 실시예에서는, 데이터 프로세싱 시스템(10) 및 외부 디바이스(2)는 단일 집적 회로 상에 구현될 수 있다. 데이터 프로세싱 시스템(10) 내에서, 프로세서(12)는 내부 데이터 버스(13) 및 내부 어드레스 버스(14)에 의해 시스템 집적 회로(22)에 연결되어 있다.
본 발명의 일부 실시예에서는, 데이터 프로세싱 시스템(10)이 단일 집적 회로 상에 형성되어 있음을 유의한다. 또한, 일부 실시예에서는, 데이터 프로세싱 시스템(10)은 단일 칩 마이크로컨트롤러, 마이크로프로세서, 디지탈 신호 프로세서, 또는 임의의 그외의 유형의 데이터 프로세싱 시스템일 수 있다. 또한, 데이터 프로세싱 시스템(10)은 임의의 유형의 전기 회로를 사용하여 구현될 수 있다. 외부 디바이스(2)는 메모리 또는 임의의 유형의 주변 디바이스를 포함하는 임의의 유형의 전기 회로일 수 있다. 대안의 실시예들은 더 많거나, 더 적거나, 또는 상이한 외부 집적 회로들을 포함할 수 있다. 또한, 임의의 수의 비트들을 사용하여 버스들(4, 6)이 구현될 수 있다.
동작 시에, 시스템 집적(22)이 사용되어 프로세서(12)와 외부 디바이스(2) 사이의 통신을 가능하게 한다. 즉, 프로세서(12)는 데이터 및 어드레스 정보를 내부 버스들(14, 13)을 통해 시스템 집적(22)으로 전달하며, 이것은 그 다음에 그 데이터 및 어드레스 정보를 버스들(4, 6)을 통해 적합한 방법 및 포맷으로 외부 디바이스(2)에 전달한다. 프로세서(12)는 도 2와 관련하여 이하에서 더욱 상세히 설명될 것이다.
도 2는 본 발명의 일 실시예에 따른 프로세서(12)의 일부를 예시한다. 프로세서(12)는 산술 논리 연산장치(ALU)(24), 어드레스 발생기(26), 명령어 파이프라인(28), 명령어 디코드 회로(30), 레지스터 파일 세트(32), 및 벡터 오프셋 발생기(39)를 포함한다. 레지스터 파일(32)은 컨텍스트 0(34), 컨텍스트 1(35), 컨텍스트 N(36)과 같은 다중 레지스터 컨텍스트들을 포함한다. 따라서, 레지스터 파일(32)은 N+1개 레지스터 컨텍스트들을 포함하며, 비록 도 2에는 3개만이 도시되어 있지만, 프로세서(12)는 하드웨어가 지원할 수 있는 레지스터 컨텍스트들의 수에 따라 임의의 수의 레지스터 컨텍스트들을 포함할 수 있다. 레지스터 파일(32)은 또한 제어 레지스터 파일(32)을 포함한다. 내부 어드레스 버스(14)는 어드레스 발생기(26)에 연결되어 있으며, 어드레스 발생기(26)는 레지스터 소스 버스(40)를 통해 레지스터 파일(32)에 연결되어 있고, 내부 데이터 버스(4)에도 연결되어 있다. 벡터 오프셋 발생기(39)는 벡터 오프셋 버스(27)를 통해 어드레스 발생기(26)에 연결되어 있다. 내부 데이터 버스(4)는 명령어 파이프라인(28), ALU(24), 및 레지스터 파일(32)에 연결되어 있다. 명령어 디코드 회로(30)는 명령어 버스(29)를 통해 명령어 파이프라인(28)에 양방향으로 연결되어 있다. 레지스터 파일(32)은 파일링된(filed) 정보 버스(42)를 통해 ALU(24)에 연결되어 있다.
도 3은 본 발명의 일 실시예에 따른 레지스터 컨텍스트(51)를 도시한다. 도 3의 레지스터 컨텍스트(51)는 도 2의 컨텍스트들 0 내지 N 중의 임의 하나를 나타낼 수 있다. 도 3의 실시예에서, 레지스터 컨텍스트(51)는 32개의 범용 레지스터(GPR)(50), 링크 레지스터(54), 카운트 레지스터(56), 조건 레지스터(58), 정수 예외 레지스터(60), 기계 상태 레지스터(62), 및 컨텍스트 제어 레지스터(64)를 포함한다. 링크 레지스터(51)는 호출하고 서브루틴으로부터 복귀할 때 서브루틴 링크 정보를 보유하는데 사용된다. 카운트 레지스터(56)는 명령어들의 카운트된 루프들을 처리하기 위한 카운트 정보를 보유하는데 사용된다. 조건 레지스터(58)는 조건 코드 계산의 결과를 보유하는데 사용된다. 정수 예외 레지스터(60)는 다양한 예외 상태들을 제공하는데 사용된다. 기계 상태 레지스터(62)는 프로세서(12) 내에 다양한 기능들의 상태를 제어하고 제공하는데 사용된다. 컨텍스트 제어 레지스터(64)는, 이하에서 더욱 상세히 설명될 것이며, 본 발명의 일 실시예에 따라 컨텍스트 전환을 제공하기 위해 사용된다. 또한 GPR(50) 중의 하나가 현재 스택 포인터를 저장하기 위해 남겨진 스택 포인터 레지스터(52)임을 유의한다.
따라서, 레지스터 컨텍스트는 상술한 레지스터들(컨텍스트(51)의 레지스터들)의 콘텐츠를 조회한다. 대안의 실시예들은 레지스터 컨텍스트를 레지스터 컨텍스트(51)의 동일한 레지스터들의 전체 또는 일부를 갖는 것으로서 정의할 수 있거나, 또는 레지스터 컨텍스트(51)의 것들과는 상이한 세트의 레지스터들을 포함할 수 있다. 따라서, 여기에 사용된 것처럼, 레지스터 컨텍스트는 임의의 개수 및 임의의 유형의 레지스터들을 갖도록 정의될 수 있다. 통상적으로, 레지스터 컨텍스트는 프로그래머의 프로세서용 레지스터 모델의 전체 또는 일부를 형성하는 레지스터 자원들을 포함한다. 정상 동작 중에 또는 파워 업(power up) 또는 리셋 시에, 데이터 프로세싱 시스템(10)은 컨텍스트 0(34)을 사용하는 것을 디폴트로 할 수 있다. (대안의 실시예에서는, 정상 동작은 다른 컨텍스트로 디폴트될 수 있다.) 그러나, 인터럽트 또는 프로세스 전환이 발생하는 경우에, 컨텍스트 0(34)의 값들을 손상시키지 않도록 하기 위해서, 데이터 프로세싱 시스템(10)은 인터럽트를 처리하거나 또는 새로운 프로세스 또는 쓰레드(thread)를 실행시키기 위해 새로운 컨텍스트(컨텍스트 1부터 N까지 중에서)를 선택한다. 따라서, 인터럽트 핸들링 및 프로세스 전환(예를 들어, 멀티쓰레딩)은 데이터 프로세싱 시스템(10) 내에서 레지스터 컨텍스트 전환에 대한 필요성을 야기시킬 수 있다. 또한, 일부 실시예에서는, 레지스터 컨텍스트 내의 레지스터들의 일부를 다른 레지스터 컨텍스트와 공유하는 것이 바람직할 수 있다. 따라서, 이하에 기술하는 바와 같이, 레지스터 컨텍스트의 부분들은 다른 레지스터 컨텍스트로 매핑되어 컨텍스트 전환 중에 오버헤드를 감소시키고 속도를 증가시키는 것을 도울 수 있다.
데이터 프로세싱 시스템(10)에서, 예외 및 인터럽트는 디코드 단계 또는 명령어 파이프라인(28)의 실행 단계에서 인식되어진다. 따라서, 명령어가 명령어 디코드 회로(30)에 제공되고 디코드되는 경우에, 정상적인 명령어 프로세싱 대신에 인터럽트를 인식하고 처리할 수 있다. 여기에 기술된 일 실시예에서, 소정의 인터럽트가 임의의 그외의 인터럽트들에 대해서 우선순위를 갖는지의 여부를 결정하는 다중 인터럽트 레벨들이 있다. 그러므로, 높은 우선순위를 갖는 인터럽트는 낮은 우선순위를 갖는 인터럽트보다 더욱 빨리 처리될 수 있으며, 이 낮은 우선순위를 갖는 인터럽트는 처리를 대기하여야만 한다. 따라서 각각의 인터럽트 또는 각 유형의 인터럽트 또는 동일한 우선순위를 갖는 인터럽트는 원한다면 동일한 레지스터 컨텍스트를 공유할 수 있다.
인터럽트를 수신할 때에, 데이터 프로세싱 시스템(10)은 예외 프로세싱 시퀀스를 실행하기 시작한다. 이 시퀀스 동안에, 벡터 오프셋 발생기(39)는 벡터 오프셋 버스(27)를 통해 어드레스 발생기(26)에 벡터 오프셋 값을 제공한다. 어드레스 발생기(26)는 벡터 오프셋 값을 사용하여, 인터럽트를 처리하기 위해 실행을 시작하는 명령어 어드레스를 형성한다. 일 실시예에서, 벡터 오프셋 값에 추가하여, 벡터 오프셋 발생기는 인터럽트 프로세싱에서도 사용되어질 레지스터 컨텍스트를 나타내는 컨텍스트 선택기를 제공한다. 일 실시예에서, 컨텍스트 선택기는 벡터 오프셋 값의 부분이거나, 또는 벡터 오프셋 발생기(39)에 의해 제공되는 별도의 값일 수 있다. 또한, 레지스터 파일(32)에 컨텍스트 선택기가 직접 제공될 수 있다. 대안의 실시예들에서, 컨텍스트 선택기는 메모리(도시되지 않음)로부터 판독된 값일 수 있거나 또는 명령어를 통해 수신될 수 있다. 레지스터 파일(32)에 8개의 레지스터 컨텍스트들을 갖는 데이터 프로세싱 시스템(10)의 경우에, 컨텍스트 선택기는 레지스터 컨텍스트들 중 하나를 식별하는데 사용된 3-비트 값일 수 있다.
또한, 데이터 프로세싱 시스템(10)은 각 프로세스가 상이한 레지스터 컨텍스트에서 동작하며, 프로세서(12)가 한 프로세스에서 다른 프로세스로 전환할 수 있는 프로세스 전환을 행할 수 있다. 예를 들면, 멀티쓰레딩 애플리케이션에 있어서, 프로세서(12)는 다양한 프로세싱 쓰레드들 사이에서 계속적으로 전환할 수 있으며, 상이한 프로세싱 쓰레드(또는 프로세싱 쓰레드들의 그룹들)는 상이한 레지스터 컨텍스트를 사용한다. 프로세스 전환의 경우에, 데이터 프로세싱 시스템(10)으로의 프로세스 전환을 나타내기 위해 인터럽트를 사용할 수 있다(여기서 인터럽트 핸들링은 전환 프로세스를 포함함). 대안적으로, 그외의 방법들을 사용하여 어드레스 발생기(26)에게 프로세스 전환이 필요함을 나타내도록 하여 어드레스 발생기(26)가 새로운 프로세스를 위한 시작 어드레스를 생성하도록 할 수 있다. 또한, 프로세스 전환 시에, 컨텍스트 선택기가 또한 제공되어 새로운 프로세스를 위해 어느 레지스터 컨텍스트가 필요한지를 나타낼 수 있다. 상술한 바와 같이, 컨텍스트 선택기는 다양한 서로 다른 방법들(즉, 벡터 오프셋 발생기(39)로부터, 메모리로부터, 사용자 명령어로부터 등)로 제공될 수 있으며, 레지스터 파일(32)로 직접적으로 또는 간접적으로(예를 들어, 어드레스 발생기(26)를 통해) 제공되어 올바른 레지스터 컨텍스트를 선택하도록 할 수 있다.
일단 레지스터 컨텍스트가 수립되면, 프로세서(12)에 의해 실행된 명령어들은 현재 수립된 컨텍스트에 대응하는 적절한 범용 레지스터들(GPRs(50)) 또는 특수 목적의 레지스터들(예를 들어, LR(54), CTR(56), CR(58), XER(60), MSR(62), 또는 CTXCR(64))을 참조할 것이다. 그외의 컨텍스트들 내의 레지스터들은 영향을 받지 않을 것이며(이하에 기술되는 것처럼 매핑이 수립되지 않는 한), 따라서 현재 수립된 컨텍스트에 대한 명령어들의 실행 이전에 대체 컨텍스트를 메모리로 저장하거나 복원하는 것이 수행될 필요는 없다. 이것은 오버헤드에 있어서의 절약을 제공해준다.
도 4 및 도 5는 데이터 프로세싱 시스템(10) 내에서 사용할 수 있는 레지스터 컨텍스트들 내의 예시의 매핑을 도시한다. 도 4는 3개의 레지스터 컨텍스트들: 컨텍스트 0(70), 컨텍스트 1(72), 및 컨텍스트 2(74)를 도시한다. 이 레지스터 컨텍스트들은 도 2의 컨텍스트 0 내지 N 내의 컨텍스트들 중 3개를 나타낼 수 있다. 도 4의 예에서, 컨텍스트 0(70)은 데이터 프로세싱 시스템(10)의 정상 동작에 대응하고, 컨텍스트 1(72)은 중요한 인터럽트(최고의 우선순위)에 대응하며, 컨텍스트 2는 외부 인터럽트(보다 낮은 우선순위)에 대응한다고 가정하자. 상술한 바와 같이, 일부 경우에, 다중 레지스터 컨텍스트들이 레지스터들의 일부를 "공유"하는 것이 바람직하다. 따라서, 도 4의 예에서, 화살표(82)로 표시한 바와 같이, 레지스터 컨텍스트 2(74)의 스택 포인터 레지스터(80)가 레지스터 컨텍스트 1(72)의 스택 포인터(78)로 매핑되어, 레지스터 컨텍스트 1(72) 및 레지스터 컨텍스트 2(74)가 동일한 스택 포인터를 공유하여 동일한 스택 포인터값이 이 두개의 레지스터 컨텍스트들에 사용될 수 있음을 나타낸다. 이러한 매핑은 오버헤드를 감소시키고 스택포인터의 일관성(coherency)을 유지하는 것을 돕는다. 따라서, 외부 인터럽트의 처리 시에, 컨텍스트 2(74)는 데이터 프로세싱 시스템(10)에 의해 선택된다. 그러나, 스택 포인터 레지스터(80)는 스택 포인터 레지스터(78)로 매핑되기 때문에, 스택 포인터를 액세스하기 위해 레지스터 컨텍스트 2(74)에서의 동작 중에 레지스터 컨텍스트 1(72)의 스택 포인터 레지스터(78)를 액세스한다. 바꾸어 말하면, 레지스터 컨텍스트 2(74)를 선택하는 현재 컨텍스트 값으로 동작하면서, 스택 포인터 레지스터(80)를 액세스하는 것을 시도하는 그외의 동작들 및 명령어들은 레지스터 컨텍스트 1(72) 내의 스택 포인터 레지스터(78)를 액세스하도록 방향을 바꾼다. 이것에 의해 별도의 스택 포인터 레지스터들(80, 78)을 동기화하는 오버헤드 없이 단일의 일관성있는 스택과 스택 포인터값을 컨텍스트 1과 컨텍스트 2 사이에서 공유할 수 있게 한다.
스택 포인터 레지스터(76)(컨텍스트 0(70)의) 및 스택 포인터 레지스터(78)(컨텍스트 1(72)의)는 매핑되지 않으며, 따라서 이 레지스터 컨텍스트에서 동작하는 경우에는, 스택 포인터를 액세스할 때 그외의 레지스터 컨텍스트를 액세스할 필요는 없다. 레지스터 컨텍스트들(70, 72, 74)의 각각 내의 컨텍스트 제어 레지스터들(77, 79, 75)는 각각 대응하는 레지스터 컨텍스트의 스택 포인터가 매핑되는지의 여부를 나타내며, 나타내고 있다면, 그것이 어느 다른 레지스터 컨텍스트로 매핑되는지를 나타낸다. 컨텍스트 제어 레지스터에 대한 상세한 사항은 도 6에 관하여 이하에서 더욱 상세히 설명될 것이다.
도 5는 다른 예에 따른 3개의 레지스터 컨텍스트들을 도시한다: 레지스터 컨텍스트 1(90), 레지스터 컨텍스트 2(92), 및 레지스터 컨텍스트 3(94). 도 4에서처럼, 도 5의 레지스터 컨텍스트는 도 2의 레지스터 컨텍스트 0 내지 N의 레지스터 컨텍스트들 중 3개를 나타낼 수 있다. 도 5의 예에서, 레지스터 컨텍스트 1(90)은 프로세스 A에 대응하며, 레지스터 컨텍스트 2(92)는 프로세스 B에 대응하며, 레지스터 컨텍스트 3(94)은 프로세스 C에 대응한다. 따라서, 데이터 프로세싱 시스템(10)이 프로세스 A를 실행할 때, 데이터 프로세싱 시스템(10)은 레지스터 컨텍스트 1(90)에서 동작한다. 프로세스 전환 시에는(예를 들어 프로세스 A로부터 프로세스 B로), 컨텍스트 선택기는 프로세스 B를 실행할 때 사용하기 위한 레지스터 컨텍스트 2(92)를 선택한다. 도 4와 관련하여 전술한 바와 같이, 스택 포인터 레지스터들의 각각은 상이한 레지스터 컨텍스트로 매칭되는 기능을 갖는다. 예를 들면, 도 5에 있어서, 레지스터 컨텍스트 1(90)의 스택 포인터 레지스터(96)는 화살표(124)로 표시한 것처럼 레지스터 컨텍스트 2(92)의 스택 포인터 레지스터(98)로 매핑된다. 따라서, 프로세스 A를 실행할 때(레지스터 컨텍스트 1(90)을 사용함), 스택 포인터를 액세스하는 것은 실제적으로 상이한 레지스터 컨텍스트(즉, 레지스터 컨텍스트 2(92)) 내의 스택 포인터 레지스터(98)를 액세스하는 결과를 발생시킨다. 그럼에도 불구하고 레지스터 컨텍스트 3(94)의 스택 포인터 레지스터(100)는 매핑되지 않음을 유의한다. 또한, 일 실시예에 있어서, 계층화된(layered) 매핑을 갖는 것이 가능하다. 예를 들면, 스택 포인터 레지스터(96)가 스택 포인터 레지스터(98)로 매핑되는 것과 꼭 마찬가지로, 스택 포인터 레지스터(98)는 예를 들어 스택 포인터 레지스터(100)로도 매핑될 수 있다. 또한, 특정 스택 포인터 레지스터는그것으로 매핑되는 다중 스택 포인터 레지스터들을 가질 수 있다. 예를 들면, 양측 스택 포인터 레지스터들(100 및 96)은 스택 포인터 레지스터(98)로 매핑될 수 있다. 그외의 매핑들 또한 가능하다.
도 5의 레지스터 컨텍스트는 또한 레지스터들의 그룹화를 포함한다. 예를 들면, 범용 레지스터들은 4개 레지스터들의 그룹으로 그룹화된다. 레지스터 컨텍스트 1(90)에서, GPR 4-7은 레지스터 그룹(102)으로 함께 그룹화되고, GPR 8-11은 레지스터 그룹(104)으로 함께 그룹화되며, GPR 28-31은 레지스터 그룹(106)으로 그룹화된다. 따라서, 도 5의 예에서의 레지스터 컨텍스트 1(90)은 각각 4개 레지스터들의 3개의 그룹들(그룹들(102, 104, 106))을 포함하며, 이들 그룹의 각각은 상이한 레지스터 컨텍스트로 매핑(그룹으로서)될 수 있다. 대안의 실시예에 있어서, 임의의 개수 및 유형의 레지스터들을 그룹화할 수 있다. 대안적으로, 각각의 개별적인 레지스터는 원하는 입도(granularity)에 따라 별도의 그룹으로 고려될 수 있다. 마찬가지로, 레지스터 컨텍스트 2(92)는 4개 레지스터들의 3개 그룹을 포함한다: GPR 4-7을 갖는 그룹(114), GPR 8-11을 갖는 그룹(116), 및 GPR 28-31을 갖는 그룹(118). 또한, 레지스터 컨텍스트 3(94)은 4개 레지스터들의 3개 그룹을 포함한다: GPR 4-7을 갖는 그룹(108), GPR 8-11을 갖는 그룹(110), 및 GPR 28-31을 갖는 그룹(112). 이러한 그룹화는 레지스터들의 그룹들이 상이한 레지스터 컨텍스트들 중에 매핑될 수 있도록 한다.
예를 들면, 화살표(120)로 도시된 바와 같이, 레지스터 컨텍스트 2(92)의 그룹(118)은 레지스터 컨텍스트 1(90)의 그룹(106)으로 매핑된다. 화살표(126)로 도시된 바와 같이, 레지스터 컨텍스트 3(94)의 그룹(112)은 또한 레지스터 컨텍스트 1(90)의 그룹(106)으로 매핑된다. 즉, 그룹(106)의 레지스터들은 총 3개의 레지스터 컨텍스트들, 즉 레지스터 컨텍스트 1(90), 레지스터 컨텍스트 2(92), 및 레지스터 컨텍스트 3(94)에 의해 공유된다. 따라서, 프로세스 B 또는 프로세스 C 중 하나를 실행할 때, 현재 레지스터 컨텍스트(레지스터 컨텍스트 2(92) 또는 레지스터 컨텍스트 3(94) 각각)의 GPR 28-31을 액세스하는 것에 의해 실제적으로 레지스터 컨텍스트 1(90)의 GPR 28-31을 액세스하는 결과를 발생시킨다. 또한, 도 5에 도시되어, 화살표(122)로 도시된 것처럼, 레지스터 컨텍스트 1(90)의 그룹(104)은 레지스터 컨텍스트 2(92)의 그룹(116)으로 매핑된다. 즉, 그룹(116)의 레지스터들은 양측 레지스터 컨텍스트 1(90) 및 레지스터 컨텍스트 2(92)에 의해 공유된다. 따라서, 프로세스 A를 실행할 때, 현재 레지스터 컨텍스트의 GPR 8-11을 액세스하는 것에 의해 실제적으로 레지스터 컨텍스트 2(92)의 GPR 8-11을 액세스하게 된다. 따라서, 그것이 단일 레지스터(예를 들어 스택 포인터 레지스터(96, 98 또는 100))이거나 또는 레지스터들의 그룹이든지 간에 임의의 개수의 매핑들이 존재한다. 또한, 각 레지스터 컨텍스트는 한 레지스터 컨텍스트로 매핑되는 일부 레지스터들 및 다른 레지스터 컨텍스트로 매핑되는 그외의 레지스터들을 가질 수 있다. 또한, 레지스터 또는 레지스터들의 그룹은 그것으로 매핑되는 다중 레지스터 컨텍스트들의 레지스터들을 가질 수 있다.
각 레지스터 컨텍스트의 매핑은 각 레지스터 컨텍스트의 컨텍스트 제어 레지스터에서 정의된다(예를 들면, 도 5의 컨텍스트 제어 레지스터들(128, 130, 132)).따라서, 도 2의 각 레지스터 컨텍스트 0-N은 각 레지스터 컨텍스트에 포함될 수 있거나(도 4 및 도 5에서처럼) 또는 개별적으로 저장될 수 있는(도 2의 제어 레지스터 파일(38)처럼) 대응하는 컨텍스트 제어 레지스터를 갖는다. 도 6은 본 발명의 일 실시예에 따른 컨텍스트 제어 레지스터(140)의 콘텐츠를 도시한다. 컨텍스트 제어 레지스터(140)는 도 4의 컨텍스트 제어 레지스터들(77, 79, 75)을 참조하거나, 또는 도 5의 컨텍스트 제어 레지스트들(128, 130, 132)을 참조할 수 있다. 일 실시예에서, 컨텍스트 제어 레지스터(140)는 레지스터들의 매핑을 제어하고, 현재, 대체의, 저장된 컨텍스트 정보를 보유하는 다양한 서로 다른 필드들을 갖는 특수 목적의 32 비트 레지스터이다.
컨텍스트 제어 레지스터(140)의 비트 0는 다중 레지스터 컨텍스트들의 사용을 가능하게 하는 컨텍스트 인에이블 필드(142)에 대응한다. 예를 들어, 컨텍스트 인에이블 필드(142)가 취소되면, 오직 하나의 컨텍스트만이 인에이블되고, 컨텍스트 제어(140) 내의 그외의 모든 제어 필드들은 무시되고, 현재 컨텍스트는 디폴트 레지스터 컨텍스트(도 2에 도시된 실시예에서는 레지스터 컨텍스트 0(34))로 설정된다. 컨텍스트 인에이블 필드(142)가 어써트되면, 다중 컨텍스트들이 인에이블된다. 비트 3-5는 하드웨어가 지원하는 최고의 컨텍스트 번호를 나타내는 판독 전용 필드인 다수의 컨텍스트 필드(144)에 대응한다. 도 6의 예에서, 값 000은 하나의 컨텍스트가 지원되고 있음을 나타내는 한편, 값 111은 하드웨어가 8개의 레지스터 컨텍스트들을 지원함을 나타낸다. 데이터 프로세싱 시스템(10)이 8개 이상의 레지스터 컨텍스트들을 지원하면, 컨텍스트 필드(144)의 개수를 위해 추가의 비트들이사용될 수 있다. 그러나, 도 6의 실시예에서는, 최대 8개 레지스터 컨텍스트들이 지원되는 것을 가정할 것이다.
비트 6-8은 현재 인에이블된 레지스터 컨텍스트들을 정의하는 현재 컨텍스트 필드(146)에 대응한다. 일 실시예에 있어서, 이 필드는 리셋 시에 0으로 클리어되어 디폴트 레지스터 컨텍스트가 레지스터 컨텍스트 0임을 나타낸다. 현재 컨텍스트 필드(146)는 도 2의 벡터 오프셋 발생기(39)에 의해서와 같이 다양한 서로 다른 방법으로 제공될 수 있는 위에서 설명된 컨텍스트 선택기에 대응한다. 따라서, 컨텍스트 전환 시에(인터럽트 또는 프로세스 전환에 의해 발생됨), 현재 컨텍스트 필드(146)는 컨텍스트 선택기가 나타낸 새로운 레지스터 컨텍스트로 설정된다. 예를 들면, 도 5를 참조하면, 데이터 프로세싱 시스템(10)이 현재 프로세스 A에서 실행되고 있으면, 프로세스 B로의 컨텍스트 전환 시에, 컨텍스트 선택기는 레지스터 컨텍스트 2를 나타내고, 레지스터 컨텍스트 2(92)의 컨텍스트 제어 레지스터의 현재 컨텍스트 필드로 값 2가 기입된다.
각 레지스터 컨텍스트가 그 자신의 컨텍스트 제어 레지스터를 가지면서, 필드들 중 일부는 상이한 컨텍스트 제어 레지스터들 사이에서 공유될 수 있음을 유의한다. 예를 들면, 단일 컨텍스트 인에이블 비트, 단일 개수의 컨텍스트 필드, 및 단일의 현재 컨텍스트 필드들을 구현할 수 있으며 이들은 그 값이 상이한 컨텍스트 제어 레지스터들 중에서 언제나 동일하기 때문에 모든 컨텍스트 제어 레지스터들에 의해 사용된다. 다른 실시예들은 각각의 컨텍스트 제어 레지스터에 대해 컨텍스트 인에이블 또는 다수의 컨텍스트 필드 또는 현재 컨텍스트 필드를 사용할 수 있지만, 각각에 대해 단일의 공유 필드를 사용하는 것에 의해 하드웨어 필요성들을 감소시킨다.
비트 9-11은 이전에 인에이블된 컨텍스트들을 정의하는 저장된 컨텍스트 필드(148)에 대응한다. 이 필드는 리셋 시에 0으로 클리어될 수 있다. 따라서, 프로세스 A로부터 프로세스 B로의 전환에 대한 상기 예에서(도 5 참조), 현재 컨텍스트 필드는 2로 설정되며(레지스터 컨텍스트 2(92)를 나타냄), 저장된 컨텍스트 필드는 1로 설정되게 된다(이전의 컨텍스트인 레지스터 컨텍스트 1(90)을 나타냄).
비트 12-14는 레지스터 그룹들에 대해 컨텍스트 매핑을 정의하는데 사용되는 인에이블 컨텍스트를 대안적으로 정의하는 대체 컨텍스트 필드(150)에 대응한다. 비트 15-18은 매핑 필드(151)에 대응한다. 비트 15는 레지스터 그룹 A(GPR 4-7로서 정의됨)에 대응하며, 비트 16은 레지스터 그룹 B(GPR 8-11로서 정의됨)에 대응하며, 비트 17는 레지스터 그룹 C(GPR 16-23로서 정의됨)에 대응하며, 비트 18은 레지스터 그룹 D(GPR 27-31로서 정의됨)에 대응한다. 레지스터 그룹들 A-D의 각각은 대응하는 비트를 어써트함으로써 독립적으로 인에이블된다. 예를 들면, 비트 15가 어써트되면, 그룹 A는 대체 컨텍스트 필드에 의해 정의된 레지스터 컨텍스트로 그룹 A가 매핑되도록 인에이블된다. 비트 15가 취소되면, 그룹 A는 매핑되지 않는다. 마찬가지로, 비트 16, 17, 또는 18이 어써트되면, 대응하는 레지스터들의 그룹(각각 B, C, 또는 D)은 대체 컨텍스트 필드가 정의한 레지스터 컨텍스트로 매핑된다. 비트 16, 17, 또는 18이 취소되면, 대응하는 레지스터들의 그룹(각각 B, C, 또는 D)은 매핑되지 않는다. 따라서, 도 5를 참조하면, 레지스터 컨텍스트1(90)의 컨텍스트 제어 레지스터는, 레지스터들의 선택된 그룹 또는 그룹들이 레지스터 컨텍스트 2(92)로 매핑됨을 나타내는 대체 컨텍스트 필드 내에 2를 포함한다. 또한, 비트 16(GPR 8-11을 갖는 그룹 B에 대응함)은 레지스터 컨텍스트 1(90)의 그룹(104)이 레지스터 컨텍스트 2(92)의 그룹(116)으로 매핑되도록 어써트된다.
예시의 컨텍스트 제어 레지스터인 도 6의 컨텍스트 제어 레지스터(140)에서, 단일의 대체 컨텍스트 필드가 이용가능하며 각 그룹 (A-D)이 인에이블되어 동일한 대체 레지스터 컨텍스트로 매핑될 수 있다. 즉, 그룹 A가 특정 레지스터 컨텍스트로 매핑되면, 그룹들 C-D는 동일한 컨텍스트로만 매핑될 수 있다. 그러나, 대안의 실시예들에 있어서, 각각의 레지스터들의 별도의 그룹화(예를 들어 그룹들 A-D)는 대응하는 대체 컨텍스트 필드를 가져서 이들이 상이한 대체 레지스터 컨텍스트들로 매핑될 수 있게 된다. 대안적으로, 개별적인 대체 컨텍스트 필드는 그룹들의 그룹들에 대해 사용될 수 있다(예를 들어, 그룹 A 및 B에 대한 하나의 대체 컨텍스트 필드 및 그룹 C 및 D에 대한 다른 대체 컨텍스트 필드). 또한, 그룹들은 임의의 방법으로 정의될 수 있다. 예를 들면, 각 그룹은 4개 레지스터들보다 많게 또는 적게 가질 수 있으며, 각 그룹은 단일 레지스터일 수 있으며, 또는 각 그룹은 상이한 수의 레지스터들을 가질 수 있다. 또한, 대안의 실시예에서, 다소간의 그룹들은 다소간의 대체 컨텍스트 필드들을 가지고 사용될 수 있다. 따라서 도 6의 컨텍스트 제어 레지스터(140)는 오직 하나의 예이다. 또한, 각 필드는 필드들의 값을 나타내기 위해 다소간의 비트들을 필요한 만큼 사용할 수 있다. 컨텍스트 제어(140)는 사용되지 않은 비트들 1, 2, 19-23, 및 28-31을 포함하지만, 다른 실시예들은 임의의 사용되지 않은 비트들을 포함하지 않을 수 있으며, 또는 컨텍스트 제어 정보를 저장하기 위해 다수의 레지스터들을 필요로 할 수 있다.
컨텍스트 제어 레지스터(140)의 비트 24는 도 4 및 도 5 둘다를 참고하여 설명한 것처럼, 스택 포인터의 매핑을 인에이블하는 스택 포인터 컨텍스트 인에이블 필드(152)에 대응한다. 비트 25-27은 스택 포인터에 대한 대체 레지스터 컨텍스트를 선택하는 스택 포인터 컨텍스트 선택 필드(154)에 대응한다. 따라서, 비트 24가 어써트되면, 스택 포인터는 스택 포인터 컨텍스트 선택 필드(154)가 나타내는 레지스터 컨텍스트로 매핑되지만, 비트 24가 취소되면, 스택 포인터는 매핑되지 않는다(즉, 현재 컨텍스트 필드(146)에 의해 정의된 현재 컨텍스트로부터 남아 있게 됨). 스택 포인터 컨텍스트 선택 필드(154)는 데이터 프로세싱 시스템(10)의 8개 레지스터 컨텍스트들 중 어느 것이 스택 포인터에 대한 대체 컨텍스트로서 사용되는지를 나타낼 수 있는 3 비트 값이다. 예를 들면, 값 000은 레지스터 컨텍스트 0에 대응할 수 있으며, 값 111은 레지스터 컨텍스트 7에 대응할 수 있다. 따라서, 스택 포인터 컨텍스트 선택 필드(154)가 001로 설정되면, (그리고 스택 포인터 컨텍스트 인에이블 필드(152)가 어써트되면) 현재 컨텍스트의 스택 포인터는 레지스터 컨텍스트 1로 매핑된다. 예를 들면, 도 4를 다시 참조하면, 레지스터 컨텍스트 2(74)의 컨텍스트 제어 레지스터의 스택 포인터 컨텍스트 인에이블 필드는 어써터되고, 스택 포인터 컨텍스트 선택 필드는 001로 설정되어, 스택 포인터 레지스터(80)가 레지스터 컨텍스트 1(72)의 스택 포인터 레지스터(78)로 매핑됨을 나타낸다. 다른 실시예들은 스택 포인터의 공유를 가능하게 하는 것 이외에 다른 개별적인 레지스터들의 매핑을 가능하게 하는 필드들을 포함할 수도 있음을 유의한다.
컨텍스트 제어 레지스터는 다양한 서로 다른 방법들로 프로그램될 수 있다. 예를 들면, 일 실시예에서, 각 컨텍스트 제어 레지스터는 직접적으로 사용자 프로그래밍될 수 있다. 다르게는, 컨텍스트 제어 레지스터들은 현재 컨텍스트 제어 레지스터의 대체 컨텍스트 필드를 사용하여 간접적으로 매핑될 수 있다. 예를 들면, 일 실시예에서, 파워 업 또는 리세트 시에, 데이터 프로세싱 시스템은 레지스터 컨텍스트 0으로 디폴트된다. 그 다음에 대체 컨텍스트 필드는 레지스터 컨텍스트의 컨텍스트 제어 레지스터가 프로그래밍되는 것을 나타내는 값으로 설정될 수 있다. 예를 들면, 레지스터 컨텍스트 0에 있는 동안에, 레지스터 컨텍스트 0의 컨텍스트 제어 레지스터의 대체 컨텍스트 필드에 값 2를 기입함으로써 특수 목적의 레지스터를 통해 레지스터 컨텍스트 2의 컨텍스트 제어 레지스터의 프로그래밍을 액세스할 수 있게 된다. 모든 컨텍스트 제어 필드들이 프로그래밍된 후에, 이들은 모두 동시에 인에이블될 수 있다(단일의 공유 컨텍스트 인에이블 필드를 갖는 경우에, 이 비트를 어써트함으로써 행해짐). 또한, 일 실시예에서는, 컨텍스트 제어 레지스터들의 프로그래밍 중에 인터럽트 프로세싱을 턴 오프할 수 있다.
특정 필드들 및 비트 위치들을 참조하여 컨텍스트 제어 레지스터(140)를 기술하였음을 유의한다. 다른 실시예들은 필요에 따라 다소간의 필드들을 포함할 수 있으며, 각 필드는 필요에 따라 다소간의 비트들을 포함할 수 있다. 또한, 다른 실시예들에 있어서, 컨텍스트 제어 레지스터들은 데이터 프로세싱 시스템(10) 내의 어디든지 위치할 수 있거나, 또는 데이터 프로세싱 시스템(10)의 외부에 위치할 수있다.
따라서, 컨텍스트 제어 레지스터를 사용하여 감소된 오버헤드를 갖는 유연성있는 컨텍스트 선택을 제공할 수 있는 방법을 알 수 있을 것이다. 데이터 프로세싱 시스템(10) 내의 컨텍스트 전환 시에, 새로운 레지스터 컨텍스트의 컨텍스트 제어 레지스터를 갱신한다. 예를 들면, 새로운 레지스터 컨텍스트는 현재의 컨텍스트 필드에 기입되고, 이전의 컨텍스트는 저장된 컨텍스트 필드에 기입되며, 매핑 필드 내에 제공된 레지스터 매핑들은 새로운 레지스터 컨텍스트 내에서 동작할 때 사용된다. 레지스터 매핑에 의해, 상이한 레지스터 컨텍스트들이 레지스터 값들을 공유할 수 있게 된다. 또한, 레지스터 매핑에 의해, 현재 레지스터 컨텍스트의 컨텍스트 제어 레지스터에 의해 정의된 대로, 현재 레지스터 컨텍스트 외측의 다른 레지스터 컨텍스트을 액세스 할 수 있게 된다. 또한, 사용자 프로그램가능한 컨텍스트 제어 레지스터들은 매핑이 정의되는 방법에 있어서 유연성을 갖게 한다. 따라서, 여기에 기술된 본 발명의 일 양상은 대체 레지스터 컨텍스트의 일부를 현재 레지스터 컨텍스트로(및 그 역으로) 매핑하기 위한 유연성있는 메카니즘을 제공하고, 다중 컨텍스트들 중에서 공통 스택 포인터들을 유연성있게 공유하는 것을 제공함으로써, 개선된 실시간 성능의 결과를 준다. 현재의 컨텍스트의 일부를 대체 컨텍스트로 매핑하는 것에 의해, 동작하는 컨텍스트들 사이에서 정보값을 전송하는 오버헤드는 제거되거나 또는 감소될 수 있으므로, 개선된 성능 및 유연성이 생기게 된다.
상술한 설명에 있어서, 본 발명은 특정 실시예들에 관하여 기술되었다. 그러나, 당업자들은 이하의 청구항들에 기술된 본 발명의 범주로부터 벗어나지 않으면서 다양한 변경 및 수정을 행할 수 있음을 알 것이다. 예를 들어, 블록도들은 도시된 것 이외의 상이한 블록들을 가질 수 있으며, 다소간의 블록들은 다르게 구성될 수 있다. 따라서, 명세서 및 도면은 한정적인 의미가 아니라 예시적인 의미로서 간주되어야 하며, 모든 그러한 변경들은 본 발명의 범주 내에 포함되는 것을 의도한다.
특정 실시예들에 대하여 이익, 그외의 장점, 및 문제점에 대한 해결책들이 위에서 기술되었다. 그러나, 임의의 이익, 장점 또는 해결책들이 발생하거나 또는 표명되어질 수 있게 하는, 이익, 장점, 문제점들에 대한 해결책 및 그 외의 요소(들)은 청구항들 전체 또는 일부의 결정적이거나, 필요하거나, 또는 본질적인 특징 또는 요소로서 해석되는 것은 아니다. 여기에서 사용되는 바와 같이, 용어들 "포함하다(comprises)", "포함하는(comprising)" 또는 이들의 임의의 그외의 변경들은 비독점적인 포함을 커버하여, 구성요소들의 리스트를 포함하는 프로세스, 방법, 제조물, 또는 장치는 이 구성요소들을 포함할 뿐만 아니라, 특별히 나열되지 않거나 또는 그러한 프로세스, 방법, 제조물, 또는 장치에 고유하지 않은 그외의 요소들을 포함할 수 있음을 의도하는 것이다.

Claims (10)

  1. 데이터 프로세싱 시스템(10)에 있어서,
    복수의 레지스터 컨텍스트(34, 35, 36);
    상기 복수의 레지스터 컨텍스트의 적어도 일부에 대응하는 컨텍스트 제어 정보를 저장하는 저장 회로(38); 및
    상기 복수의 레지스터 컨텍스트 내의 현재 레지스터 컨텍스트의 대응하는 일부 대신에 상기 복수의 레지스터 컨텍스트 내의 대체(alternate) 레지스터 컨텍스트의 일부를 선택적으로 액세스하는 프로세싱 회로(12)
    를 포함하는 데이터 프로세싱 시스템.
  2. 제1항에 있어서,
    상기 대체 레지스터 컨텍스트의 일부는 상기 저장된 컨텍스트 제어 정보에 의해 나타내어지는 데이터 프로세싱 시스템.
  3. 제1항에 있어서,
    상기 저장 회로는 복수의 컨텍스트 제어 레지스터를 포함하며, 상기 복수의 컨텍스트 제어 레지스터의 각각은 상기 복수의 레지스터 컨텍스트의 대응하는 레지스터 컨텍스트에 대응하는 데이터 프로세싱 시스템.
  4. 제1항에 있어서,
    상기 대체 레지스터 컨텍스트의 일부는 스택 포인터를 포함하는 데이터 프로세싱 시스템.
  5. 제1항에 있어서,
    상기 일부는 레지스터들의 세트를 포함하는 데이터 프로세싱 시스템.
  6. 제1항에 있어서,
    상기 컨텍스트 제어 정보는 인에이블 필드(enable field)를 포함하며, 상기 인에이블 필드가 어써트되는 경우에, 상기 프로세싱 회로는 상기 대체 레지스터 컨텍스트의 일부를 액세스하는 데이터 프로세싱 시스템.
  7. 복수의 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템에서, 상기 복수의 레지스터 컨텍스트 내에서, 대응하는 컨텍스트 제어 정보를 갖는 제1 레지스터 컨텍스트에서 동작하는 단계를 갖는 방법으로서,
    상기 제1 레지스터 컨텍스트에서 동작하는 방법은,
    상기 제1 레지스터 컨텍스트의 제1 부분을 액세스하는 단계;
    상기 제1 레지스터 컨텍스트의 상기 대응하는 컨텍스트 제어 정보에 기초하여 상기 제1 레지스터 컨텍스트의 제2 부분에 대응하는 제2 레지스터 컨텍스트의 일부를 선택적으로 액세스하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    상기 컨텍스트 제어 정보는 인에이블 필드를 포함하며, 상기 인에이블 필드가 어써트되는 경우에, 상기 방법은 상기 제1 레지스터 컨텍스트의 제2 부분에 대응하는 상기 제2 레지스터 컨텍스트의 일부를 액세스하는 단계를 포함하는 방법.
  9. 제7항에 있어서,
    컨텍스트 선택기를 수신하는 단계;
    상기 컨텍스트 선택기에 기초하여 상기 제2 레지스터 컨텍스트에서 동작하는 단계 - 상기 제2 레지스터 컨텍스트는 대응하는 컨텍스트 제어 정보를 가짐 -; 및
    상기 제2 레지스터 컨텍스트의 상기 대응하는 제어 정보에 기초하여 상기 제2 레지스터 컨텍스트의 제2 부분에 대응하는 제3 레지스터 컨텍스트의 일부를 선택적으로 액세스하는 단계
    를 더 포함하는 방법.
  10. 데이터 프로세싱 시스템(10)에 있어서,
    복수의 레지스터 컨텍스트(34, 35, 36) - 각각의 레지스터 컨텍스트는 대체 레지스터 컨텍스트 필드 및 매핑 필드를 갖는 대응하는 컨텍스트 제어 레지스터를 포함함 - ; 및
    상기 복수의 레지스터 컨텍스트 내의 현재 레지스터 컨텍스트의 대응하는 부분을 액세스하는 대신에 상기 복수의 레지스터 컨텍스트 내의 대체 레지스터 컨텍스트의 일부를 선택적으로 액세스하는 프로세싱 수단(12) - 상기 대체 레지스터 컨텍스트의 일부는 상기 현재 레지스터 컨텍스트에 대응하는 상기 컨텍스트 제어 레지스터의 상기 매핑 필드에 의해 정의되고, 상기 대체 레지스터 컨텍스트는 상기 현재 레지스터 컨텍스트에 대응하는 상기 컨텍스트 제어 레지스터의 상기 대체 레지스터 컨텍스트 필드에 의해 정의됨 -
    을 포함하는 데이터 프로세싱 시스템.
KR1020047019511A 2002-05-31 2003-05-07 다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법 KR100989215B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/159,386 US7117346B2 (en) 2002-05-31 2002-05-31 Data processing system having multiple register contexts and method therefor
US10/159,386 2002-05-31
PCT/US2003/014215 WO2003102723A2 (en) 2002-05-31 2003-05-07 Data processing system having multiple register contexts and method therefor

Publications (2)

Publication Number Publication Date
KR20050010508A true KR20050010508A (ko) 2005-01-27
KR100989215B1 KR100989215B1 (ko) 2010-10-20

Family

ID=29582888

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047019511A KR100989215B1 (ko) 2002-05-31 2003-05-07 다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법

Country Status (8)

Country Link
US (1) US7117346B2 (ko)
EP (1) EP1573444A2 (ko)
JP (1) JP4409427B2 (ko)
KR (1) KR100989215B1 (ko)
CN (1) CN100472453C (ko)
AU (1) AU2003225300A1 (ko)
TW (1) TWI323847B (ko)
WO (1) WO2003102723A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100728899B1 (ko) * 2005-10-27 2007-06-15 한국과학기술원 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040098568A1 (en) * 2002-11-18 2004-05-20 Nguyen Hung T. Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method
US7631307B2 (en) * 2003-12-05 2009-12-08 Intel Corporation User-programmable low-overhead multithreading
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7516311B2 (en) * 2005-01-27 2009-04-07 Innovasic, Inc. Deterministic microcontroller context arrangement
US7562207B2 (en) * 2005-01-27 2009-07-14 Innovasic, Inc. Deterministic microcontroller with context manager
US7590774B2 (en) * 2005-12-01 2009-09-15 Kabushiki Kaisha Toshiba Method and system for efficient context swapping
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8341641B2 (en) * 2007-08-16 2012-12-25 Kernelon Silicon Inc. Task processor
US9135144B2 (en) 2009-10-22 2015-09-15 Freescale Semiconductor, Inc. Integrated circuits and methods for debugging
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
CN103314338B (zh) * 2011-01-03 2016-02-10 飞思卡尔半导体公司 集成电路装置以及实施数据条件否定的方法
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US20140019990A1 (en) * 2011-03-30 2014-01-16 Freescale Semiconductor, Inc. Integrated circuit device and method for enabling cross-context access
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
EP2710480B1 (en) 2011-05-20 2018-06-20 Intel Corporation An interconnect structure to support the execution of instruction sequences by a plurality of engines
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
IN2014CN03678A (ko) 2011-11-22 2015-09-25 Soft Machines Inc
WO2013099414A1 (ja) * 2011-12-26 2013-07-04 インターナショナル・ビジネス・マシーンズ・コーポレーション レジスタ・マッピング方法
US10732976B2 (en) * 2013-01-10 2020-08-04 Nxp Usa, Inc. Integrated circuit processor and method of operating the integrated circuit processor in different modes of differing thread counts
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10031770B2 (en) * 2014-04-30 2018-07-24 Intel Corporation System and method of delayed context switching in processor registers
US9996353B2 (en) 2015-02-26 2018-06-12 International Business Machines Corporation Universal history buffer to support multiple register types
US10067766B2 (en) * 2015-02-26 2018-09-04 International Business Machines Corporation History buffer with hybrid entry support for multiple-field registers
US9971604B2 (en) 2015-02-26 2018-05-15 International Business Machines Corporation History buffer for multiple-field registers
US10802866B2 (en) * 2015-04-30 2020-10-13 Microchip Technology Incorporated Central processing unit with DSP engine and enhanced context switch capabilities
JP2017037370A (ja) 2015-08-06 2017-02-16 富士通株式会社 計算機、プロセス制御方法およびプロセス制御プログラム
GB2577729C (en) * 2018-10-04 2021-10-27 Advanced Risc Mach Ltd Processor with Register Bank having Banked Versions of a Register each Associated with an Operating State of the Processor
CN110928574A (zh) * 2019-11-20 2020-03-27 深圳市汇顶科技股份有限公司 微控制器、中断处理芯片、设备及中断处理方法
US11663010B2 (en) * 2021-03-08 2023-05-30 Unisys Corporation System and method for securely debugging across multiple execution contexts
US11816486B2 (en) 2022-01-18 2023-11-14 Nxp B.V. Efficient inter-thread communication between hardware processing threads of a hardware multithreaded processor by selective aliasing of register blocks

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142677A (en) * 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
JPH04242433A (ja) * 1991-01-17 1992-08-31 Nec Corp マイクロプロセッサ
US5386563A (en) * 1992-10-13 1995-01-31 Advanced Risc Machines Limited Register substitution during exception processing
GB2281986B (en) * 1993-09-15 1997-08-06 Advanced Risc Mach Ltd Data processing reset
US6029242A (en) * 1995-08-16 2000-02-22 Sharp Electronics Corporation Data processing system using a shared register bank and a plurality of processors
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5812868A (en) * 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system
US6145049A (en) * 1997-12-29 2000-11-07 Stmicroelectronics, Inc. Method and apparatus for providing fast switching between floating point and multimedia instructions using any combination of a first register file set and a second register file set
US6154832A (en) * 1998-12-04 2000-11-28 Advanced Micro Devices, Inc. Processor employing multiple register sets to eliminate interrupts
WO2000079394A1 (en) 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for providing manifold array (manarray) program context switch with array reconfiguration control
JP4693326B2 (ja) 1999-12-22 2011-06-01 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100728899B1 (ko) * 2005-10-27 2007-06-15 한국과학기술원 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서

Also Published As

Publication number Publication date
CN100472453C (zh) 2009-03-25
US7117346B2 (en) 2006-10-03
AU2003225300A1 (en) 2003-12-19
TW200401195A (en) 2004-01-16
JP4409427B2 (ja) 2010-02-03
US20030226001A1 (en) 2003-12-04
AU2003225300A8 (en) 2003-12-19
EP1573444A2 (en) 2005-09-14
KR100989215B1 (ko) 2010-10-20
WO2003102723A3 (en) 2006-04-06
CN1856770A (zh) 2006-11-01
JP2006502470A (ja) 2006-01-19
TWI323847B (en) 2010-04-21
WO2003102723A2 (en) 2003-12-11

Similar Documents

Publication Publication Date Title
KR100989215B1 (ko) 다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법
US5560035A (en) RISC microprocessor architecture implementing multiple typed register sets
US7406550B2 (en) Deterministic microcontroller with configurable input/output interface
US7228401B2 (en) Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
CA2386562A1 (en) Branch instruction for processor
US7526579B2 (en) Configurable input/output interface for an application specific product
US7143271B2 (en) Automatic register backup/restore system and method
KR100465388B1 (ko) Risc 구조의 8비트 마이크로 제어기
JP3773470B2 (ja) データ処理装置内でのコプロセッサ命令の取り扱い
US5680632A (en) Method for providing an extensible register in the first and second data processing systems
JP5289688B2 (ja) プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
US7680967B2 (en) Configurable application specific standard product with configurable I/O
US6886159B2 (en) Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
WO2006081092A2 (en) Deterministic microcontroller with configurable input/output interface
JPH0256029A (ja) 汎用レジスタ切換方式

Legal Events

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

Payment date: 20130930

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee