KR101668317B1 - 뱅크형 메모리에서의 선형 메모리를 갖는 마이크로컨트롤러 - Google Patents

뱅크형 메모리에서의 선형 메모리를 갖는 마이크로컨트롤러 Download PDF

Info

Publication number
KR101668317B1
KR101668317B1 KR1020117012463A KR20117012463A KR101668317B1 KR 101668317 B1 KR101668317 B1 KR 101668317B1 KR 1020117012463 A KR1020117012463 A KR 1020117012463A KR 20117012463 A KR20117012463 A KR 20117012463A KR 101668317 B1 KR101668317 B1 KR 101668317B1
Authority
KR
South Korea
Prior art keywords
memory
register
address
special function
memory banks
Prior art date
Application number
KR1020117012463A
Other languages
English (en)
Other versions
KR20110128787A (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 KR20110128787A publication Critical patent/KR20110128787A/ko
Application granted granted Critical
Publication of KR101668317B1 publication Critical patent/KR101668317B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing

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)
  • Microcomputers (AREA)

Abstract

마이크로컨트롤러는, 복수의 메모리 뱅크들로 분할된 데이터 메모리; 상기 데이터 메모리에 어드레스를 제공하기 위한 어드레스 멀티플렉서; 상기 어드레스 멀티플렉서의 제1 입력에 제1 부분 어드레스를 제공하는 명령어 레지스터; 상기 데이터 메모리 매핑되지 않고, 상기 어드레스 멀티플렉서의 상기 제1 입력에 제2 부분 어드레스를 제공하기 위한 뱅크 선택 레지스터; 및 상기 데이터 메모리에 매핑된 복수의 특수 기능 레지스터들을 포함하고, 상기 복수의 특수 기능 레지스터들은 상기 어드레스 멀티플렉서의 제2 입력과 연결된 간접 액세스 레지스터를 포함하고, 상기 데이터 메모리는 특수 기능 레지스터들이 매핑되지 않은 선형 데이터 메모리 블록을 형성하는 상기 복수의 메모리 뱅크들 중 둘 이상의 메모리 뱅크를 포함한다.

Description

