KR20140135796A - 컨텍스트 스위치를 구비한 마이크로컨트롤러 - Google Patents

컨텍스트 스위치를 구비한 마이크로컨트롤러 Download PDF

Info

Publication number
KR20140135796A
KR20140135796A KR1020147027368A KR20147027368A KR20140135796A KR 20140135796 A KR20140135796 A KR 20140135796A KR 1020147027368 A KR1020147027368 A KR 1020147027368A KR 20147027368 A KR20147027368 A KR 20147027368A KR 20140135796 A KR20140135796 A KR 20140135796A
Authority
KR
South Korea
Prior art keywords
registers
memory
context
register
mapped
Prior art date
Application number
KR1020147027368A
Other languages
English (en)
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 KR20140135796A publication Critical patent/KR20140135796A/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/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
    • 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
    • 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/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30138Extension of register space, e.g. register cache

Landscapes

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

Abstract

마이크로프로세서 또는 마이크로컨트롤러 디바이스는, 중앙 처리 유닛(CPU) 및 CPU와 결합되는 데이터 메모리를 구비하며, 데이터 메모리는 복수의 메모리 뱅크들로 분할되며, 뱅크 선택 레지스터는 어느 메모리 뱅크가 CPU와 현재 결합되는지를 결정한다. 또한, 제1 세트의 특수 기능 레지스터들과 제2 세트의 특수 기능 레지스터들이 제공되며, 컨텍스트 스위치가 일어나면 제1 세트 및 제2 세트 중 어느 하나의 세트의 특수 기능 레지스터들이 CPU를 위한 액티브 컨텍스트 레지스터들로서 선택되고 그리고 각각의 다른 하나의 세트의 특수 기능 레지스터들이 비액티브 컨텍스트 레지스터들로서 선택되며, 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들이 데이터 메모리의 2개의 메모리 뱅크들보다 많은 메모리 뱅크들로 메모리 매핑되고 그리고 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 데이터 메모리 내의 적어도 하나의 메모리 위치로 메모리 매핑된다.

Description

