KR101673247B1 - 할당가능 범용 레지스터 셋트를 갖는 프로세서 - Google Patents

할당가능 범용 레지스터 셋트를 갖는 프로세서 Download PDF

Info

Publication number
KR101673247B1
KR101673247B1 KR1020117019353A KR20117019353A KR101673247B1 KR 101673247 B1 KR101673247 B1 KR 101673247B1 KR 1020117019353 A KR1020117019353 A KR 1020117019353A KR 20117019353 A KR20117019353 A KR 20117019353A KR 101673247 B1 KR101673247 B1 KR 101673247B1
Authority
KR
South Korea
Prior art keywords
cpu
register
register set
condition
interrupt
Prior art date
Application number
KR1020117019353A
Other languages
English (en)
Other versions
KR20120006482A (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 KR20120006482A publication Critical patent/KR20120006482A/ko
Application granted granted Critical
Publication of KR101673247B1 publication Critical patent/KR101673247B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

프로세서는, 중앙 처리 장치(CPU), 제 CPU 레지스터 셋트, 제2 CPU 레지스터 셋트, 제1 또는 제2 CPU 셋트를 CPU에 접속시키기 위한 멀티플렉서 유닛, 및 복수의 인터럽트 신호들 중 적어도 하나에 대한 수신에 따라 제1 CPU 레지스터 셋트로부터 제2 CPU 레지스터 셋트까지 스위칭하도록 멀티플렉서 유닛을 제어하기 위한 제어 로직을 갖는데, 이 경우, 복수의 인터럽트 신호들 중 적어도 하나는 제어 로직 내에서 프로그램가능하다는 조건을 충족해야만 한다.

Description

할당가능 범용 레지스터 셋트를 갖는 프로세서{PROCESSOR WITH ASSIGNABLE GENERAL PURPOSE REGISTER SET}
본 발명은 마이크로컨트롤러들과 같은 마이크로프로세서들에 관한 것으로서, 특히 마이크로프로세서들 또는 마이크로컨트롤러들에서 이용되는 인터럽트 컨트롤러들에 관한 것이다.
마이크로프로세서들, 특히 마이크로컨트롤러들은, 인터럽트 컨트롤러들을 이용하여, 복수의 가능한 인터럽트 소스들(possible interrupt source) 및 프로그램 예외 처리(program exception handling)를 관리한다. 인터럽트들은, 일반적으로, 프로그램의 순차적인 처리(sequential processing) 중에 예외를 요청한다. 만일 이런 인터럽트 요청이 처리되면, 인터럽트 서비스 루틴(ISR)의 실행이 발생할 것이다. ISR은, 프로그램이 각각의 인터럽트 소스를 적절히 처리할 수 있도록 하여, 인터럽트의 요청을 제거한다. 하지만, 각각의 ISR에 진입하거나 빠져나오는 것은 컨텍스트(context)의 저장 및 복원을 요구한다. 컨텍스트의 저장 및 복원은, 마이크로프로세서가 인터럽트 요청이 발생하기 이전과 동일한 상태의 프로그램의 순차적인 처리로 확실하게 복귀하기 위하여 프로그램에 의해 행해지는 모든 동작들을 일컫는다.
또한, 이러한 컨텍스트 저장 및 복원을 인터럽트 지연시간(interrupt latency)이라고도 하는데, 이 인터럽트 지연 시간은 컨텍스트 저장 또는 복원의 첫번째 동작이 발생할 때로부터 시작하고 컨텍스트 저장 및 복원의 마지막 동작이 발생할 때에 종료되는 시간의 단위(unit)로 측정된다. ISR 컨텐츠 저장은 프리앰블(preamble)이라고 하고, 컨텍스트 복원은 포스트앰블(post-amble)이라 한다. 특히, 프리앰블은 마이크로프로세서 또는 마이크로컨트롤러의 중앙 처리 장치(CPU)와 관련된 레지스터 셋트를 포함할 수 있다. 레지스터 셋트 또는 레지스터 파일은, 일반적으로, 이들 레지스터들에 저장된 데이터 또는 어드레스들에 관한 데이터/어드레스 이동 동작들뿐만 아니라 산술연산 및/또는 논리연산을 수행하기 위하여, CPU의 산술 논리 유닛(ALU)과 결합되어 사용될 수 있다. 그래서, 일반적으로, 그러한 레지스터 셋트가 CPU의 일부분인 것으로 간주될 수 있지만, 본 발명의 목적을 위하여, 레지스터 셋트 또는 레지스터 파일이라는 용어는 CPU라는 용어와는 구분하여 사용될 수 있다. 하지만, 이러한 용어들이 사용되는 방법으로부터 어떠한 제한이 추론되어서도 안된다. 레지스터 셋트는 CPU의 내부 또는 외부에 존재할 수 있다.
ISR의 프리앰블 또는 포스트앰블은 다양한 지연시간을 가질 수 있다. 그래서 높은 ISR 지연시간을 갖는 높은 빈도의 인터럽트는, 상당한 양의 프로세서 시간을 소모할 수 있다.
ISR 지연시간을 감소시키기 위하여, 마이크로프로세서들 또는 마이크로컨트롤러들은, 새도우 레지스터 셋트(shadow register set)라고 하는, ISR들을 위한 별도의 레지스터 셋트를 가질 수 있다. 예를 들면, Microchip에 의해 제작된 32비트 마이크로컨트롤러 PIC32MX3XX/4XX는, 할당가능한 가장 높은 인터럽트 우선권이 제공될 때마다 새도우 레지스터 셋트로 자동으로 전환하는 프로세서 코어를 갖는다.
하지만, 이러한 공지의 시스템은 유연성이 없으며, 다중 인터럽트 소스들을 관리하는 제어 시스템들에 대해 적용하기가 쉽지 않다. 따라서, 더욱 유연한 시스템이 요구된다.
본 발명의 일 실시예에 따르면, 프로세서는: 중앙 처리 장치(CPU); 제1 CPU 레지스터 셋트; 제2 CPU 레지스터 셋트; 상기 제1 또는 상기 제2 CPU 레지스터 셋트를 상기 CPU에 접속시키기 위한 멀티플렉서 로직; 복수의 인터럽트 신호들 중 적어도 하나에 대한 수신에 따라, 상기 제1 CPU 레지스터 셋트로부터 상기 제2 CPU 레지스터 셋트로 스위치하도록 상기 멀티플렉서 로직을 제어하기 위한 제어 로직을 포함하고, 이 경우, 상기 복수의 인터럽트 신호들 중 적어도 하나는 상기 제어 로직 내에서 프로그램가능한 소정의 조건을 충족해야 한다.
다른 실시예에 따르면, 상기 조건은 인터럽트 우선권일 수 있다. 또다른 실시예에 따르면, 상기 조건은 인터럽트 식별자이다. 다른 실시예에 따르면, 프로세서는 복수의 제2 CPU 레지스터 셋트를 포함한다. 다른 실시예에 따르면, 멀티플렉서 로직은, 제1 CPU 레지스터 셋트 또는 제2 CPU 레지스터 셋트들 중 하나를 선택한다. 다른 실시예에 따르면, 복수의 제2 CPU 레지스터 셋트들 중 하나를 선택하기 위한 또다른 멀티플렉서를 더 포함한다. 다른 실시예에 따르면, 프로세서는 상기 조건을 결정하기 위한 프로그램가능한 구성 레지스터를 더 포함한다. 다른 실시예에 따르면, 프로세서는 복수의 조건들을 결정하기 위한 복수의 프로그램가능한 구성 레지스터들을 더 포함한다. 다른 실시예에 따르면, 프로세서는 소정의 복수의 할당들 중 하나를 선택하기 위한 적어도 2개의 프로그램가능한 구성 레지스터를 더 포함하고, 각 할당은 소정의 조건에 상기 복수의 제2 CPU 레지스터 셋트들 중 하나를 결부시킨다. 다른 실시예에 따르면, 상기 제1 구성 레지스터는 이용가능한 제2 레지스터 셋트들의 프로그램가능한 개수를 인에이블 또는 디스에이블시키고, 상기 제2 레지스터 셋트는 상기 복수의 제2 레지스터 셋트들 중 적어도 하나의 할당을 결정한다. 다른 실시예에 따르면, 상기 프로세서는 8개의 레지스터 파일 셋트들을 갖는다.
또다른 실시예에 따르면, 중앙 처리 장치(CPU) 레지스터 셋트를 갖는 프로세서를 제공하기 위한 방법으로서: 제1 CPU 레지스터 셋트로부터 제2 CPU 레지스터 셋트로의 스위칭을 위한 조건을 프로그램하는 단계; 상기 제1 CPU 레지스터 셋트를 선택하는 단계; 및 복수의 인터럽트 신호들 중 적어도 하나를 수신하고나서 상기 제2 CPU 레지스터 셋트를 선택하는 단계를 포함하고, 상기 복수의 인터럽트 신호들 중 적어도 하나는 상기 조건을 충족해야한다.
상기 방법의 또다른 실시예에 따르면, 상기 조건은 인터럽트 우선권이다. 또다른 실시예에 따르면, 상기 조건은 인터럽트 식별자이다. 상기 방법의 또다른 실시예에 따르면, 상기 제2 CPU 레지스터 셋트를 선택하는 단계는, 복수의 제2 CPU 레지스터 셋트들 중 하나를 선택하는 단계를 포함한다. 상기 방법의 또다른 실시예에 따르면, 상기 조건을 프로그램하는 단계는, 적어도 하나의 구성 레지스터에 데이터를 기록하는 단계를 포함한다. 상기 방법의 또다른 실시예에 따르면, 상기 조건을 프로그램하는 단계는, 복수의 구성 레지스터에 데이터를 기록하는 단계를 포함한다. 상기 방법의 또다른 실시예에 따르면, 소정의 조건에 제2 CPU 레지스터 셋트에 대한 복수의 할당들을 결정하는 단계 및 적어도 소정의 제1 파라미터와 상기 조건에 따라서 상기 할당들 중 하나를 선택하는 단계를 더 포함한다. 상기 방법의 또다른 실시예에 따르면, 제2 파라미터를 더 포함하고, 상기 제1 파라미터는 이용가능한 제2 레지스터 셋트들의 개수를 결정하고 상기 제2 파라미터는 상기 복수의 제2 레지스터 셋트들 중 적어도 하나에 대한 할당을 결정한다. 상기 방법의 또다른 실시예에 따르면, 상기 프로세서는 8개의 레지스터 파일 셋트들을 갖는 마이크로컨트롤러이다.
비록, 본 발명이 예시적인 실시예를 참조하여 묘사되고 설명되고 정의되었지만, 이러한 참조들은 본 발명에 대한 제한을 의미하지 않으며, 그러한 제한이 유추되어서도 안된다. 제시된 사항들은, 관련된 기술 분야에서 통상의 기술을 가진 자 및 본 발명에 의해 이득을 얻을 수 있는 자에 의하여, 형태 및 기능의 측면에 있어서 다양한 수정, 변경 및 균등물이 가능하다. 묘사되고 설명된 본 발명의 실시예들은 단지 예시일 뿐으로서, 본 발명의 범위를 제한하지는 않는다.
첨부한 도면과 함께 제공되는 설명을 참조하여 본 발명 및 그에 의한 장점들이 더욱 완전하게 이해될 수 있을 것이다.
도 1은 할당가능 새도우 레지스터 셋트를 갖는 마이크로프로세서 또는 마이크로컨트롤러에 대한 일 실시예를 도식적으로 나타낸 블록도이다.
도 2는 다중 새도우 레지스터 셋트의 구현예를 도식적으로 나타낸 블록도이다.
도 3은 다중 새도우 레지스터 셋트의 다른 구현예를 도식적으로 나타낸 블록도이다.
도 4는 새도우 레지스터 셋트를 선택하기 위한 제어 로직의 일례를 도식적으로 나타낸 블록도이다.
도 5는 구성 레지스터들의 컨텐츠에 따른 할당의 일례를 보여주는 할당 테이블이다.
다양한 실시예들에 따르면, 마이크로프로세서 또는 마이크로컨트롤러는, 시스템 성능을 향상시키고 장치 소비 전력을 낮추기 위하여, 복수의 새도우 레지스터 셋트들에 대한 선택 시스템을 가질 수 있다. 본 발명의 개시에 따르면, 사용자는, 새도우 레지스터 셋트를 어느 할당가능 인터럽트 우선권이 수신할지를 지정할 수 있다. 새도우 셋트 할당은, 컴파일러가 우선권과 관련된 올바른 프롤로그 및 에필로그를 생성할 수 있도록, 이에 제한되는 것은 아니지만, 컴파일 시간에 선택될 수 있다.
하나 이상의 범용 레지스터 셋트를 갖는 집적 회로 장치, 예를 들면, 마이크로컨트롤러는, 적어도 하나의 할당가능 범용 레지스터 셋트를 이용하여, 소프트웨어 개발자가 범용 레지스터 셋트를 인터럽트 우선권 레벨에 관련짓는 것을 허용할 수 있다. 범용 레지스터 셋트를 인터럽트 우선권 레벨과 관련지을 수 있도록 함으로써, 관련지어진 범용 레지스터들(레지스터 셋트)은 어떤 인터럽트 우선권 레벨일지라도 인터럽트 지연시간을 줄일 수 있게 된다. 이것은 높은 빈도로 발생하는 인터럽트들을 처리하는데에 매우 유용하지만, 그것은 최고 우선권으로 할당되지는 않는다.
도 1은 할당가능 새도우 레지스터 셋트를 갖는 마이크로프로세서 또는 마이크로컨트롤러의 일 실시예를 보여준다. 중앙 처리 장치(CPU)(110)는, 멀티플렉서 로직(150)을 이용하여 메인 레지스터 셋트(120) 또는 새도우 레지스터 셋트(130)와 접속되어 있다. 더욱, 인터럽트 컨트롤러(140)가 할당된 우선권들에 따라 복수의 인터럽트 소스들을 처리한다. 우선권은, 하나 또는 복수의 제어 라인들(160)을 통해서 CPU(110)에 신호가 제공될 수 있다. 제어 신호(160)는 멀티플렉서 로직(150)을 제어하기 위해 이용된다. 더욱, 하나 또는 복수의 신호들(170)이 하나 또는 복수의 인터럽트 신호들의 각각을 CPU(110)에 제공(feed)하기 위해 이용된다.
소프트웨어는, 레지스터들의 새도우 셋트(130)가 우선권 레벨들을 하나 또는 복수의 범용 레지스터 새도우 셋트에 맵핑하도록 구성하는 데에 이용될 수 있다. 결과적으로, 구성 레지스터(180)는 우선권 레벨을 하나 또는 복수의 새도우 레지스터 파일들(130)에 개별적으로 할당하는 데에 이용될 수 있다. 예를 들면, 인터럽트가 인터럽트 컨트롤러(140)에 도달한 경우, 멀티플렉서 로직(150)은, 수신 인터럽트의 처리에 이용하기 위한 구성 레지스터(180)의 프로그래밍에 따라, 사용자 지정 새도우 셋트(130)를 CPU(110)에 제공하게 한다.
예를 들면, 첫번째 인터럽트가 1MHz의 속도(rate)로 발생하고 또다른 인터럽트가 5kHz의 속도로 발생할 수 있다. 하나의 시나리오에 따르면, 5kHz 인터럽트는 1MHz를 인터럽트할 수 있어야만 하므로, 더높은 우선권 레벨이 세트되어야만 한다. CPU(110) 밴드폭을 저장하기 위하여, 예를 들면 프롤로그/에필로그 동안에 메인 레지스터 셋트(120)와 새도우 레지스터 셋트(130)를 스위칭함으로써, 사용자는 새도우 레지스터 셋트(130)에 1MHz 인터럽트와 동일한 우선권을 할당하기를 원할 수도 있다. 1MHz 인터럽트를 최고 우선권 레벨로 올리는 것은 이 경우에 있어서 선택사항이 아니라는 점이, 본 시나리오에 있어서 주목되어야 한다. 종래의 시스템에서는, 단지 5kHz 인터럽트만이 새도우 레지스터 파일을 이용할 수 있었다. 하지만, 본 발명의 다양한 실시예들에 따르면, 새도우 레지스터 파일(130)의 이용은, 우선권 레벨과 동기되어질 수 있다. 또다른 실시예에 따르면, 인터럽트 소스(예를 들면, 고유의 인터럽트 벡터)를 고유하게 식별하기 위해 구성 레지스터가 이용되는데, 상기 인터럽트 소스에 대한 각각의 ISR이 실행될 때에 새도우 레지스터 파일이 구성 레지스터에 할당될 것이다. 이러한 실시예에 따르면, 단일의 인터럽트만이 새도우 레지스터 파일 셋트(130)로의 스위칭을 유발할 것이고, 반면에, 우선권 레벨을 이용할 때에는 스위칭이 각각의 우선권에 할당된 모든 인터럽트에 대하여 발생할 것이다.
도 2는 다중 새도우 레지스터 파일 셋트들(135a..n)을 제공하는 다른 실시예를 보여준다. 여기에서, 추가적인 멀티플렉서 로직(240)이 새도우 레지스터 파일 셋트들 중 하나(135a)를 선택하기 위해 이용될 수 있거나, 멀티플렉서 로직(240)이 메인 레지스터 셋트(120) 또는 복수의 새도우 레지스터 파일 셋트들(135a..n) 중 하나를 선택하기 위해 확장될 수도 있다. 본 실시예에 있어서, 레지스터 파일 셋트(135a..n)의 각각을 위한 다중 구성 레지스터들(280a..n) 또는 미리정의된 할당들을 위한 레지스터들의 셋트는, 후술하는 바와 같이 이용되어질 수 있다.
도 3은, 새도우 레지스터 파일 셋트들(130) 및 선택적으로 메인 레지스터 파일 셋트(120)가 다중 레지스터 파일 셋트 페이지들(330a..n)을 포함하는 메모리(310) 내에 구현된 또다른 실시예를 보여준다. 본 실시예에 있어서, 하나 또는 복수의 구성 레지스터들을 포함할 수 있는 제어 유닛(340)이 레지스터 파일 포인터(320)를 세트하기 위해 이용된다. 본 실시예에서, 페이지(330a)는 메인 레지스터 파일 셋트를 형성하도록 구성될 수 있고, 페이지들(330b..n)은 다중 새도우 레지스터 파일들을 형성할 수 있다. 제어 유닛(340)은, 상술한 바와 같은 인터럽트 소스 또는 인터럽트 우선권 레벨에 따라, 자동으로 레지스터 파일 포인터(320)를 미리프로그램된 페이지로 스위치한다.
도 4는 복수의 새도우 레지스터 파일들의 고유한 할당을 제어하는 다른 실시예를 보여준다. 본 실시예에서는, 선택 로직(430)에 연결되어 있는 디스에이블/인에이블 레지스터(410) 및 선택 레지스터(420)가 이용된다. 선택 로직(430)은, 더욱, 인터럽트 컨트롤러로부터 우선권 정보를 수신하고, 새도우 레지스터 셋트들 중 하나를 선택하도록 멀티플렉서에 대해 제어 신호를 출력한다. 디스에이블/인에이블 레지스터(410)를 이용함으로써, 예를 들면, 이용가능한 새도우 레지스터 파일 셋트들의 개수가 제한될 수 있다. 예를 들어, 8개의 추가적인 새도우 레지스터 파일 셋트들이 구현되었다면, 8비트 레지스터(410)의 각 비트는 복수의 새도우 파일 레지스터 셋트들 중 하나를 명확하게 인에이블시키거나 디스에이블시키기 위해 이용될 수 있다. 그리고 선택 레지스터(420)는, 이용가능한 레지스터들에 고유한 우선권 레벨을 명확하게 할당하기 위해 이용될 수 있다. 일 실시예에 따르면, 예를 들면, 이용가능한 레지스터들의 개수에 따라 특정의 고정된 할당들이 이용될 수 있으며, 선택 레지스터(420)가 다른 할당들을 선택하기 위해 이용될 수도 있다.
도 5는, 8개의 인터럽트 우선권 레벨들(0-7)과 8개의 추가적인 새도우 파일 레지스터 셋트들(0-7)을 갖는 시스템에서 이용될 수 있는 할당 테이블을 보여준다. 디스에이블/인에이블 레지스터(410)는, 1, 2, 4 또는 8개의 새도우 레지스터 파일 셋트들을 인에이블시키기 위해 이용되는 3 비트들[2:0]을 가질 수 있다. 본 실시예에서, 값 "111"은 단일 새도우 레지스터 파일을 선택하고, "110"은 2개의 새도우 레지스터 파일 셋트들을, "100"은 4개의 새도우 레지스터 파일 셋트들을, "000"은 8개의 새도우 레지스터 파일 셋트들을 선택한다. 선택 레지스터는, 또한, 8개의 서로다른 할당들을 제공하기 위해 3 비트들[2:0]을 가질 수 있다. 본 실시예에 따르면, 선택 레지스터(420)와 디스에이블 레지스터(410)는, 도 5에 도시된 바와 같이, 미리프로그램된 할당들을 선택하기 위해 이용된다. 다른 실시예에 따르면, 테이블은 다르게 배열될 수도 있다. 예를 들면, 할당들은 고유한 요청들에 따라서 다를 수도 있다. 다른 실시예들에 있어서, 테이블은, 도 5에 도시된 바와 같이 첫번째 행과 마지막 행을 포함하지 않을 수도 있다.
만일 이용가능한 새도우 셋트들의 개수가 1개이면, 도시된 바와 같이 디스에이블 레지스터(410)를 "111"로 세팅함으로써, 모든 우선권 레벨은 새도우 레지스터 파일 셋트 0으로의 스위칭을 유발할 것이다. 만일 이용가능한 새도우 레지스터 파일 셋트들의 개수가 2개라면, 도시된 바와 같이 디스에이블 레지스터(410)를 "110"으로 세팅함으로써, 본 실시예에서는 8개의 서로다른 세팅들이 가능한데, 각각의 세팅은 새도우 레지스터 파일 셋트 1에 단일의 우선권을 할당하고 나머지 모든 우선권들은 새도우 파일 레지스터 셋트 0을 이용한다. 만일 이용가능한 새도우 셋트들의 개수가 4개라면, 도시된 바와 같이 디스에이블 레지스터(410)를 "100"으로 세팅함으로써, 본 실시예에서는 6개의 서로다른 세팅들이 가능한데, 각각의 세팅은 새도우 레지스터 파일 셋트들 2 및 3에 우선권 레벨들 6 및 7을 각각 할당하는 고정 할당과, 새도우 레지스터 파일 셋트들 0 및 1에 대한 변동 할당을 갖는다. 이 경우, 새도우 레지스터 파일 셋트 1은 우선권들(0-5) 중 하나에 할당될 수 있는 반면에, 나머지 우선권들은 새도우 파일 레지스터 셋트 0을 이용한다. 마지막으로, 만일 이용가능한 새도우 셋트들의 개수가 8개라면, 도시된 바와 같이 디스에이블 레지스터(410)를 "000"으로 세팅함으로써, 각 우선권 레벨(0-7)은 새도우 레지스터 파일 셋트 0-7의 각각에 대한 스위치를 유발한다. 예를 들어, 만일 우선권 레벨 0이 메인 프로그램을 의미한다면, 새도우 레지스터 파일 셋트 0이 메인 레지스터 파일일 수 있다는 점이 주목되어야 한다. 그래서 메인 레지스터 파일과 새도우 레지스터 파일 사이의 구분이 불필요하다.
또한, 도 5에 도시된 바와 같이, 도시된 테이블이 특히 유용하다 할지라도, 서로다른 새도우 레지스터 파일 셋트들에 대한 우선권 레벨들의 더 많거나 더 적은 고정된 할당들을 제공하는 단지 하나의 특수한 예를 제공하는 것에 불과하다. 본 테이블은 너무 제한적이거나 너무 복잡할 수 있고, 또한 더 복잡하거나 덜 복잡한 할당이 다양한 다른 실시예들에 따라 설계될 수 있다.
그러므로 본 발명은, 상기한 목적들을 달성하기 위해, 또한 여기에 내포된 것뿐만 아니라 언급된 결과들 및 장점들을 포함하기 위해 조정될 수 있다. 수많은 변경이 당업자에 의해 이루어질 수 있지만, 그러한 변경들은 첨부된 청구항들에 의해 정의되는 본 발명의 범위에 포함되는 것이다.

Claims (20)

  1. 중앙 처리 장치(CPU);
    제1 CPU 레지스터 세트;
    제2 CPU 레지스터 세트;
    상기 제1 CPU 레지스터 세트 및 상기 제2 CPU 레지스터 세트 중 어느 하나를 상기 CPU에 결합시키기 위한 멀티플렉서 로직 - 상기 제1 CPU 레지스터 세트 및 상기 제2 CPU 레지스터 세트는 상기 CPU의 범용 레지스터 세트를 형성함 -;
    복수의 인터럽트 신호들 중 적어도 하나의 인터럽트 신호의 수신시, 상기 복수의 인터럽트 신호들 중 적어도 하나의 인터럽트 신호가 제어 로직 내에서 프로그램 가능한 추가 조건에 부합하는 경우에만, 상기 멀티플렉서 로직이 상기 제1 CPU 레지스터 세트로부터 상기 제2 CPU 레지스터 세트로 스위칭하도록 제어하기 위한 제어 로직을 포함하는 프로세서.
  2. 제1항에 있어서,
    상기 조건은 인터럽트 우선권인 것을 특징으로 하는 프로세서.
  3. 제1항에 있어서,
    상기 조건은 인터럽트 식별자인 것을 특징으로 하는 프로세서.
  4. 제1항에 있어서,
    복수의 제2 CPU 레지스터 셋트를 포함하는 것을 특징으로 하는 프로세서.
  5. 제4항에 있어서,
    상기 멀티플렉서 로직은, 상기 제1 CPU 레지스터 셋트 또는 상기 제2 CPU 레지스터 셋트들 중 하나를 선택하는 것을 특징으로 하는 프로세서.
  6. 제4항에 있어서,
    상기 복수의 제2 CPU 레지스터 셋트들 중 하나를 선택하기 위한 또다른 멀티플렉서를 더 포함하는 것을 특징으로 하는 프로세서.
  7. 제1항에 있어서,
    상기 조건을 결정하기 위한 프로그램가능한 구성 레지스터를 더 포함하는 것을 특징으로 하는 프로세서.
  8. 제4항에 있어서,
    복수의 조건들을 결정하기 위한 복수의 프로그램가능한 구성 레지스터를 더 포함하는 것을 특징으로 하는 프로세서.
  9. 제4항에 있어서,
    소정의 복수의 할당들 중 하나를 선택하기 위한 적어도 2개의 프로그램가능한 구성 레지스터를 더 포함하고,
    각 할당은 소정의 조건에 상기 복수의 제2 CPU 레지스터 셋트들 중 하나를 결부시키는 것을 특징으로 하는 프로세서.
  10. 제9항에 있어서,
    상기 제1 구성 레지스터는 이용가능한 제2 레지스터 셋트들의 프로그램가능한 개수를 인에이블 또는 디스에이블시키고, 상기 제2 레지스터 셋트는 상기 복수의 제2 레지스터 셋트들 중 적어도 하나의 할당을 결정하는 것을 특징으로 하는 프로세서.
  11. 제10항에 있어서,
    상기 프로세서는 8개의 레지스터 파일 셋트들을 갖는 마이크로컨트롤러인 것을 특징으로 하는 프로세서.
  12. 중앙 처리 장치(CPU) 레지스터 세트를 갖는 프로세서를 제공하기 위한 방법으로서:
    제1 CPU 레지스터 세트로부터 제2 CPU 레지스터 세트로의 스위칭을 위한 조건을 프로그램하는 단계;
    상기 제1 CPU 레지스터 세트를 선택하여 상기 CPU에 범용 CPU 레지스터 세트로서 결합시키는 단계; 및
    복수의 인터럽트 신호들 중 적어도 하나의 인터럽트 신호를 수신한 후에, 상기 복수의 인터럽트 신호들 중 적어도 하나의 인터럽트 신호가 상기 조건에 부합하는 경우에만, 상기 제2 CPU 레지스터 세트를 선택하여 상기 CPU에 범용 CPU 레지스터 세트로서 결합시키고, 그리고 상기 조건에 부합하지 않는 경우에는 상기 제1 CPU 레지스터 세트로부터 상기 제2 CPU 레지스터 세트로의 스위칭하지 않는 단계를 포함하는 프로세서 제공 방법.
  13. 제12항에 있어서,
    상기 조건은 인터럽트 우선권인 것을 특징으로 하는 프로세서 제공 방법.
  14. 제12항에 있어서,
    상기 조건은 인터럽트 식별자인 것을 특징으로 하는 프로세서 제공 방법.
  15. 제12항에 있어서,
    상기 제2 CPU 레지스터 셋트를 선택하는 단계는, 복수의 제2 CPU 레지스터 셋트들 중 하나를 선택하는 단계를 포함하는 것을 특징으로 하는 프로세서 제공 방법.
  16. 제12항에 있어서,
    상기 조건을 프로그램하는 단계는, 적어도 하나의 구성 레지스터에 데이터를 기록하는 단계를 포함하는 것을 특징으로 하는 프로세서 제공 방법.
  17. 제15항에 있어서,
    상기 조건을 프로그램하는 단계는, 복수의 구성 레지스터에 데이터를 기록하는 단계를 포함하는 것을 특징으로 하는 프로세서 제공 방법.
  18. 제15항에 있어서,
    소정의 조건에 제2 CPU 레지스터 셋트에 대한 복수의 할당들을 결정하는 단계 및 적어도 소정의 제1 파라미터와 상기 조건에 따라서 상기 할당들 중 하나를 선택하는 단계를 더 포함하는 것을 특징으로 하는 프로세서 제공 방법.
  19. 제18항에 있어서,
    제2 파라미터를 더 포함하고,
    상기 제1 파라미터는 이용가능한 제2 레지스터 셋트들의 개수를 결정하고 상기 제2 파라미터는 상기 복수의 제2 레지스터 셋트들 중 적어도 하나에 대한 할당을 결정하는 것을 특징으로 하는 프로세서 제공 방법.
  20. 제19항에 있어서,
    상기 프로세서는 8개의 레지스터 파일 셋트들을 갖는 마이크로컨트롤러인 것을 특징으로 하는 프로세서 제공 방법.
KR1020117019353A 2009-04-13 2010-04-12 할당가능 범용 레지스터 셋트를 갖는 프로세서 KR101673247B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US16869909P 2009-04-13 2009-04-13
US61/168,699 2009-04-13
US12/749,065 2010-03-29
US12/749,065 US8825926B2 (en) 2009-04-13 2010-03-29 Processor with assignable general purpose register set
PCT/US2010/030721 WO2010120676A1 (en) 2009-04-13 2010-04-12 Processor with assignable general purpose register set

Publications (2)

Publication Number Publication Date
KR20120006482A KR20120006482A (ko) 2012-01-18
KR101673247B1 true KR101673247B1 (ko) 2016-11-07

Family

ID=42935268

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117019353A KR101673247B1 (ko) 2009-04-13 2010-04-12 할당가능 범용 레지스터 셋트를 갖는 프로세서

Country Status (6)

Country Link
US (1) US8825926B2 (ko)
EP (1) EP2419831B1 (ko)
KR (1) KR101673247B1 (ko)
CN (1) CN102334108B (ko)
TW (1) TWI485622B (ko)
WO (1) WO2010120676A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392644B2 (en) * 2010-07-30 2013-03-05 Mips Technologies, Inc. System and method for automatic hardware interrupt handling
US9619231B2 (en) 2013-03-12 2017-04-11 Microchip Technology Incorporated Programmable CPU register hardware context swap mechanism
KR20180083688A (ko) 2017-01-13 2018-07-23 삼성전자주식회사 애플리케이션 프로세서 및 집적 회로
US10536156B1 (en) * 2018-10-16 2020-01-14 Microchip Technology Incorporated Analog-to-digital converter controllers including configurable contexts
TWI716167B (zh) * 2019-10-29 2021-01-11 新唐科技股份有限公司 儲存裝置及其映射方法
CN112363759B (zh) * 2020-10-22 2022-10-14 海光信息技术股份有限公司 一种寄存器配置方法、装置、cpu芯片及电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0795277B2 (ja) * 1988-11-25 1995-10-11 日本電気株式会社 データ処理装置
EP0538817B1 (en) * 1991-10-21 2001-07-25 Kabushiki Kaisha Toshiba High-speed processor capable of handling multiple interrupts
US6029242A (en) * 1995-08-16 2000-02-22 Sharp Electronics Corporation Data processing system using a shared register bank and a plurality of processors
US6553487B1 (en) 2000-01-07 2003-04-22 Motorola, Inc. Device and method for performing high-speed low overhead context switch
EP1122643A1 (de) 2000-02-07 2001-08-08 Siemens Aktiengesellschaft Schaltungsanordnung und Verfahren zur Hardware-Interruptbehandlung
US7487339B2 (en) * 2001-10-12 2009-02-03 Mips Technologies, Inc. Method and apparatus for binding shadow registers to vectored interrupts
US7117319B2 (en) 2002-12-05 2006-10-03 International Business Machines Corporation Managing processor architected state upon an interrupt
TW200511111A (en) * 2003-07-30 2005-03-16 Koninkl Philips Electronics Nv Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set
US7613186B2 (en) * 2004-05-06 2009-11-03 Via Telecom Co., Ltd. Processing multiplex sublayer data unit data in hardware
US7984281B2 (en) 2005-10-18 2011-07-19 Qualcomm Incorporated Shared interrupt controller for a multi-threaded processor
US7793025B2 (en) * 2008-03-28 2010-09-07 Freescale Semiconductor, Inc. Hardware managed context sensitive interrupt priority level control

Also Published As

Publication number Publication date
US20100262805A1 (en) 2010-10-14
CN102334108B (zh) 2015-07-01
KR20120006482A (ko) 2012-01-18
WO2010120676A1 (en) 2010-10-21
TW201042541A (en) 2010-12-01
CN102334108A (zh) 2012-01-25
EP2419831A1 (en) 2012-02-22
EP2419831B1 (en) 2015-12-02
US8825926B2 (en) 2014-09-02
TWI485622B (zh) 2015-05-21

Similar Documents

Publication Publication Date Title
US10521375B2 (en) Controller for a memory system
KR101673247B1 (ko) 할당가능 범용 레지스터 셋트를 갖는 프로세서
US10649935B2 (en) Deferred inter-processor interrupts
US20060259662A1 (en) Data trnasfer apparatus, data transfer method, and program
JPH02267634A (ja) 割込み処理装置
US20070074214A1 (en) Event processing method in a computer system
US20090249347A1 (en) Virtual multiprocessor, system lsi, mobile phone, and control method for virtual multiprocessor
US9846551B2 (en) System on a chip including a management unit for allocating and deallocating an address range
US20100169546A1 (en) Flash memory access circuit
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
JP2008009817A (ja) 半導体装置及びデータ転送方法
WO1999014679A1 (en) Interrupt system
JP2011237929A (ja) マルチコア・プロセッサ
US20110022767A1 (en) Dma controller with interrupt control processor
JP2007172622A (ja) データ転送制御
US7380027B2 (en) DMA controller and DMA transfer method
US8910181B2 (en) Divided central data processing
JP2008015720A (ja) プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JP2002312302A (ja) 周辺装置
JP6940283B2 (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム
JP5644197B2 (ja) コンピュータシステムおよび割込要求処理方法
CN107025132B (zh) 中断配置方法和装置
JP2007219925A (ja) バス制御装置、バス制御プログラム及び記録媒体
JP2008250419A (ja) 競合調停装置、マスタスレーブシステム及び競合調停方法
JPS59125450A (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