뱅크형 메모리에서의 선형 메모리를 갖는 마이크로컨트롤러{MICROCONTROLLER WITH LINEAR MEMORY IN A BANKED MEMORY}
본 발명은 집적형 마이크로컨트롤러들에 관한 것으로, 특히 마이크로컨트롤러의 메모리 액세스에 관한 것이다.
선형적으로 액세스가능한 데이터 메모리 공간은, 많은 수의 메모리 바이트들(예를 들면, RAM(random access memory) 바이트들)이 어드레스 공간에 연속적으로 배치되고 어드레스가능할 것을 요구한다. 그리고, 선형 메모리는 그 길이가 RAM의 사이즈에 의존하는 어드레스를 통해 완전히 어드레싱될 수 있다. 긴 명령어들(long instructions)을 갖는 마이크로컨트롤러들(예를 들면, 32 비트 마이크로컨트롤러들 또는 다수의 명령어 워드들을 갖는 마이크로컨트롤러들)은 그러한 긴 어드레스를 명령어의 OP 코드 내에 용이하게 내장할 수 있다. 하지만, 작은 아키텍쳐들(예를 들면, 효율적인 제한된 명령어 길이를 갖는 8 비트 아키텍쳐들)은 긴 어드레스들의 저장을 허용하지 않는 예를 들어 10-15 비트의 명령어 사이즈를 종종 이용한다. 다수의 워드 명령어들이 보다 긴 어드레스들을 수용하더라도, 이는 컴팩트한 코딩에 반대되며, 따라서 그러한 프로세서 아키텍쳐들은 큰 선형의 어드레스 공간을 직접적으로 어드레싱할 수 없다. 따라서, 메모리 뱅킹은 큰 메모리에의 완전한 액세스를 제공하기 위한 효율적인 수단이다. 메모리 뱅킹에 있어서, 제한된 양, 즉 하나의 메모리 뱅크만이 포인터에 의해 이용가능하게 되어 있다. 그리고, 명령어는 선택된 메모리 뱅크 내의 모든 메모리 위치들을 액세스하기에 충분한 비트들을 포함할 수 있다. 선택된 뱅크 외부에 있는 메모리 위치들로 스위칭하기 위해서는 포인터가 수정되어야 한다.
예를 들면, 많은 RISC 아키텍쳐 마이크로컨트롤러들은 그들의 명령어들을 통해 제한된 양의 바이트(예를 들면, 32 또는 64 바이트)의 메모리만을 직접 액세스할 수 있다. 32 또는 64 바이트의 다중 뱅크들을 이용함으로써, 부가적인 메모리가 액세스될 수 있다. 마이크로컨트롤러들은 일반적으로 주변기기들을 갖는 마이크로프로세서 또는 중앙처리장치(CPU)와 메모리의 단일 칩상의 결합물이다. 따라서, 메모리 뱅킹 개념을 이용하는 마이크로컨트롤러들은, 예를 들어 이들 주변기기들 및 내부 기능들의 제어를 위해 사용되는 많은 특수 기능 레지스터들이 명령어 세트에 의해 액세스되어야 한다는 문제에 직면한다. 따라서, 이들 특수 기능 레지스터들은 데이터 메모리에 매핑함으로써 이용가능하게 되어 있다. 프로그램을 실행시키는 동안 일부 특수 기능 레지스터들에의 액세스는 중요하기 때문에, 많은 마이크로컨트롤러들에서 이들 특수 기능 레지스터들 중 일부는 항상 이용가능할 필요가 있다. 예를 들면, 특수 기능 레지스터들이 메모리를 통해서만 액세스가능하다면, 메모리 뱅크를 선택하는데 사용되는 특수 기능 레지스터는 항상 액세스가능하거나 또는 그렇지 않으면 사용자는 이 레지스터를 이용가능하게 만들지 못하는 메모리 뱅크에 매달릴 것이다. 이를 수용하기 위해, 많은 마이크로컨트롤러들에서, 데이터 메모리 매핑은 최소 개수의 특수 기능 레지스터들(SFR)을 메모리의 각 뱅크에 배치한다. 하지만, 비 매핑된(non-mapped) 메모리 블록들은 메모리 매핑된(memory-mapped) 레지스터들에 의해 분리되기 때문에 이는 데이터 메모리를 비연속적인 상태가 되게 한다.
따라서, 메모리 뱅크보다 큰 선형 메모리 공간을 제공하는 뱅크형 메모리를 구비한 마이크로컨트롤러가 요구된다.
일실시예에 따르면, 마이크로컨트롤러는: 복수의 메모리 뱅크들로 분할되고 상기 복수의 메모리 뱅크들 중 제1 세트의 메모리 뱅크들 및 제2 세트의 메모리 뱅크들을 포함하는 데이터 메모리; 상기 데이터 메모리에 어드레스를 제공하기 위한 어드레스 멀티플렉서; 상기 어드레스 멀티플렉서의 제1 입력부에 제1 부분 어드레스를 제공하는 명령어 레지스터; 상기 어드레스 멀티플렉서의 상기 제1 입력부에 제2 부분 어드레스를 제공하기 위해 상기 데이터 메모리에 매핑되지 않는 뱅크 선택 레지스터; 및 상기 어드레스 멀티플렉서의 제2 입력부와 결합된 간접 메모리 어드레스 레지스터를 포함하고 상기 데이터 메모리에 매핑되는 복수의 특수 기능 레지스터들을 포함하고, 적어도 하나의 특수 기능 레지스터는 동일한 메모리 뱅크 어드레스에 있는 상기 제1 세트의 메모리 뱅크들 중 하나보다 많은 메모리 뱅크에 메모리 매핑되고, 상기 제2 세트의 메모리 뱅크들은 어떠한 특수 기능 레지스터들도 매핑되지 않는 선형 데이터 메모리의 블록을 형성하는 것을 특징으로 한다.
추가 실시예에 따르면, 상기 데이터 메모리는 n개의 메모리 뱅크들을 포함하고, m개의 메모리 뱅크들은 상기 선형 데이터 메모리의 블록을 형성한다. 추가 실시예에 따르면, n=8이고 m=4이다. 추가 실시예에 따르면, 상기 특수 기능 레지스터들은 상기 제1 세트의 메모리 뱅크들의 모든 메모리 뱅크들 중 하위 부분에 메모리 매핑될 수 있다. 추가 실시예에 따르면, 상기 제1 세트의 메모리 뱅크들의 모든 메모리 뱅크들 중 짝수 번째 메모리 뱅크들 및 홀수 번째 메모리 뱅크들 각각은 서로 다른 세트의 메모리 매핑된 특수 기능 레지스터들을 포함할 수 있다. 추가 실시예에 따르면, 상기 특수 기능 레지스터들은 가상 레지스터를 포함하고, 상기 가상 레지스터에의 읽기 또는 기록 액세스는 상기 간접 메모리 어드레스 레지스터를 이용하여 간접 데이터 메모리 액세스를 야기한다. 추가 실시예에 따르면, 상기 특수 기능 레지스터들은 플래시 메모리의 프로그래밍을 수행하기 위한 레지스터들을 포함할 수 있다. 추가 실시예에 따르면, 상기 특수 기능 레지스터들은 프로그램 카운터 레지스터, 상태 레지스터, 타이머 레지스터, 포트(port) 레지스터, 및 발진기 교정 레지스터(oscillator calibration register)로 이루어진 그룹에서 선택될 수 있다. 추가 실시예에 따르면, 상기 마이크로컨트롤러는 12-비트 명령어 워드들을 이용하는 8-비트 마이크로컨트롤러일 수 있다. 추가 실시예에 따르면, 상기 마이크로컨트롤러는 8-비트 마이크로컨트롤러이고, 메모리 뱅크는 32 바이트들을 포함할 수 있다. 추가 실시예에 따르면, 상기 홀수 번째 메모리 뱅크들만이 플래시 메모리에 액세스하기 위한 특수 기능 레지스터들을 포함할 수 있다. 추가 실시예에 따르면, 상기 짝수 번째 메모리 뱅크들만이 포트에 액세스하기 위한 특수 기능 레지스터를 포함할 수 있다. 추가 실시예에 따르면, 상기 짝수 번째 메모리 뱅크들만이 발진기 교정을 위한 특수 기능 레지스터를 포함할 수 있다. 추가 실시예에 따르면, 상기 짝수 번째 메모리 뱅크들만이 타이머를 위한 특수 기능 레지스터를 포함할 수 있다.
또 하나의 실시예에 따르면, 마이크로컨트롤러용 데이터 메모리를 어드레싱하기 위한 방법으로서, 상기 데이터 메모리는 복수의 메모리 뱅크들로 분할되고, 상기 데이터 메모리는 상기 복수의 메모리 뱅크들 중 제1 세트의 메모리 뱅크들 및 제2 세트의 메모리 뱅크들을 포함하고, 상기 마이크로컨트롤러는 상기 데이터 메모리에 어드레스를 제공하기 위한 어드레스 멀티플렉서, 상기 어드레스 멀티플렉서의 제1 입력부에 제1 부분 어드레스를 제공하는 명령어 레지스터, 상기 어드레스 멀티플렉서의 제1 입력부에 제2 부분 어드레스를 제공하기 위한 뱅크 선택 레지스터, 및 상기 어드레스 멀티플렉서의 제2 입력부와 결합된 간접 메모리 어드레스 레지스터를 포함하고, 상기 방법은: 적어도 하나의 특수 기능 레지스터를, 상기 간접 메모리 어드레스 레지스터를 포함하며 동일한 메모리 뱅크 어드레스에 있는 상기 제1 세트의 메모리 뱅크들 중 하나보다 많은 메모리 뱅크에 매핑하는 단계; 및 어떠한 특수 기능 레지스터도 상기 제2 세트의 메모리 뱅크들에 메모리 매핑하지 않음으로써 선형 메모리 블록을 형성하는 단계를 포함하고, 직접 어드레싱을 위해서는, 상기 뱅크 선택 레지스터에 의해 메모리 뱅크를 선택하는 단계; 및 상기 명령어 레지스터로부터의 상기 제1 부분 어드레스 및 상기 뱅크 선택 레지스터로부터의 상기 제2 부분 어드레스에 의해 형성된 어드레스로 상기 멀티플렉서를 통해 상기 선택된 메모리 뱅크를 어드레싱하는 단계를 포함하고, 간접 어드레싱을 위해서는, 상기 간접 메모리 어드레스 레지스터에 의해 제공된 어드레스를 선택하여 상기 데이터 메모리를 간접적으로 어드레싱함으로써, 상기 제2 세트의 메모리 뱅크들에 의해 형성된 적어도 상기 선형 메모리 블록의 전체에 액세스하는 것을 가능하게 하는 단계를 포함하는 것을 특징으로 할 수 있다.
추가 실시예에 따르면, 상기 데이터 메모리는 n개의 메모리 뱅크들을 포함하고, m개의 메모리 뱅크들은 상기 선형 메모리 블록을 형성할 수 있다. 추가 실시예에 따르면, n=8이고 m=4이다. 추가 실시예에 따르면, 상기 방법은 상기 제1 세트의 메모리 뱅크들의 모든 메모리 뱅크들 중 하위 부분에 상기 특수 기능 레지스터들을 메모리 매핑하는 단계를 포함할 수 있다. 추가 실시예에 따르면, 상기 제1 세트의 메모리 뱅크들 중 짝수 번째 메모리 뱅크들 및 홀수 번째 메모리 뱅크들 각각은 서로 다른 세트의 메모리 매핑된 특수 기능 레지스터들을 포함할 수 있다. 추가 실시예에 따르면, 가상 레지스터에의 읽기 또는 기록 액세스에 의해 간접 어드레싱이 수행될 수 있다. 추가 실시예에 따르면, 상기 특수 기능 레지스터들은 플래시 메모리의 프로그래밍을 수행하기 위한 레지스터들을 포함할 수 있다. 추가 실시예에 따르면, 상기 특수 기능 레지스터들은 프로그램 카운터 레지스터, 상태 레지스터, 타이머 레지스터, 포트 레지스터, 및 발진기 교정 레지스터로 이루어진 그룹에서 선택될 수 있다. 추가 실시예에 따르면, 상기 마이크로컨트롤러는 12-비트 명령어 워드들을 이용하는 8-비트 마이크로컨트롤러일 수 있다. 추가 실시예에 따르면, 상기 마이크로컨트롤러는 8-비트 마이크로컨트롤러이고, 메모리 뱅크는 32 바이트들을 포함할 수 있다. 추가 실시예에 따르면, 상기 홀수 번째 메모리 뱅크들만이 플래시 메모리에 액세스하기 위한 특수 기능 레지스터들을 포함할 수 있다. 추가 실시예에 따르면, 상기 짝수 번째 메모리 뱅크들만이 포트에 액세스하기 위한 특수 기능 레지스터를 포함할 수 있다. 추가 실시예에 따르면, 상기 짝수 번째 메모리 뱅크들만이 발진기 교정을 위한 특수 기능 레지스터를 포함할 수 있다. 추가 실시예에 따르면, 상기 짝수 번째 메모리 뱅크들만이 타이머를 위한 특수 기능 레지스터를 포함할 수 있다.
또 하나의 실시예에 따르면, 마이크로컨트롤러는, 복수의 메모리 뱅크들로 분할된 데이터 메모리로서, 상기 메모리내의 복수의 메모리 뱅크들은 매핑된 특수 기능 레지스터들이 없어 선형 메모리 블록을 형성하는 데이터 메모리; 상기 메모리를 통해서만 상기 마이크로컨트롤러에 의해 액세스될 수 있는, 상기 데이터 메모리에 매핑된 특수 기능 레지스터들로서, 간접 어드레싱 레지스터는 적어도 하나의 메모리 뱅크에 매핑된 특수 기능 레지스터들; 및 비 메모리 매핑된 뱅크 선택 레지스터를 포함하고, 상기 마이크로컨트롤러는 직접 어드레싱을 위해, 상기 뱅크 선택 레지스터에 의해 메모리 뱅크를 선택하고, 명령어 레지스터에 의해 제공된 어드레스에 의해 상기 선택된 메모리 뱅크를 어드레싱하도록 동작가능하며, 간접 어드레싱을 위해, 상기 메모리 매핑된 간접 어드레싱 레지스터에 의해 제공되는 어드레스를 이용하도록 동작가능하다.
추가 실시예에 따르면, 상기 데이터 메모리는 8개의 메모리 뱅크들을 포함하고 4개의 메모리 뱅크들은 상기 선형 메모리 블록을 형성한다. 추가 실시예에 따르면, 상기 특수 기능 레지스터들은 상기 4개의 메모리 뱅크들을 제외하고 모든 메모리 뱅크들의 하위 부분에 메모리 매핑될 수 있다. 추가 실시예에 따르면, 상기 4개의 메모리 뱅크들을 제외하고 모든 메모리 뱅크들의 짝수 및 홀수 메모리 뱅크들 각각은 서로다른 메모리 매핑된 특수 기능 레지스터 세트를 포함할 수 있다.
본 발명이 특정 실시예를 참조하여 특별히 도시되고 설명되었지만, 이러한 참조는 본 발명의 한정을 내포하지 않고 이러한 한정을 의미하지도 않는다. 본 발명은 이 기술분야의 당업자에 의해 형태와 기능에 있어서 수정물, 대체물, 및 균등물이 고려될 수 있다. 본 발명의 도시되고 설명된 실시예들은 단지 예로서, 본 발명의 범위를 한정하지 않는다.
도 1은 종래 마이크로컨트롤러의 블록도이다.
도 2는 일실시예에 따른 예시적인 마이크로컨트롤러의 블록도이다.
도 3은 종래의 뱅크형 메모리를 나타낸 블록도이다.
도 4는 짝수 및 홀수 뱅크들 각각이 서로 다른 세트의 특수 기능 레지스터들을 포함하는 예시적인 매핑을 나타낸 도면이다.
도 5는 일실시예에 따른 메모리 매핑을 나타낸 도면이다.
도 6은 일실시예에 따른 256 바이트 데이터 메모리의 예시적인 매핑을 나타낸 도면이다.
본 발명에 따르면, 직접 어드레싱에 사용되는 복수의 메모리 뱅크들 중 하나를 선택하기 위해 비 메모리 매핑된(non-memory mapped) 뱅크 선택 레지스터(BSR)가 제공된다. 메모리 매핑된 레지스터는 선택된 메모리 뱅크와 독립된 간접 어드레싱에 사용된다. 특수화된 뱅킹 명령어(예를 들면, "Move Literal to BSR Register(MOVLB)")의 부가는 메모리 뱅크 내의 모든 데이터 바이트들이 범용 데이터에 사용될 수 있게 하고, 이로써 어떠한 매핑된 특수 기능 레지스터들도 포함하지 않는 복수의 메모리 뱅크들 전체에 걸쳐 연속적인 어드레싱이 가능해진다. 따라서, 활성 메모리 뱅크를 선택하는 BSR 레지스터는 데이터 레지스터내에 매핑되지 않지만, 특수화된 명령으로 액세스될 수 있다.
따라서, 내부에 특수 레지스터들을 구비하지 않거나 필요로 하지 않는 복수의 메모리 뱅크들이 이용가능하다. 이것에 의해, 각 메모리 뱅크에서의 특수 기능 레지스터들(SFR)에 대한 관심 또는 필요성 없이, 메모리의 인접 뱅크들이 간접 어드레싱 레지스터(FSR)를 통해 간접적으로 어드레싱될 수 있다. 이는, 예를 들어 버퍼들, 테이블들, 스크래치 패드 영역들 등으로 사용하기 위한 대형 메모리 블록들의 어드레싱을 가능하게 한다. 따라서, 뱅크형 메모리 사이즈보다 큰 데이터 구조를 이용하는 모든 기능들이 구현될 수 있다.
도 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에 도시한 특정 실시예들과 결합될 수 있으며, 아래에 보다 상세히 설명될 것이다.
도 3은 종래의 마이크로컨트롤러에서의 데이터 메모리(125)의 구조 및 매핑을 나타낸 도면이다. 상술한 바와 같이, 적어도 일부 특수 기능 레지스터는 항상 이용가능하여야 하기 때문에, 모든 메모리 뱅크들의 어드레스 00h-0Fh의 첫번째 16개 데이터 바이트들은 16개의 특수 기능 레지스터들의 값을 포함한다. 이들 특수 기능 레지스터들은 메모리로부터 물리적으로 떨어져 있을 수 있다. 하지만, 매핑 아키텍쳐는 이들 16개의 특수 기능 레지스터들을 모든 메모리 뱅크들에 매핑한다. 도 2에 도시한 실시예에서, 모든 메모리 뱅크는 어드레스들 00h-0Fh에 있는 동일한 특수 기능 레지스터들을 포함한다. 하지만, 일부 특수 기능 레지스터들은 덜 중요하기 때문에 다른 뱅크에서만 액세스될 수 있다. 따라서, 17개 이상의 특수 기능 레지스터들이 첫번째 16개의 어드레스들에 매핑될 수 있다. 예를 들면, 모든 짝수 뱅크들 및 모든 홀수 뱅크들은 각각 동일한 매핑 구조를 갖는다.
도 4는 짝수 및 홀수 뱅크들 각각이 서로 다른 세트의 특수 기능 레지스터들을 포함하는 예시적인 매핑을 나타낸 도면이다. 예를 들면, 모든 짝수 뱅크들은 어드레스들 00h-06h에 매핑된 다음의 특수 기능 레지스터들을 가질 수 있다.
INDF - 액세스되면, FSR은 데이터 메모리를 간접적으로 어드레스하는데 사용된다.
TMR0 - 타이머 0 모듈 레지스터
PCL - 프로그램 카운터의 하위 비트들을 저장
STATUS - CPU의 전형적인 상태 비트들을 포함
FSR - 뱅크 선택 레지스터, 8개의 메모리 페이지 중 하나를 선택하기 위해 3 비트를 포함
OSCCAL - 발진기 교정 레지스터
PORTB - 포트 B 레지스터
다음 레지스터들은 모든 홀수 메모리 뱅크들의 어드레스들 00h-06h에 매핑될 수 있다.
00h - INDF - 액세스되면, FSR은 데이터 메모리를 간접적으로 어드레스하는데 사용된다.
01h - EECON - 플래시 메모리용 구성 비트들
02h - PCL - 프로그램 카운터의 하위 비트들을 저장
03h - STATUS - CPU의 전형적인 상태 비트들을 포함
04h - FSR - 뱅크 선택 레지스터, 메모리 페이지를 선택하기 위해 3 비트를 포함
05h - EEDATA - 플래시 메모리용 자기 기록 데이터 레지스터
06h - EEADR - 플래시 메모리용 자기 기록 어드레스
짝수 및 홀수 메모리 뱅크들에 대하여 나머지 어드레스들 07h-0Fh는 모두 동일하다. 도 3에 도시한 바와 같이, 각 뱅크의 상위 어드레스들 10h-1Fh은 개별적인 범용 레지스터들을 포함한다. 하지만, 이들은 개별적인 소형 메모리 블록들을 형성하며 하나의 선형 메모리 블록을 형성하지는 않는다. 따라서, 예를 들어 테이블이 한 뱅크내의 범용 레지스터들의 최대 사이즈 보다 크면, 이 테이블은 둘 이상의 뱅크에 분배되어야 하며 이러한 테이블을 액세스하는데 번거로운 프로그래밍이 필요하다.
도 2는 이러한 한계를 극복한 마이크로컨트롤러의 예시적인 실시예를 나타낸 도면이다. 일반적으로, 동일한 요소들은 동일한 참조부호를 가지고 있다. 도 2에 도시한 데이터 메모리 RAM(225)은 도 1에 도시한 메모리와 동일할 수 있다. 하지만, 이 RAM(225)이 다르게 매핑되었다는 것을 나타내기 위해 다른 참조부호가 사용되었으며, 아래에 보다 상세히 설명될 것이다. 이제, 이 데이터 메모리는 특수 기능 레지스터들이 매핑되지 않은 복수의 순차적인 메모리 뱅크들로 이루어진 선형 메모리 블록을 포함한다. 부가적인 뱅크 선택 레지스터(BSR)(210)가 제공되며, 여기서 이 레지스터는 전용 명령어를 통해 액세스될 수 있어 메모리 매핑되지 않는다. 이 레지스터(210)의 컨텐츠는 명령어 레지스터(135)로부터 하위 5개 비트를 수신하는 어드레스 멀티플렉서(220)에 어드레스의 상위 3개 비트를 제공한다. 이제, 특수 기능 레지스터 FSR(245)는 현재 선택된 메모리 뱅크에 관계없이 전체 선형 데이터 메모리의 간접 어드레싱에 사용될 수 있는 8 비트 레지스터일 수 있다. 다른 실시예들에서, 이 레지스터는 비트 7을 "1"로 영구적으로 세트함으로써 선형 데이터 메모리를 형성하는 상위 4개 뱅크들을 액세스하도록 제한될 수 있다. 하지만, 이 레지스터는 그 자체로는 더이상 뱅크 선택 기능을 제공하지 못한다. 뱅크 선택은 각 뱅크 번호를 비 메모리 매핑된 뱅크 선택 레지스터(210)에 기록하는 것에 의해서만 행해진다. 따라서, 선형 메모리 블록내의 메모리 뱅크가 선택된 경우에도, 전용 명령어는 어떤 다른 메모리 뱅크에의 변경을 가능하게 한다.
도 5는 특수 기능 레지스터들이 데이터 메모리(225)에 어떻게 매핑될 수 있는지의 일실시예를 나타낸 도면이다. 이 실시예에서, 하위 4개의 뱅크들만이 특수 기능 레지스터들에의 액세스를 제공하기 위해 사용되는 반면에, 상위 4개의 뱅크들은 이제 선형의 연속적인 데이터 메모리 공간을 제공한다. 도 4는 직접 및 간접 어드레싱이 어떻게 수행되는지를 나타낸다. 여기서, 비 메모리 매핑된 레지스터 BSR(210)은 뱅크 선택 정보를 제공하며, 이로써 어드레스 멀티플렉서(220)에 상위 3개의 어드레스 비트들을 제공한다. 명령어 레지스터는 하위 5개의 어드레스 비트들을 제공한다. 멀티플렉서(220)는 데이터 메모리(225)를 어드레싱하는데 사용되는 8 비트 어드레스를 형성하기 위해 이들 두개의 어드레스 데이터 부분들을 조합한다. 다른 실시예들에서 어드레스를 형성하기 위해 보다 많거나 적은 비트들이 사용될 수 있다. 뱅크 선택 레지스터(210)가 하위 4개의 메모리 뱅크들 중 하나를 선택하면, 모든 어드레스들 00h-0Fh는 뱅크 0 또는 대안적으로 뱅크 0 또는 뱅크 1로 되돌아가서 매핑될 수 있으며, 도 6에 보다 상세히 설명될 것이다. 상술한 바와 같이, 상위 4개의 메모리 뱅크들은 그들에 매핑된 특수 기능 레지스터들이 없으며, 따라서 연속적인 선형의 데이터 메모리를 형성한다. 이 선형 메모리 블록은 뱅크 선택 레지스터(210)를 이용한 직접 어드레싱 및 명령어 op-코드에 제공된 어드레스 정보를 통해 여전히 액세스될 수 있다. 하지만, 직접 어드레싱은 현재 선택된 뱅크내에서만 수행되는 것으로 제한된다. 따라서, 선형 메모리 블록은 대안적으로 특수 기능 레지스터 FSR(245)을 통해 간접적으로 액세스될 수 있어 이제 선택된 메모리 뱅크에 관계없이 데이터 메모리(225)를 완전히 어드레싱할 수 있는 8 비트 어드레스를 저장할 수 있다. 따라서, 예를 들어 128개의 엔트리들을 갖는, 예를 들어 테이블, 스크래치 패드, 또는 버퍼는 간접 어드레싱을 통해 간단히 액세스될 수 있다. 이 특수 기능 레지스터(245)에 의한 전체 데이터 메모리에의 액세스는 특수 명령어를 통해 수행되거나 또는 그러한 명령어가 구현되지 않으면 상술한 특수 기능 레지스터 INDF에의 읽기 또는 기록 액세스를 통해 수행될 수 있다.
뱅크 선택 레지스터(210)가 메모리 매핑되지 않은 점 때문에, 상술한 바와 같이 특수한 OP 코드는 이 레지스터에 대하여 읽기 및 기록 기능을 수행하도록 지정되어 있다. 하나 이상의 전용 명령어들은 비(non)-메모리 매핑된 뱅크 선택 레지스터(210)에의 직접적인 액세스를 제공한다. 예를 들면, 단일 명령어 "Move Literal to BSR Register"(MOVLB)는 데이터를 뱅크 선택 레지스터(210)로 전달하는데 사용될 수 있다. 뱅크 선택 레지스터(210)의 이용가능 비트들은 데이터 메모리가 분할된 메모리 뱅크들의 개수에 의존한다. 도 5 및 6에 도시한 예에서, 데이터 메모리는 8개의 메모리 뱅크들로 분할되며, 각 뱅크는 32 바이트를 갖는다. 따라서, 이 실시예는 256 데이터 메모리 바이트들을 제공하며, 여기서 상위 4개의 뱅크들은 매핑된 특수 기능 레지스터들에 의해 인터럽트되지 않은 선형 메모리 블록을 형성하는 128 바이트를 제공한다.
명령어 MOVLB는 디코딩되면 뱅크 선택 레지스터에의 직접 액세스를 제공하며, 예를 들면, 레지스터(210)에 직접 리터럴을 기록하고, 여기서 예를 들어 리터럴의 하위 3 비트만 전달된다. 다른 코딩이 사용될 수 있으며 뱅크 선택 레지스터(210)에 읽고 및/또는 기록하기 위해 둘 이상의 명령어가 이용될 수 있다. 다른 구현들에 있어서, 보다 많은 메모리 뱅크들이 제공될 수 있으며 뱅크 선택 레지스터(210)는 모든 뱅크들을 어드레싱할 수 있도록 4 비트 이상을 가질 수 있다. 그 외의 부가적인 전용 명령어들이 제공될 수 있다. 예를 들면, 읽기 명령어, 또는 모든 타입의 산술 또는 논리 수정 명령어들(예를 들면, 증분, 감분, 마스킹, 또는 부울 함수)이 제공될 수 있다. 이를 위해, 도 2에 점선으로 나타낸 것과 같이 ALU(160)와 특수 기능 레지스터(210)의 부가적인 연결이 제공될 수 있다.
도 6은 뱅크들 0 및 2 각각이 뱅크들 1 및 3과 다른 세트의 특수 기능 레지스터들을 포함하는 256 바이트 데이터 메모리의 예시적인 매핑을 나타낸 도면이다. 예를 들면, 다음의 특수 기능 레지스터들은 뱅크들 0 및 2의 어드레스들 00h-06h에 매핑될 수 있다.
00h - INDF - 액세스되면, FSR은 데이터 메모리를 간접적으로 어드레싱하는데 사용된다.
01h - TMR0 - 타이머 0 모듈 레지스터
02h - PCL - 프로그램 카운터의 하위 비트들을 저장
03h - STATUS - CPU의 전형적인 상태 비트들을 포함
04h - FSR - 뱅크 선택 레지스터, 메모리 페이지를 선택하기 위해 3 비트를 포함
05h - OSCCAL - 발진기 교정 레지스터
06h - PORTB - 포트 B 레지스터
다음의 레지스터들은 뱅크들 1 및 3의 어드레스들 00h-06h에 매핑될 수 있다.
00h - INDF - 액세스되면, FSR은 데이터 메모리를 간접적으로 어드레싱하는데 사용된다.
01h - EECON - 플래시 메모리용 구성 비트들
02h - PCL - 프로그램 카운터의 하위 비트들을 저장
03h - STATUS - CPU의 전형적인 상태 비트들을 포함
04h - FSR - 뱅크 선택 레지스터, 메모리 페이지를 선택하기 위해 3 비트를 포함
05h - EEDATA - 플래시 메모리용 자기 기록 데이터 레지스터
06h - EEADR - 플래시 메모리용 자기 기록 어드레스
어느 특수 기능 레지스터가 하위 4개 뱅크들에 매핑되는지의 선택은 특정 구현에 의존하며 변할 수 있다. 또한, 메모리 뱅크들의 개수는 선형 메모리 블록을 형성하는데 사용되는 뱅크들의 개수 보다 적거나 많을 수 있다.