컨텍스트 스위치를 구비한 마이크로컨트롤러{MICROCONTROLLER WITH CONTEXT SWITCH}
관련 출원
본 출원은 2012년 3월 21일 출원된 미국 가출원 번호 61/613,802의 우선권 이익을 주장하며, 이 미국 가출원은 그 전체가 본 출원에 통합된다.
본 발명은 마이크로컨트롤러에 관한 것으로, 특히 자동적인 컨텍스트 스위칭 능력을 갖는 마이크로컨트롤러에 관한 것이다.
마이크로컨트롤러들은 일반적으로 단일 칩상의 시스템들(systems on a single chip)로 마이크로컨트롤러 코어 또는 중앙 처리 유닛과 복수의 주변기기 부품들을 포함한다. 이런 매우 많은 마이크로컨트롤러는 8비트, 16비트 및 32비트 아키텍처를 갖는다. 본 출원인인 마이크로칩 테크놀로지 인코포레이티드에 의해 제조된 8비트 마이크로컨트롤러들과 같은 현존의 마이크로컨트롤러들은 유연한 아키텍처를 제공하며, 여기서 복수의 패밀리들이 이용 가능하고, 각 패밀리는 상이한 복잡성을 갖는다. 이런 마이크로컨트롤러들은 예를 들면 프로그램과 데이터 메모리들이 분리된 하버드 아키텍처를 포함할 수 있다. 이러한 타입의 마이크로컨트롤러들은 복잡한 디코딩 회로 없이도 데이터 메모리에의 액세스를 가능하게 하는 특정 뱅킹 시스템을 더 포함할 수 있다. 일반적으로, 데이터 메모리는 복수의 뱅크들로 분할되어 되어 있으며, 뱅크 선택 레지스터는 그 뱅크들 중 어느 것이 현재 선택되고 액세스될 수 있는지를 정의한다. 다른 뱅크들로 액세스하기 위해, 뱅크 선택 레지스터는 재프로그램되어야 한다. 이런 뱅킹 방식이 단지 단일의 정의된 메모리 뱅크에의 접근을 가능하게 할지라도, 이 컨트롤러들은 미리 정의된 뱅크로 강제로 스위칭하는 명령어들을 포함할 수 있다. 이것은 일반적인 액세스 한계들에도 불구하고 향상되고 유력한 성과를 제공한다.
제품 팔레트에 따르면, 8비트 패밀리의 마이크로컨트롤러들의 상이한 패밀리들이 상술한 바와 같이 제공될 수 있다. 예를 들면 기본(baseline) 패밀리는 매우 저비용으로 이런 디바이스들의 제조를 가능하게 하는 필수적인 기능성들만을 제공할 수 있다. 예를 들면, 이런 기본 제품은 인터럽트들을 지원할 수 없으며, 여기서 더욱 진보된 패밀리들은 이러한 기능성들을 가질 수 있다. 인터럽트 기능성은 중요한 회로를 추가하게 하는데, 이 중요한 회로는 이런 디바이스들을 매우 저비용으로 제조할 수 없게 한다.
상술한 바와 같이, 많은 마이크로컨트롤러 설계들, 특히 8비트 마이크로컨트롤러들은 값비싼 실리콘 점유 면적을 절감하기 위해 감소된 기능성을 구비하고 그 결과 단순화된 아키텍처를 구비하여, 감소된 칩 크기를 가능하게 하고 이에 따라 웨이퍼 당 더 많은 칩들을 가능하게 한다. 예를 들면, 본 출원인인 마이크로칩 테크놀로지 인코포레이티드의 제품 라인에 따르면, 소위 기본 8비트 마이크로컨트롤러의 많은 코드 실행이 인터럽트 기능들의 부족으로 제한되어 있다.
도 1은 뱅킹 메커니즘으로 액세스될 수 있는 데이터 메모리를 구비한 이러한 종래의 마이크로컨트롤러의 간략화된 블록도이다. 프로그램 메모리(110)는 실행가능한 프로그램을 형성하는 복수의 명령들을 저장한다. 프로그램 카운터(115)는 예를 들어 2k 선형 프로그램 메모리를 어드레싱하기 위해 11 비트를 갖도록 설계될 수 있다. 서브루틴들이 실행되면 프로그램 카운터 값들을 저장하기 위해 스택(120)이 제공될 수 있다. 도시된 예시적인 마이크로컨트롤러는 프로그램 메모리(110)에 저장된 12 비트 명령 워드들로 동작하는 8 비트 하버드형 마이크로컨트롤러이다. 따라서, 중앙 8 비트 데이터 버스(105)는 예를 들면, 타이머 유닛 0 및 외부 포트 B(130)와 같은 마이크로컨트롤러 내의 많은 기능 요소들을 결합시키는데 사용될 수 있다. 데이터 메모리(125)는 이 버스(105)와 결합되고, 어드레스 멀티플렉서(140)로부터 예를 들어 8 비트 어드레스를 수신한다. 직접 어드레싱을 위하여, 어드레스 멀티플렉서(140)는 명령 레지스터(135)에 의해 제공된 어드레스 데이터로부터의 어드레스와 특수 기능 레지스터(145)에 의해 제공된 어드레스 데이터를 조합한다. 따라서, 직접 어드레싱 모드에서, 명령 레지스터(135)는 하위 5 비트를 제공하고 특수 기능 레지스터(145)는 상위 3 비트를 제공한다. 따라서, 일실시예에 따르면, 특수 기능 레지스터(145)는 8개의 상이한 메모리 뱅크들 중 하나를 선택할 수 있는 뱅크 선택 레지스터로서 동작한다. 간접 어드레싱에서, 특수 기능 레지스터(145)는 모든 비트들 0-7을 갖는 완전한 어드레스를 제공한다. 간접 어드레싱은 가상 레지스터라서 물리적으로 구현되지 않는 특수 기능 레지스터 INDF에 액세스함으로써 구현된다. 이 레지스터 INDF에의 모든 읽기 또는 기록 액세스는, 간접 액세스가 특수 기능 레지스터(145)를 통해 데이터 메모리(125)에 적용되게 한다. 따라서, 레지스터 INDF를 읽거나 기록하는 대신에, 간접 데이터 메모리 액세스가 수행된다.
이런 타입의 아키텍처에 따르면, 명령 레지스터(135)는 프로그램 메모리(110)로부터 명령을 직접 수신하며, 예를 들어 또 하나의 내부 8 비트 버스를 통해 명령 디코드 & 제어 유닛(180)과 결합된다. 또한, 명령 디코드 & 제어 유닛(180)은 유닛(175)에 의해 제공되는 소정의 내부 기능과 결합된다. 예를 들면, 이 기능 유닛(175)은 디바이스 리셋 타이머, 파워-온 리셋, 워치독 타이머, 내부 RC 클록 등을 포함할 수 있다. 그 외의 기능들은 통합될 수 있고 및/또는 소정 기능들은 생략될 수 있다. 타이밍 발생 유닛(185)은 내부 타이밍 신호들을 제공할 수 있으며 또한 유닛(175)과 결합될 수 있다. 도 1에 도시한 종래의 8 비트 마이크로컨트롤러 코어는 상태 레지스터(150)와 결합된 ALU(Arithmetic Logic Unit)(160)을 갖는다. 또한, ALU(160)는 작업 레지스터(165)와 결합되고, 한편으로는 멀티플렉서(155)를 통해 명령 레지스터(135)와 8 비트 데이터 버스로부터 그리고 다른 한편으로는 작업 레지스터(165)로부터 데이터를 수신한다. 따라서, 도 1은 단지 소위 기본 마이크로컨트롤러 코어의 일부 필수적인 구조를 나타낸다.
도 2는 더 많은 기능성을 제공하는 마이크로컨트롤러 코어의 또 하나의 예시적인 블록도를 도시하는 도면이다. 일반적으로, 유사한 요소들은 동일한 참조부호를 가지고 있다. 도 2에 도시한 데이터 메모리 RAM(225)은 도 1에 도시한 메모리와 동일할 수 있다. 하지만, 이 RAM(225)이 다르게 매핑되었음을 나타내기 위해 상이한 참조부호가 사용되었으며, 아래에 보다 상세히 설명될 것이다. 이제, 이 데이터 메모리는 특수 기능 레지스터들이 매핑되지 않은 복수의 순차적인 메모리 뱅크들로 이루어진 선형 메모리 블록을 포함한다. 부가적인 뱅크 선택 레지스터(BSR)(210)가 제공되며, 여기서 이 레지스터는 전용 명령을 통해 액세스될 수 있어 메모리 매핑되지 않는다. 이 레지스터(210)의 컨텐츠는 명령 레지스터(135)로부터 하위 5개 비트를 수신하는 어드레스 멀티플렉서(220)에 어드레스의 상위 3개 비트를 제공한다. 이제, 특수 기능 레지스터 FSR(145)는 현재 선택된 메모리 뱅크에 관계없이 전체 선형 데이터 메모리의 간접 어드레싱에 사용될 수 있는 8 비트 레지스터일 수 있다. 다른 실시예들에서, 이 레지스터는 비트 7을 "1"로 영구적으로 세팅함으로써 선형 데이터 메모리를 형성하는 상위 4개 뱅크들에 액세스하도록 제한될 수 있다. 하지만, 이 레지스터는 그 자체로는 더이상 뱅크 선택 기능을 제공하지 못한다. 뱅크 선택은 각각의 뱅크 번호를 비-메모리 매핑된 뱅크 선택 레지스터(210)에 기록하는 것에 의해서만 행해진다. 따라서, 선형 메모리 블록내의 메모리 뱅크가 선택된 경우에도, 전용 명령은 어떤 다른 메모리 뱅크로의 변경을 가능하게 한다. 저 비용 마이크로컨트롤러 코어들의 다른 내부 구조들이 가능하고 그리고 이하에서 보다 상세하게 설명되어지듯이 다양한 실시예들에 개시된 특정 실시예들과 결합될 수 있다.
상술한 바와 같이, 많은 저비용 마이크로컨트롤러 코어들은 코어 로직의 증가로 인해 인터럽트 기능성을 제공하지 않는다. 간단한 인터럽트 로직(250)이 도 2에 도시된 바와 같이 상술한 아키텍처들에 추가될 수 있는데, 예를 들면 많은 소스들로부터 인터럽트를 개시시킬 수 있는 단일 인터럽트 입력(INT)이 제공될 수 있으며, 여기서 소프트웨어는 인터럽트 관련 태스크들의 식별 및 관리를 처리해야 한다. 이런 간단한 인터럽트 로직(250)이 구현되면, 이후 인터럽트 서비스 루틴 코드는 공통 특수 기능 레지스터들을 본선 코드와 공유해야만 한다. 따라서, 소정의 레지스터들, 예를 들면 레지스터(245, 165 및 150)는 인터럽트 루틴에 진입하면 수동으로 저장될 필요가 있다. 소정의 마이크로컨트롤러들, 예를 들면 출원인의 마이크로컨트롤러 시리즈 PIC16F1xxx는 소위 섀도우 레지스터들을 이용하여 컨텍스트 레지스터들의 자동적인 저장 및 복구 기능을 제공한다. 섀도우 레지스터들은 단지 현재의 컨텍스트를 저장하려는 목적을 위한 특수 기능 레지스터들이다. 섀도우 레지스터들은 인터럽트가 개시될 때마다 겹쳐 써지고 그리고 이들의 컨텐츠는 인터럽트 루틴으로부터의 복귀시 각각의 컨텍스트 레지스터들에 다시 기록된다.
하지만, 인터럽트 기능성을 추가하면 이와 같이 향상되지만, 이 레지스터들을 수동으로 저장하고 복구할 필요를 방지하고 추가로 저장된 컨텍스트의 이용을 가능하게 하는 훨씬 더 향상된 자동적인 컨텍스트 스위칭에 대한 필요가 존재한다.
일실시예에 따르면, 마이크로프로세서 또는 마이크로컨트롤러 디바이스는, 중앙 처리 유닛(CPU); 상기 CPU와 결합되는 데이터 메모리, - 상기 데이터 메모리는 복수의 메모리 뱅크들로 분할되며, 뱅크 선택 레지스터는 어느 메모리 뱅크가 상기 CPU와 현재 결합되는지를 결정함 -; 및 제1 세트의 특수 기능 레지스터들과 제2 세트의 특수 기능 레지스터들을 포함할 수 있고, 컨텍스트 스위치가 일어나면 상기 제1 세트 및 상기 제2 세트 중 어느 하나의 세트의 특수 기능 레지스터들이 상기 CPU를 위한 액티브 컨텍스트 레지스터들로서 선택되고 그리고 각각의 다른 하나의 세트의 특수 기능 레지스터들이 비액티브 컨텍스트 레지스터들로서 선택되며, 상기 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들이 상기 데이터 메모리의 2개의 메모리 뱅크들보다 많은 메모리 뱅크들로 메모리 매핑되고 그리고 상기 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 상기 데이터 메모리 내의 적어도 하나의 메모리 위치로 메모리 매핑된다.
추가 실시예에 따르면, 상기 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크로만 메모리 매핑될 수 있다. 추가 실시예에 따르면, 상기 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들은 상기 데이터 메모리의 모든 메모리 뱅크들로 메모리 매핑될 수 있다. 추가 실시예에 따르면, 상기 컨텍스트 레지스터는 작업 레지스터, 상태 레지스터, 간접 어드레스를 정의하기 위한 파일 선택 레지스터 및 뱅크 선택 레지스터를 포함할 수 있다. 추가 실시예에 따르면, 상기 액티브 컨텍스트 레지스터들 중 상기 상태 레지스터와 상기 파일 선택 레지스터만이 상기 데이터 메모리의 모든 메모리 뱅크들로 메모리 매핑될 수 있고, 상기 작업 레지스터와 상기 뱅크 선택 레지스터는 비-메모리 매핑된 레지스터들일 수 있다. 추가 실시예에 따르면, 상기 비액티브 컨텍스트 레지스터들은 상기 데이터 메모리의 마지막 메모리 뱅크로 메모리 매핑될 수 있다. 추가 실시예에 따르면, 상기 디바이스는 상기 CPU와 결합되는 인터럽트 유닛을 더 포함할 수 있고, 상기 컨텍스트 스위치는 인터럽트에 의해 야기될 수 있다. 추가 실시예에 따르면, 상기 컨텍스트 스위치는 소프트웨어에 의해 야기될 수 있다. 추가 실시예에 따르면, 상기 디바이스는 4개의 메모리 뱅크들을 포함할 수 있다. 추가 실시예에 따르면, 상기 비액티브 컨텍스트 레지스터들은 제4 뱅크 내로만 메모리 매핑될 수 있다.
또 하나의 실시예에 따르면, 중앙 처리 유닛(CPU); 상기 CPU와 결합되는 데이터 메모리, - 상기 데이터 메모리는 복수의 메모리 뱅크들로 분할됨 -; 제1 세트의 특수 기능 레지스터들과 제2 세트의 특수 기능 레지스터들, - 상기 제1 세트 및 상기 제2 세트 중 어느 하나의 세트의 특수 기능 레지스터들이 액티브 컨텍스트를 형성하고, 각각의 다른 하나의 세트가 비액티브 컨텍스트를 형성함 - 을 포함하는 마이크로프로세서 또는 마이크로컨트롤러 디바이스를 동작시키는 방법은, 상기 제1 세트 및 상기 제2 세트 중 어느 하나의 세트의 레지스터들을 액티브 컨텍스트로서 선택하고 그리고 각각의 다른 하나의 세트의 레지스터들을 비액티브 컨텍스트로서 선택하며, 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들이 상기 데이터 메모리의 2개의 메모리 뱅크들보다 많은 메모리 뱅크들로 메모리 매핑되고 그리고 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 상기 데이터 메모리 내의 적어도 하나의 메모리 위치로 메모리 매핑되는 단계; 및 컨텍스트 스위치가 일어나면, 각각 액티브 컨텍스트와 비액티브 컨텍스트로서의 상기 제1 세트의 레지스터들 및 상기 제2 세트의 레지스터들 사이를 스위칭하는 단계를 포함할 수 있다.
상기 방법의 추가 실시예에 따르면, 상기 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크로만 메모리 매핑될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 방법은 인터럽트에 의해 상기 컨텍스트 스위치를 야기하는 단계를 더 포함할 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 컨텍스트 스위치는 소프트웨어에 의해 야기될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 디바이스는 4개의 메모리 뱅크들을 포함할 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 비액티브 컨텍스트 레지스터들은 제4 뱅크 내로만 메모리 매핑될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들은 상기 데이터 메모리의 모든 메모리 뱅크들로 메모리 매핑될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 컨텍스트 레지스터는 작업 레지스터, 상태 레지스터, 간접 어드레스를 정의하기 위한 파일 선택 레지스터 및 뱅크 선택 레지스터를 포함할 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 액티브 컨텍스트 레지스터들 중 상기 상태 레지스터와 상기 파일 선택 레지스터만이 상기 데이터 메모리의 모든 메모리 뱅크들로 메모리 매핑되고, 상기 작업 레지스터와 상기 뱅크 선택 레지스터는 비-메모리 매핑된 레지스터들이다. 상기 방법의 추가 실시예에 따르면, 상기 비액티브 컨텍스트 레지스터들은 상기 데이터 메모리의 마지막 메모리 뱅크로 메모리 매핑된다. 상기 방법의 추가 실시예에 따르면, 상기 방법은 상기 액티브 컨텍스트를 통해 상기 각각의 메모리 뱅크를 선택하여 상기 비액티브 컨텍스트의 레지스터들에 액세스하고 그리고 상기 비액티브 컨텍스트 레지스터들에 액세스하는 단계를 더 포함할 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 방법은 복수의 인터럽트들을 발생시키는 단계를 포함할 수 있고, 인터럽트가 일어나면 컨텍스트 스위치가 생기고, 인터럽트 루틴이 실행되어 상기 인터럽트 루틴이 상기 인터럽트 루틴의 이전 실행 동안에 선택된 레지스터 세트에 저장된 값들을 이용할 수 있다.
본 발명은 자동적인 컨텍스트 스위칭을 제공함으로서 관련 레지스터를 수동으로 저장하고 복구할 필요를 방지하고 추가로 저장된 컨텍스트의 이용을 가능하게 할 수 있다.
도 1은 종래의 마이크로컨트롤러의 블록도를 도시한다.
도 2는 또 하나의 종래의 마이크로컨트롤러의 블록도를 도시한다.
도 3은 교환 가능한 섀도우 레지스터 세트의 실시예를 도시한다.
도 4는 듀얼 레지스터 세트를 제공하기 위한 순환(circular) 버퍼의 또 하나의 실시예를 도시한다.
도 5는 다양한 실시예들에 따른 메모리 매핑을 도시한다.
도 6 및 도 7은 상세한 특수 기능 요약 테이블을 도시한다.
도 8은 다양한 실시예들에 따른 인터럽트 우선순위들을 도시한다.
상술한 마이크로컨트롤러들의 기본 CPU는 종종 인터럽트 능력들을 구비하고 있지 않다. 기본 CPU에의 인터럽트들의 추가는 특유의 결점들과 제한들을 야기한다. 다양한 실시예들에 따른 컨텍스트 스위칭은 이들 결점 중 많은 결점을 극복한다.
인터럽트 능력을 갖는 디바이스가 디바이스의 인터럽트 서비스 루틴(ISR)으로 진로를 변경하면, 많은 레지스터들의 값들 또는 컨텍스트는 본류(mainline) 코드로의 복귀시 프로그램이 중단된 곳에서부터 프로그램을 다시 시작할 수 있도록 저장되고 복구되어야 한다. 그 외의 레지스터들은 디바이스가 ISR로 진로를 변경할 때마다 다시 초기화되어야 한다. 다양한 실시예들에 따른 컨텍스트 스위칭에 의해, 이들 임계 레지스터들의 복사가 각 본류 및 ISR 실행 코드를 위해 유지되고, 또한 사용을 위해 교환되게 할 수 있다. 다양한 실시예들에 따르면, ISR의 진입 및 퇴장 시 함유된 값들을 교환할 수 있게 하기 위해, 순환 버퍼들이 컨텍스트 레지스터들에 추가된다.
다양한 실시예들에 따르면, 예를 들어 도 3 또는 도 4에 도시된 바와 같이, 컨텍스트 스위칭 메카니즘이 인터럽트 능력들 및 연관된 컨텍스트 스위치를 제공하기 위해 기본 프로세서 로직에 추가될 수 있다. 따라서 도 1 또는 도 2에 도시된 바와 같은 아키텍처는 추가 세트의 레지스터들을 제공함으로써 향상될 수 있으며, 여기서 교환 기능이 추가된다. 그러므로, 현재의 컨텍스트를 섀도우 레지스터 세트내에 저장하는 대신에, 온전한 제2 세트의 레지스터들이 제공되어 인터럽트의 실행 동안에 이 제2 세트의 레지스터들이 사용된다. 따라서 인터럽트 컨텍스트가 제공되어 인터럽트 컨텍스트의 컨텐츠는 연관된 인터럽트 컨텍스트 레지스터들에 저장되어 유지되며, 한편 "정상" 컨텍스트는 정규의 컨텍스트 레지스터들에 의해 동일한 방식으로 유지된다. 이런 타입의 이중 레지스터 세트는 특히 순환형 버퍼 기능을 제공하도록 데이터 블록을 싸는 각각의 포인터들을 이용하는 순환 버퍼의 사용에 의해 구현될 수 있다. 이하에서 더 상세하게 설명될 것이다.
도 3은 컨텍스트 스위칭 기능성을 제공하는데 사용될 수 있는 순환 버퍼의 예시적인 실시예를 도시한다. 순환 버퍼(300)는 액티브(active) 컨텍스트 및 비액티브 컨텍스트를 저장하는데 이용되는 2개의 레지스터 세트들에 저장 용량을 제공하도록 설계될 수 있다. 예를 들면, 컨텍스트는 4, 8 또는 16 레지스터들을 포함할 수 있으며, 따라서 순환형 버퍼(300)는 8, 16 또는 32 메모리 위치들 또는 레지스터들을 제공할 수 있다. 순환형 버퍼(300)는 적어도 메인 데이터 메모리(225) 내로 부분적으로 메모리 매핑될 수 있다. 예를 들면, 순환형 버퍼(300)의 전반부는 메인 컨텍스트로서 사용될 수 있으며, 후반부는 인터럽트 컨텍스트로서 사용될 수 있다. 2개의 컨텍스트들 중 하나만이 언제든지 "액티브"이며 반면에 각각의 다른 하나의 컨텍스트는 "비액티브"이다. 따라서 순환형 버퍼의 전반부의 소정 레지스터들은 모든 메모리 뱅크들로 메모리 매핑될 수 있으며, 여기서 후반부의 모든 레지스터들은 단일 메모리 뱅크, 바람직하게는 마지막 메모리 뱅크에만 메모리 매핑될 수 있다. 따라서 액티브 레지스터 세트를 뱅크들로 메모리 매핑하는 것이 비액티브 레지스터 세트를 뱅크들로 메모리 매핑하는 것과 같을 필요가 없다. 액티브 컨텍스트는 모든 뱅크들 또는 선택된 수의 뱅크들로 부분적으로 매핑될 수 있지만, "비액티브" 컨텍스트의 모든 레지스터들은 단일 메모리 뱅크, 바람직하게는 마지막 메모리 뱅크에만 메모리 매핑될 수 있다. 액티브 컨텍스트의 소정의 레지스터들은 전혀 메모리 매핑될 수 없지만, 특수 기능을 수행하기 위해 특정 레지스터로 고정 배선되거나(hard wired) 매핑될 수 있다. 따라서 마이크로컨트롤러의 동작 동안에, 액티브 컨텍스트의 메모리 매핑된 레지스터들은 모든 메모리 뱅크들에 액세스 가능하지만, 반면에 다른 비-메모리 매핑된 레지스터들은 전용 명령어들을 통해서만 이용할 수 있다. 예를 들면, 뱅크 선택 레지스터는 특정 명령어를 통해서만 이용할 수 있다. 작업(working) 레지스터는 다양한 실시예들에 따라 메모리 매핑되거나 또는 메모리 매핑되지 않을 수 있다. 소정의 컨텍스트 레지스터들, 예를 들면 상태 레지스터(STATUS) 및/또는 파일 선택 레지스터(FSR)는 모든 메모리 뱅크들로 메모리 매핑될 수 있다. 하지만, 비액티브 컨텍스트의 모든 레지스터들은 적어도 단일 '메모리 위치'에 메모리 매핑된다. 비액티브 컨텍스트의 모든 레지스터들은 액티브 컨텍스트의 각각의 레지스터들의 동일 위치들에 메모리 매핑될 필요가 없는데, 이 동일 위치들에의 메모리 매핑은 이들 액티브 레지스터들을 그 메모리 뱅크에서 이용할 수 없게 할 것이다. 또한, 이들 레지스터들 모두는 다른 실시예들에 따르면 동일 뱅크에 배치되거나 마지막 뱅크에 위치되어야 하는 어떤 조건도 없다.
이 실시예에 따른 메모리 매핑은 도 3에 도시된 바와 같이 포인터들(310, 330)에 의해 제공될 수 있다. 따라서 포인터(310)는 현재 액티브 컨텍스트의 제1 레지스터를 가리키고, 반면에 포인터(330)는 비액티브 컨텍스트의 제1 레지스터를 가리킨다. 다른 레지스터들은 미리 정의된 관계에 따라 메모리 매핑될 수 있다. 따라서 메모리 매핑이 연속적일 필요는 없다. 테이블은 각 레지스터를 메모리 매핑하기 위해 정의될 수 있다. 이러한 테이블은 또한 액티브 컨텍스트의 비-메모리 매핑된 레지스터들을 정의하는데에도 사용될 수 있다. 유사하게, 비액티브 컨텍스트의 모든 레지스터들은 테이블에 의해 단일 메모리 뱅크에 메모리 매핑될 수 있다. 도 3에 도시된 바와 같은 A로부터 B로의 컨텍스트 스위치에 의해, 포인터(310')는 이제 하반부를 가리키지만, 반면에 포인터(330')는 이제 순환형 버퍼(300)의 상반부를 가리킨다. 이 기능성은 일정한 값을 각각의 어드레스 포인터들에 간단하게 가산함으로써 제공될 수 있다. 버퍼(300)에 대해 최대 가능한 어드레스를 둘러쌈(wrapping)으로써, 순환형 버퍼 기능이 실현된다. 그러므로 정상 동작 동안에는 버퍼(300)의 상반부에 의해 정의된 컨텍스트가 도 3의 좌측에 참조 부호(A)로 도시된 바와 같이 액티브 컨텍스트로서 선택될 것이고, 반면에 버퍼(300)의 하반부의 컨텍스트는 마지막 뱅크에만 메모리 매핑될 것이다. 인터럽트 루틴에 진입 시, 컨텍스트 포인터들은 도 3의 우측에 도시된 바와 같이 참조 부호(B)에 따라 위치가 결정된다. 이제 포인터(310')는 버퍼(300)의 하반부을 가리킨다. 따라서 버퍼(300)의 하반부 레지스터들은 이제 액티브 컨텍스트로서 선택된다. 그러므로 인터럽트 루틴의 재진입은 이제 인터럽트 루틴의 이전 실행에 의해 그것이 남겨져 있었던 것과 같이 동일한 컨텍스트를 제공할 수 있으며, 여기서 비액티브 컨텍스트는 마지막 메모리 뱅크를 통해 완전하게 이용될 수 있다.
도 4는 유사한 기능성을 제공하는 또 하나의 실시예를 도시한다. 여기서 2개의 버퍼들(410, 420)이 정상 컨텍스트와 인터럽트 컨텍스트에 각각 제공된다. 양방향 멀티플렉서들(430, 440)은 소정의 레지스터들을 데이터 메모리(450)의 많은 메모리 뱅크들(450i)로 메모리 매핑하는데 제공된다. 예를 들면, 멀티플렉서(430)의 제1 I/O은 레지스터 세트(410)의 소정의 레지스터들을 모든 메모리 뱅크들(4501..450n)로 메모리 매핑할 수 있지만, 반면에 제2 I/O은 모든 레지스터들을 메모리 뱅크(450n)로만 매핑할 수 있다. 제2 멀티플렉서(440)는 도 4에 도시된 바와 같이 반대 기능을 수행한다. 따라서 레지스터 세트(410) 및 레지스터 세트(420) 중 어느 하나는 메인 레지스터 세트로서 선택된다. 추가 회로가 비-메모리 매핑된 레지스터들에 연결 또는 선택을 제공하거나 또는 비-메모리 매핑된 레지스터들의 연결 또는 선택을 제공하기 위해 제공될 수 있다.
도 5는 실시예에 따른 기본 마이크로컨트롤러의 메모리 매핑의 구현예를 도시한다. 여기서, 예를 들면 데이터 메모리는 단지 4개의 메모리 뱅크들에 메모리 공간를 제공하며, 여기서 각 메모리 뱅크는 32 레지스터들을 포함한다. 따라서 각 메모리 뱅크는 5비트만으로 전부 어드레스될 수 있다. 이것은 예를 들어 12비트만을 이용하여 명령어 크기 감소를 가능하게 한다. 도 5에 도시된 바와 같이, 컨텍스트는 단지 제한된 수의 선택된 특수 기능 레지스터들로만 이루어질 수 있다. 도 5에 따르면, 컨텍스트는 4개의 레지스터들: 작업 레지스터(W), 상태 레지스터(STATUS), 간접 어드레스 레지스터(FSR) 및 뱅크 선택 레지스터(BSR)를 포함한다. 이 실시예에 따라 알 수 있듯이, 4개의 액티브 컨텍스트 레지스터들 중 2개의 컨텍스트 레지스터들, 즉 작업 레지스터(W)와 뱅크 선택 레지스터(BSR)는 전혀 메모리 매핑되지 않는다. 나머지 다른 2개의 컨텍스트 레지스터들, 즉 상태 레지스터(STATUS)와 파일 선택 레지스터(FSR)는 각각 어드레스 03h 및 04h에서 모든 메모리 뱅크들에 메모리 매핑된다. 마지막 메모리 뱅크 "011"은 비액티브 컨텍스트를 함유한다. 도시된 바와 같이, 비액티브 작업 레지스터(I_W)은 어드레스 01h에, 비액티브 상태 레지스터(I_STATUS)는 어드레스 06h에, 비액티브 파일 선택 레지스터는 어드레스 07h에, 그리고 비액티브 뱅크 선택 레지스터(I_BSR)는 어드레스 08h에 저장된다. 도 5의 실시예에서, 어드레스 0Ch 내지 0Fh의 레지스터들은 모든 메모리 뱅크들에 메모리 매핑되지만, 반면에 각 뱅크는 메모리 위치들 10h 내지 1Fh에서 개별의 범용 레지스터들을 구비한다. 또한, 어드레스들 00h 내지 0Bh의 특수 기능 레지스터들의 메모리 매핑은 모든 뱅크들에 대해 동일한 것은 아니다. 단지 뱅크들 "000"와 "010"만이 이들 어드레스들에 대해 동일한 메모리 매핑을 갖는다. 다른 레지스터들 또는 더 많은 레지스터들이 다른 실시예에들에 따른 컨텍스트를 위해 선택될 수 있다.
도 6 및 도 7은 제1의 12 메모리 매핑된 특수 기능 레지스터들만의 더 상세한 리스트를 도시한다. 다시, 컨텍스트는 4개의 레지스터들, 작업 레지스터(W), 뱅크 선택 레지스터(BSR), 상태 레지스터(STATUS) 및 파일 선택 레지스터(FSR)로 이루어진다. 이 실시예에 따르면, 다시 액티브 컨텍스트의 2개의 레지스터들(STATUS, FSR)만이 도 6 및 도 7에 도시된 바와 같이, 각각의 어드레스들(03h, 04h)에서 모든 메모리 뱅크들로 메모리 매핑되지만, 반면에 4개의 비-메모리 매핑된 레지스터들(W, TRIS, OPTION, BSR)은 도 6 및 도 7의 테이블에 도시된 바와 같이, 여전히 "모든 뱅크들에" 제공될 수 있다. 비액티브 컨텍스트는 선형화된(linearized) 어드레스들(61h, 66h, 67h, 68h)에 있는 마지막 메모리 뱅크로 단지 메모리 매핑된다.
다양한 실시예들에 따르면, 추가의 명령어들이 상술한 바와 같이 개선된 인터럽트 기능성을 갖는 기본 마이크로컨트롤러에 제공될 수 있다. 예를 들면, 복귀(Return), 인터럽트로부터의 복귀(Return from Interrupt) 및 리터럴을 BSR로 이동(Move Literal to BSR) 명령어들이 또한 인터럽트들과 다른 컨텍스트 스위칭 기능성들을 지원하기 위해 이러한 마이크로컨트롤러 코어에 추가될 수 있다. 그러므로 다양한 실시예들에 따르면, 중요한 특수 기능 레지스터들의 컨텍스트 스위칭은 인터럽트 서비스 루틴 출입뿐만 아니라 소프트웨어에 의해 제어되는 다른 이벤트들을 위해서도 추가될 수 있다.
다양한 실시예들에 따르면, 3개의 새로운 명령어들이 기본 마이크로컨트롤러에 추가될 수 있다:
MOVLB - 리터럴을 BSR 레지스터로 이동: 이 명령어는 일정한 값을 뱅크 선택 레지스터 내에 기록하여 뱅크 선택 레지스터를 직접 제어하며, 이에 의해 강제로 뱅크 스위치를 행한다. 12비트 오피코드(Opcode)는 12'h010-12'h017를 이용할 수 있다.
RETURN - 요청로부터의 복귀(Return from CALL): 이 명령어는 서브루틴 요청으로부터 복귀하며, 여기서 기본 마이크로컨트롤러(the baseline)는 단지 마지막 프로그램 위치로부터 작업 레지스터 내로 바이트를 복귀시키는 RETLW가 제공된다. 12비트 오피코드(Opcode)는 12'h01E를 사용할 수 있다.
RETFIE - 인터럽트로부터의 복귀: 이 명령어는 인터럽트로부터 복귀하며, 여기서 상술한 바와 같이, 종래의 기본 디바이스들은 인터럽트들을 구비하지 않았다. 12비트 오피코드(Opcode)는 12'h01F를 사용할 수 있다.
인터럽트 컨텍스트 스위칭은 다음과 같은 다양한 실시예들에 따라 구현된다: 인터럽트 서비스 루틴으로부터 실행될 때에는 선택된 SFR들 중 제2 복사 (컨텍스트)가 사용된다. 예를 들면, FSR, STATUS, BSR 및 W 레지스터들이 다양한 실시예들에 따른 개선된 마이크로컨트롤러 디바이스 상에서 교환될 수 있다. 서비스 루틴의 진입 시와 퇴출 시에 현재의 컨텍스트를 저장하고 복구시키기 위해 소위 섀도우 레지스터들을 사용하는 것은 PIC16F1xxx 라인과 같은 종래 기술의 디바이스들로부터 잘 알려져 있지만, 본 발명에 따른 다양한 실시예들은 다양한 메모리 뱅크들 중 하나에 구현될 수 있는 제2 레지스터 세트를 교환하는 것을 가능하게 한다. 그러므로, 각각의 트리거 시에 설정된 메인 컨텍스트 레지스터 대신에 제2 컨텍스트 레지스터 세트의 컨텐츠가 이용되는 진정한 컨텍스트 스위치가 일어난다. 따라서 인터럽트 루틴은 이들 레지스터들을 먼저 초기화할 필요 없이 이들 레지스터들의 상이한 모든 세트의 값들을 이용할 수 있다. 메인 프로그램용의 값들은 교환 메커니즘을 통해 유사하게 처리될 수 있다.
2개의 레지스터 교환 트리거 소스들:
- 인터럽트 상의 진로 변경(vectoring)
- 인터럽트 명령어로부터의 복귀가 있을 수 있다.
각 컨텍스트는 컨텍스트의 각각의 소스에 의해 트리거될 수 있다. 이 실시예는 2개의 컨텍스트를 사용한다. 또 하나의 실시예에 따르면, 4개의 컨텍스트: 인터럽트0, 인터럽트1, 인터럽트2 및 메인을 사용할 수 있다.
다양한 실시예들에 따르면, 비액티브 컨텍스트는 도 7에 도시된 바와 같이, I_W, I_STATUS, I_FSR 및 I_BSR 레지스터들을 통해 특수 기능 레지스터들의 뱅크 3에서 항상 볼 수 있다.
다양한 실시예들에 따른 인터럽트 기능은 디폴트에 의해 인에이블될 수 있다. 종래의 기본 디바이스들의 경우 임의의 인터럽트 소스들은 디바이스를 리셋되게 했다. GIE 비트을 세팅함으로써, 디바이스는 대신에 어드레스 0x004로 진로를 변경하여 인터럽트 서비스 루틴(ISR)의 실행을 가능하게 한다.
인터럽트로부터의 복귀(RETFIE) 명령어는 ISR로부터 복귀하고 GIE 비트를 세팅하는데 사용되어 다음의 인터럽트들을 인에이블한다. 디바이스가 ISR로부터 실행하는 동안에는 부차적인 세트의 W, STATUS, FSR, BSR 레지스터들은 CPU에 의해 사용된다. 이들 레지스터들은 동일 위치에서 여전히 어드레싱되지만, ISR 내부의 사용을 위한 불변의 독자적인 값들을 유지한다. 이는 이 레지스터들의 컨텐츠가 본류 실행시에 인터럽트들에 의한 영향을 받지 않게 할 수 있다. 다른 컨텍스트의 레지스터들의 컨텐츠들은 I_W, I_STATUS, I_FSR 및 I_BSR 레지스터들을 통해 SFR 맵의 뱅크 3에 보여질 수 있다. ISR로부터 실행되고 있을 때에는 그들은 본류 컨텍스트를 보여줄 것이고, 또한 그 역도 동일하다.
일실시예에 따르면, 4개의 인터럽트 소스들: 타이머(TMR0), 아날로그 디지털 변환기(ADC), 비교기들, 및 핀 변화시의 인터럽트를 이용할 수 있다. 인터럽트들은 INTEI_REG 레지스터의 xxIE 비트들을 사용하여 인에이블된다. 핀 변화시의 인터럽트는 RAIF 비트를 기능하게 할 수 있도록 옵션 레지스터(OPTION)의 RAWU 비트를 이용하여 인에이블될 수 있다. 인터럽트 생성이 도 6에 도시된 바와 같이, CM1CON0 및 CM2CON0 레지스터들에 인에이블되면, 비교기 인터럽트 플래그가 사용될 수 있다.
INTCON의 GIE 비트는 인터럽트 서비스 루틴으로 진로 변경을 인에이블한다. WUR 비트가 세팅되면, 슬립(sleep)에서의 임의의 인에이블된 인터럽트 소스가 디바이스로 하여금 웨이크 업 및 리셋하게 할 것이다. 이 기능은 기존의 기본 동작과 유사하다.
도 8은 내부 프로그래밍에 따른 상이한 우선 순위의 가능한 구현을 도시한다. 여기에 3개의 제어 비트들, 저 전력 모드를 나타내는 "슬립중임(In Sleep)"과, 인터럽트를 인에이블하는 "GIE"와, 그리고 웨이크 업 리셋을 나타내는 "WUR"이 제공된다. 도 8의 테이블은 이 비트들의 상이한 세팅들에 따른 연관된 기능을 도시한다. 따라서 디바이스 리셋 동작, 진로 변경 동작 및 연속된 동작 중 어느 하나가 각각의 세팅에 따라 일어날 수 있다.

Claims (22)

  1. 마이크로프로세서 또는 마이크로컨트롤러 디바이스로서,
    중앙 처리 유닛(CPU);
    상기 CPU와 결합되는 데이터 메모리, - 상기 데이터 메모리는 복수의 메모리 뱅크들로 분할되며, 뱅크 선택 레지스터는 어느 메모리 뱅크가 상기 CPU와 현재 결합되는지를 결정함 -; 및
    제1 세트의 특수 기능 레지스터들과 제2 세트의 특수 기능 레지스터들을 포함하고,
    컨텍스트 스위치가 일어나면 상기 제1 세트 및 상기 제2 세트 중 어느 하나의 세트의 특수 기능 레지스터들이 상기 CPU를 위한 액티브 컨텍스트 레지스터들로서 선택되고 그리고 각각의 다른 하나의 세트의 특수 기능 레지스터들이 비액티브 컨텍스트 레지스터들로서 선택되며, 상기 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들이 상기 데이터 메모리의 2개의 메모리 뱅크들보다 많은 메모리 뱅크들로 메모리 매핑되고 그리고 상기 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 상기 데이터 메모리 내의 적어도 하나의 메모리 위치로 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  2. 제1항에 있어서,
    상기 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크로만 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  3. 제1항에 있어서,
    상기 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들은 상기 데이터 메모리의 모든 메모리 뱅크들로 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  4. 제1항에 있어서,
    상기 컨텍스트 레지스터는 작업 레지스터, 상태 레지스터, 간접 어드레스를 정의하기 위한 파일 선택 레지스터 및 뱅크 선택 레지스터를 포함하는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  5. 제4항에 있어서,
    상기 액티브 컨텍스트 레지스터들 중 상기 상태 레지스터와 상기 파일 선택 레지스터만이 상기 데이터 메모리의 모든 메모리 뱅크들로 메모리 매핑되고, 상기 작업 레지스터와 상기 뱅크 선택 레지스터는 비-메모리 매핑된 레지스터들인, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  6. 제1항에 있어서,
    상기 비액티브 컨텍스트 레지스터들은 상기 데이터 메모리의 마지막 메모리 뱅크로 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  7. 제1항에 있어서,
    상기 CPU와 결합되는 인터럽트 유닛을 더 포함하고,
    상기 컨텍스트 스위치는 인터럽트에 의해 야기되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  8. 제1항에 있어서,
    상기 컨텍스트 스위치는 소프트웨어에 의해 야기되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  9. 제1항에 있어서,
    상기 디바이스는 4개의 메모리 뱅크들을 포함하는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  10. 제9항에 있어서,
    상기 비액티브 컨텍스트 레지스터들은 제4 뱅크 내로만 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스.
  11. 중앙 처리 유닛(CPU); 상기 CPU와 결합되는 데이터 메모리, - 상기 데이터 메모리는 복수의 메모리 뱅크들로 분할됨 -; 제1 세트의 특수 기능 레지스터들과 제2 세트의 특수 기능 레지스터들, - 상기 제1 세트 및 상기 제2 세트 중 어느 하나의 세트의 특수 기능 레지스터들이 액티브 컨텍스트를 형성하고, 각각의 다른 하나의 세트가 비액티브 컨텍스트를 형성함 - 을 포함하는 마이크로프로세서 또는 마이크로컨트롤러 디바이스를 동작시키는 방법으로서,
    상기 제1 세트 및 상기 제2 세트 중 어느 하나의 세트의 특수 기능 레지스터들을 액티브 컨텍스트로서 선택하고 그리고 각각의 다른 하나의 세트의 레지스터들을 비액티브 컨텍스트로서 선택하며, 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들이 상기 데이터 메모리의 2개의 메모리 뱅크들보다 많은 메모리 뱅크들로 메모리 매핑되고 그리고 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 상기 데이터 메모리 내의 적어도 하나의 메모리 위치로 메모리 매핑되는 단계; 및
    컨텍스트 스위치가 일어나면, 각각 액티브 컨텍스트와 비액티브 컨텍스트로서의 상기 제1 세트의 레지스터들 및 상기 제2 세트의 레지스터들 사이를 스위칭하는 단계를 포함하는 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  12. 제11항에 있어서,
    상기 비액티브 컨텍스트 레지스터들의 모든 레지스터들은 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크로만 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  13. 제11항에 있어서,
    인터럽트에 의해 상기 컨텍스트 스위치를 야기하는 단계를 더 포함하는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  14. 제11항에 있어서,
    상기 컨텍스트 스위치는 소프트웨어에 의해 야기되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  15. 제11항에 있어서,
    상기 디바이스는 4개의 메모리 뱅크들을 포함하는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  16. 제15항에 있어서,
    상기 비액티브 컨텍스트 레지스터들은 제4 뱅크 내로만 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  17. 제11항에 있어서,
    상기 액티브 컨텍스트 레지스터들 중 적어도 일부 레지스터들은 상기 데이터 메모리의 모든 메모리 뱅크들로 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  18. 제11항에 있어서,
    상기 컨텍스트 레지스터는 작업 레지스터, 상태 레지스터, 간접 어드레스를 정의하기 위한 파일 선택 레지스터 및 뱅크 선택 레지스터를 포함하는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  19. 제18항에 있어서,
    상기 액티브 컨텍스트 레지스터들 중 상기 상태 레지스터와 상기 파일 선택 레지스터만이 상기 데이터 메모리의 모든 메모리 뱅크들로 메모리 매핑되고, 상기 작업 레지스터와 상기 뱅크 선택 레지스터는 비-메모리 매핑된 레지스터들인, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  20. 제11항에 있어서,
    상기 비액티브 컨텍스트 레지스터들은 상기 데이터 메모리의 마지막 메모리 뱅크로 메모리 매핑되는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  21. 제11항에 있어서,
    상기 액티브 컨텍스트를 통해 상기 각각의 메모리 뱅크를 선택하여 상기 비액티브 컨텍스트의 레지스터들에 액세스하고 그리고 상기 비액티브 컨텍스트 레지스터들에 액세스하는 단계를 더 포함하는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
  22. 제11항에 있어서,
    복수의 인터럽트들을 발생시키는 단계를 포함하고,
    인터럽트가 일어나면 컨텍스트 스위치가 생기고, 인터럽트 루틴이 실행되어 상기 인터럽트 루틴이 상기 인터럽트 루틴의 이전 실행 동안에 선택된 레지스터 세트에 저장된 값들을 이용하는, 마이크로프로세서 또는 마이크로컨트롤러 디바이스의 동작 방법.
KR1020147027368A 2012-03-21 2013-03-19 컨텍스트 스위치를 구비한 마이크로컨트롤러 KR20140135796A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261613802P 2012-03-21 2012-03-21
US61/613,802 2012-03-21
US13/830,377 US9195497B2 (en) 2012-03-21 2013-03-14 Microcontroller with context switch
US13/830,377 2013-03-14
PCT/US2013/032876 WO2013142450A1 (en) 2012-03-21 2013-03-19 Microcontroller with context switch

Publications (1)

Publication Number Publication Date
KR20140135796A true KR20140135796A (ko) 2014-11-26

Family

ID=49213440

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027368A KR20140135796A (ko) 2012-03-21 2013-03-19 컨텍스트 스위치를 구비한 마이크로컨트롤러

Country Status (7)

Country Link
US (1) US9195497B2 (ko)
EP (1) EP2828740B1 (ko)
JP (1) JP6143841B2 (ko)
KR (1) KR20140135796A (ko)
CN (1) CN104303143B (ko)
TW (1) TWI574152B (ko)
WO (1) WO2013142450A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10297003B2 (en) * 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches
CN105868003B (zh) * 2016-03-25 2019-08-13 浙江大学 一种基于tms320c6747的任务上下文切换优化方法
CN117555599B (zh) * 2024-01-10 2024-04-05 睿思芯科(成都)科技有限公司 加快关键数据访问速度的芯片设计方法、系统及相关设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115506A (en) 1990-01-05 1992-05-19 Motorola, Inc. Method and apparatus for preventing recursion jeopardy
US6134653A (en) * 1998-04-22 2000-10-17 Transwitch Corp. RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
US6553487B1 (en) * 2000-01-07 2003-04-22 Motorola, Inc. Device and method for performing high-speed low overhead context switch
GB2402785B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Processor switching between secure and non-secure modes
AU2003278342A1 (en) * 2002-11-18 2004-06-15 Arm Limited Security mode switching via an exception vector
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US7996651B2 (en) 2007-11-30 2011-08-09 Microchip Technology Incorporated Enhanced microprocessor or microcontroller
US8539210B2 (en) * 2007-11-30 2013-09-17 Microchip Technology Incorporated Context switching with automatic saving of special function registers memory-mapped to all banks
TWI493351B (zh) * 2009-11-16 2015-07-21 Via Tech Inc 通用串列匯流排主機控制方法和通用串列匯流排主機控制器

Also Published As

Publication number Publication date
JP2015511049A (ja) 2015-04-13
JP6143841B2 (ja) 2017-06-07
US9195497B2 (en) 2015-11-24
CN104303143B (zh) 2018-07-24
TWI574152B (zh) 2017-03-11
EP2828740A1 (en) 2015-01-28
TW201351139A (zh) 2013-12-16
US20130254476A1 (en) 2013-09-26
EP2828740B1 (en) 2024-04-24
WO2013142450A1 (en) 2013-09-26
CN104303143A (zh) 2015-01-21

Similar Documents

Publication Publication Date Title
US8443423B2 (en) Secure information processing
ES2903001T3 (es) Aparatos y métodos de hardware para detección de corrupción de memoria
KR101531372B1 (ko) 개선된 마이크로프로세서 또는 마이크로컨트롤러
EP2396723B1 (en) Microcontroller with special banking instructions and method therefor
US9910801B2 (en) Processor model using a single large linear registers, with new interfacing signals supporting FIFO-base I/O ports, and interrupt-driven burst transfers eliminating DMA, bridges, and external I/O bus
KR101564693B1 (ko) 개선된 마이크로프로세서 또는 마이크로컨트롤러
CN105190551B (zh) 具有存储器区域交换机制的双引导系统
JP6143841B2 (ja) コンテキストスイッチを伴うマイクロコントローラ
CN104866357B (zh) 数字信号处理器的boot启动方法及其启动装置
TWI467475B (zh) 無關於特權位準的區段暫存器讀與寫的系統、設備及方法
CN111984317A (zh) 用于对存储器中的数据进行寻址的系统和方法
EP3323039B1 (en) A method for enlarging data memory in an existing microprocessor architecture with limited memory addressing
JPH09505428A (ja) ページアドレスモードを有するマイクロコントローラ
Cates et al. An ASIC RISC-based I/O processor for computer applications

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