Claims (28)

  1. 마이크로컨트롤러로서,
    복수의 메모리 뱅크들로 분할되고 상기 복수의 메모리 뱅크들 중 제1 세트의 메모리 뱅크들 및 제2 세트의 메모리 뱅크들을 포함하는 데이터 메모리;
    상기 데이터 메모리에 어드레스를 제공하기 위한 어드레스 멀티플렉서;
    상기 어드레스 멀티플렉서의 제1 입력부에 제1 부분 어드레스를 제공하는 명령어 레지스터;
    상기 어드레스 멀티플렉서의 상기 제1 입력부에 제2 부분 어드레스를 제공하기 위해 상기 데이터 메모리에 매핑되지 않는 뱅크 선택 레지스터; 및
    상기 어드레스 멀티플렉서의 제2 입력부와 결합된 간접 메모리 어드레스 레지스터를 포함하고 상기 데이터 메모리에 매핑되는 복수의 특수 기능 레지스터들을 포함하고,
    적어도 하나의 특수 기능 레지스터는 동일한 메모리 뱅크 어드레스에 있는 상기 제1 세트의 메모리 뱅크들 중 하나보다 많은 메모리 뱅크에 메모리 매핑되고, 상기 제2 세트의 메모리 뱅크들은 어떠한 특수 기능 레지스터들도 매핑되지 않는 선형 데이터 메모리의 블록을 형성하는 것을 특징으로 하는, 마이크로컨트롤러.
  2. 제1항에 있어서,
    상기 데이터 메모리는 n개의 메모리 뱅크들을 포함하고, m개의 메모리 뱅크들은 상기 선형 데이터 메모리의 블록을 형성하는 것을 특징으로 하는, 마이크로컨트롤러.
  3. 제2항에 있어서,
    n=8이고 m=4인 것을 특징으로 하는, 마이크로컨트롤러.
  4. 제2항에 있어서,
    상기 특수 기능 레지스터들은 상기 제1 세트의 메모리 뱅크들의 모든 메모리 뱅크들 중 하위 부분에 메모리 매핑되는 것을 특징으로 하는, 마이크로컨트롤러.
  5. 제4항에 있어서,
    상기 제1 세트의 메모리 뱅크들의 모든 메모리 뱅크들 중 짝수 번째 메모리 뱅크들 및 홀수 번째 메모리 뱅크들 각각은 서로 다른 세트의 메모리 매핑된 특수 기능 레지스터들을 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  6. 제1항에 있어서,
    상기 특수 기능 레지스터들은 가상 레지스터를 포함하고, 상기 가상 레지스터에의 읽기 또는 기록 액세스는 상기 간접 메모리 어드레스 레지스터를 이용하여 간접 데이터 메모리 액세스를 야기하는 것을 특징으로 하는, 마이크로컨트롤러.
  7. 제1항에 있어서,
    상기 특수 기능 레지스터들은 플래시 메모리의 프로그래밍을 수행하기 위한 레지스터들을 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  8. 제1항에 있어서,
    상기 특수 기능 레지스터들은 프로그램 카운터 레지스터, 상태 레지스터, 타이머 레지스터, 포트(port) 레지스터, 및 발진기 교정 레지스터(oscillator calibration register)로 이루어진 그룹에서 선택되는 것을 특징으로 하는, 마이크로컨트롤러.
  9. 제1항에 있어서,
    상기 마이크로컨트롤러는 12-비트 명령어 워드들을 이용하는 8-비트 마이크로컨트롤러인 것을 특징으로 하는, 마이크로컨트롤러.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 마이크로컨트롤러는 8-비트 마이크로컨트롤러이고, 메모리 뱅크는 32 바이트들을 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  11. 제5항에 있어서,
    상기 홀수 번째 메모리 뱅크들만이 플래시 메모리에 액세스하기 위한 특수 기능 레지스터들을 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  12. 제5항 또는 제11항에 있어서,
    상기 짝수 번째 메모리 뱅크들만이 포트에 액세스하기 위한 특수 기능 레지스터를 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  13. 제5항에 있어서,
    상기 짝수 번째 메모리 뱅크들만이 발진기 교정을 위한 특수 기능 레지스터를 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  14. 제5항에 있어서,
    상기 짝수 번째 메모리 뱅크들만이 타이머를 위한 특수 기능 레지스터를 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  15. 마이크로컨트롤러용 데이터 메모리를 어드레싱하기 위한 방법으로서,
    상기 데이터 메모리는 복수의 메모리 뱅크들로 분할되고, 상기 데이터 메모리는 상기 복수의 메모리 뱅크들 중 제1 세트의 메모리 뱅크들 및 제2 세트의 메모리 뱅크들을 포함하고, 상기 마이크로컨트롤러는 상기 데이터 메모리에 어드레스를 제공하기 위한 어드레스 멀티플렉서, 상기 어드레스 멀티플렉서의 제1 입력부에 제1 부분 어드레스를 제공하는 명령어 레지스터, 상기 어드레스 멀티플렉서의 제1 입력부에 제2 부분 어드레스를 제공하기 위한 뱅크 선택 레지스터, 및 상기 어드레스 멀티플렉서의 제2 입력부와 결합된 간접 메모리 어드레스 레지스터를 포함하고,
    상기 방법은,
    적어도 하나의 특수 기능 레지스터를, 상기 간접 메모리 어드레스 레지스터를 포함하며 동일한 메모리 뱅크 어드레스에 있는 상기 제1 세트의 메모리 뱅크들 중 하나보다 많은 메모리 뱅크에 매핑하는 단계; 및
    어떠한 특수 기능 레지스터도 상기 제2 세트의 메모리 뱅크들에 메모리 매핑하지 않음으로써 선형 메모리 블록을 형성하는 단계를 포함하고,
    직접 어드레싱을 위해서는,
    상기 뱅크 선택 레지스터에 의해 메모리 뱅크를 선택하는 단계; 및
    상기 명령어 레지스터로부터의 상기 제1 부분 어드레스 및 상기 뱅크 선택 레지스터로부터의 상기 제2 부분 어드레스에 의해 형성된 어드레스로 상기 멀티플렉서를 통해 상기 선택된 메모리 뱅크를 어드레싱하는 단계를 포함하고,
    간접 어드레싱을 위해서는,
    상기 간접 메모리 어드레스 레지스터에 의해 제공된 어드레스를 선택하여 상기 데이터 메모리를 간접적으로 어드레싱함으로써, 상기 제2 세트의 메모리 뱅크들에 의해 형성된 적어도 상기 선형 메모리 블록의 전체에 액세스하는 것을 가능하게 하는 단계를 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  16. 제15항에 있어서,
    상기 데이터 메모리는 n개의 메모리 뱅크들을 포함하고, m개의 메모리 뱅크들은 상기 선형 메모리 블록을 형성하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  17. 제16항에 있어서,
    n=8이고 m=4인 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  18. 제16항에 있어서,
    상기 제1 세트의 메모리 뱅크들의 모든 메모리 뱅크들 중 하위 부분에 상기 특수 기능 레지스터들을 메모리 매핑하는 단계를 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  19. 제18항에 있어서,
    상기 제1 세트의 메모리 뱅크들 중 짝수 번째 메모리 뱅크들 및 홀수 번째 메모리 뱅크들 각각은 서로 다른 세트의 메모리 매핑된 특수 기능 레지스터들을 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  20. 제15항에 있어서,
    가상 레지스터에의 읽기 또는 기록 액세스에 의해 간접 어드레싱이 수행되는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  21. 제15항에 있어서,
    상기 특수 기능 레지스터들은 플래시 메모리의 프로그래밍을 수행하기 위한 레지스터들을 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  22. 제15항에 있어서,
    상기 특수 기능 레지스터들은 프로그램 카운터 레지스터, 상태 레지스터, 타이머 레지스터, 포트 레지스터, 및 발진기 교정 레지스터로 이루어진 그룹에서 선택되는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  23. 제15항에 있어서,
    상기 마이크로컨트롤러는 12-비트 명령어 워드들을 이용하는 8-비트 마이크로컨트롤러인 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  24. 제15항 내지 제23항 중 어느 한 항에 있어서,
    상기 마이크로컨트롤러는 8-비트 마이크로컨트롤러이고, 메모리 뱅크는 32 바이트들을 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  25. 제19항에 있어서,
    상기 홀수 번째 메모리 뱅크들만이 플래시 메모리에 액세스하기 위한 특수 기능 레지스터들을 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  26. 제19항에 있어서,
    상기 짝수 번째 메모리 뱅크들만이 포트에 액세스하기 위한 특수 기능 레지스터를 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  27. 제19항에 있어서,
    상기 짝수 번째 메모리 뱅크들만이 발진기 교정을 위한 특수 기능 레지스터를 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
  28. 제19항에 있어서,
    상기 짝수 번째 메모리 뱅크들만이 타이머를 위한 특수 기능 레지스터를 포함하는 것을 특징으로 하는, 마이크로컨트롤러용 데이터 메모리 어드레싱 방법.
KR1020117012463A 2009-02-11 2010-02-10 뱅크형 메모리에서의 선형 메모리를 갖는 마이크로컨트롤러 KR101668317B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15175409P 2009-02-11 2009-02-11
US61/151,754 2009-02-11
US12/701,664 US8793426B2 (en) 2009-02-11 2010-02-08 Microcontroller with linear memory access in a banked memory
US12/701,664 2010-02-08
PCT/US2010/023701 WO2010093657A2 (en) 2009-02-11 2010-02-10 Microcontroller with linear memory in a banked memory

Publications (2)

Publication Number Publication Date
KR20110128787A KR20110128787A (ko) 2011-11-30
KR101668317B1 true KR101668317B1 (ko) 2016-10-21

Family

ID=42541313

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117012454A KR101668314B1 (ko) 2009-02-11 2010-02-10 특수 뱅킹 명령어들을 갖는 마이크로컨트롤러
KR1020117012463A KR101668317B1 (ko) 2009-02-11 2010-02-10 뱅크형 메모리에서의 선형 메모리를 갖는 마이크로컨트롤러

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020117012454A KR101668314B1 (ko) 2009-02-11 2010-02-10 특수 뱅킹 명령어들을 갖는 마이크로컨트롤러

Country Status (7)

Country Link
US (2) US8793426B2 (ko)
EP (2) EP2396723B1 (ko)
KR (2) KR101668314B1 (ko)
CN (2) CN102282538B (ko)
ES (1) ES2619724T3 (ko)
TW (2) TWI483179B (ko)
WO (2) WO2010093657A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541745B (zh) * 2010-12-31 2015-10-21 上海海尔集成电路有限公司 微控制器数据存储器的寻址方法和微控制器
US9513912B2 (en) 2012-07-27 2016-12-06 Micron Technology, Inc. Memory controllers
US9304693B1 (en) 2012-12-17 2016-04-05 Marvell International Ltd. System and method for writing data to a data storage structure
TWI474169B (zh) * 2012-12-22 2015-02-21 Himax Tech Ltd 記憶體資料存取方法及記憶體資料存取控制器
US20160170466A1 (en) * 2014-12-15 2016-06-16 Jefferson H. HOPKINS Power saving multi-width processor core
US9946482B2 (en) * 2015-07-14 2018-04-17 Microchip Technology Incorporated Method for enlarging data memory in an existing microprocessor architecture with limited memory addressing
US10255073B2 (en) 2016-05-12 2019-04-09 Microchip Technology Incorporated Microcontroller with variable length move instructions using direct immediate addressing or indirect register offset addressing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4727510A (en) * 1985-05-24 1988-02-23 Unisys Corporation System for addressing a multibank memory system
US5317706A (en) * 1989-11-15 1994-05-31 Ncr Corporation Memory expansion method and apparatus in a virtual memory system
US6029241A (en) * 1997-10-28 2000-02-22 Microchip Technology Incorporated Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor
US20040177211A1 (en) * 1999-03-26 2004-09-09 Microchip Technology Incorporated Microcontroller instruction set

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6298434A (ja) * 1985-10-25 1987-05-07 Hitachi Ltd デ−タ処理システム
US5530934A (en) * 1991-02-02 1996-06-25 Vlsi Technology, Inc. Dynamic memory address line decoding
WO1993010501A1 (en) 1991-11-12 1993-05-27 Microchip Technology Inc. Microcontroller with fuse-emulating latches
WO1994003860A1 (en) * 1992-08-07 1994-02-17 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US5579277A (en) * 1995-05-01 1996-11-26 Apple Computer, Inc. System and method for interleaving memory banks
DE19718658A1 (de) * 1997-05-02 1998-11-05 Philips Patentverwaltung Verfahren zur Kennzeichnung von Video-Daten und Video-Datenspeichern mit Mitteln zur Erzeugung eines Video-Daten-Codes
SE518099C2 (sv) 1997-11-21 2002-08-27 Claes Johansson Automotive Ab Inställbart pedalställ för ett fordon
US6009019A (en) * 1998-02-05 1999-12-28 S3 Incorporated Real time DRAM eliminating a performance penalty for crossing a page boundary
US6795911B1 (en) 2000-01-28 2004-09-21 Oki Electric Industry Co., Ltd. Computing device having instructions which access either a permanently fixed default memory bank or a memory bank specified by an immediately preceding bank selection instruction
JP2002073330A (ja) * 2000-08-28 2002-03-12 Mitsubishi Electric Corp データ処理装置
US6603704B2 (en) * 2001-09-26 2003-08-05 Micron Technology, Inc. Reduced current address selection circuit and method
US7437532B1 (en) * 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
KR100960095B1 (ko) * 2003-10-23 2010-05-31 마이크로칩 테크놀로지 인코포레이티드 마이크로컨트롤러 명령어 셋트
KR100897857B1 (ko) 2003-10-23 2009-05-15 마이크로칩 테크놀로지 인코포레이티드 마이크로컨트롤러 명령어 셋트
US7082075B2 (en) * 2004-03-18 2006-07-25 Micron Technology, Inc. Memory device and method having banks of different sizes
US7359252B2 (en) * 2006-01-09 2008-04-15 Infineon Technologies Ag Memory data bus structure and method of transferring information with plural memory banks
US9208095B2 (en) * 2006-12-15 2015-12-08 Microchip Technology Incorporated Configurable cache for a microprocessor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4727510A (en) * 1985-05-24 1988-02-23 Unisys Corporation System for addressing a multibank memory system
US5317706A (en) * 1989-11-15 1994-05-31 Ncr Corporation Memory expansion method and apparatus in a virtual memory system
US6029241A (en) * 1997-10-28 2000-02-22 Microchip Technology Incorporated Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor
US20040177211A1 (en) * 1999-03-26 2004-09-09 Microchip Technology Incorporated Microcontroller instruction set

Also Published As

Publication number Publication date
US8793426B2 (en) 2014-07-29
CN102282539B (zh) 2014-09-10
TWI483179B (zh) 2015-05-01
TW201035866A (en) 2010-10-01
EP2396723B1 (en) 2019-07-03
US20100205345A1 (en) 2010-08-12
EP2396723A2 (en) 2011-12-21
TW201035756A (en) 2010-10-01
CN102282539A (zh) 2011-12-14
WO2010093657A3 (en) 2010-11-18
TWI516918B (zh) 2016-01-11
US8799552B2 (en) 2014-08-05
EP2396722A2 (en) 2011-12-21
KR101668314B1 (ko) 2016-10-28
ES2619724T3 (es) 2017-06-26
CN102282538B (zh) 2015-04-22
WO2010093657A2 (en) 2010-08-19
KR20110128786A (ko) 2011-11-30
EP2396722B1 (en) 2016-12-21
US20100205346A1 (en) 2010-08-12
CN102282538A (zh) 2011-12-14
WO2010093661A2 (en) 2010-08-19
WO2010093661A3 (en) 2010-11-25
KR20110128787A (ko) 2011-11-30

Similar Documents

Publication Publication Date Title
KR101668317B1 (ko) 뱅크형 메모리에서의 선형 메모리를 갖는 마이크로컨트롤러
JP2651218B2 (ja) フレキシブルasicマイクロコンピュータ
US20060149911A1 (en) Data processing apparatus having memory protection unit
WO2008115822A1 (en) Data pointers with fast context switching
KR101607210B1 (ko) 개선된 마이크로프로세서 또는 마이크로컨트롤러
JP6143841B2 (ja) コンテキストスイッチを伴うマイクロコントローラ
US6058467A (en) Standard cell, 4-cycle, 8-bit microcontroller
JP2008158964A (ja) メモリ用アドレスマッピング方法、それを適用したメモリデバイス
US7124261B2 (en) Access to bit values within data words stored in a memory
JPS61214029A (ja) 命令先取りバツフア
JPH08212779A (ja) メモリアレイ、キャッシュ、およびマイクロプロセッサ
JPH077353B2 (ja) アドレス選択方式
JAKOBSSON et al. 7. PIC 16F84
IE62039B1 (en) Microcontroller peripheral expansion bus
JP2006293490A (ja) Cpu

Legal Events

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

Payment date: 20191001

Year of fee payment: 4