[go: up one dir, main page]

KR100465388B1 - Risc 구조의 8비트 마이크로 제어기 - Google Patents

Risc 구조의 8비트 마이크로 제어기 Download PDF

Info

Publication number
KR100465388B1
KR100465388B1 KR10-1999-7003950A KR19997003950A KR100465388B1 KR 100465388 B1 KR100465388 B1 KR 100465388B1 KR 19997003950 A KR19997003950 A KR 19997003950A KR 100465388 B1 KR100465388 B1 KR 100465388B1
Authority
KR
South Korea
Prior art keywords
bit
register
registers
alu
microcontroller
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR10-1999-7003950A
Other languages
English (en)
Other versions
KR20000053047A (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 KR20000053047A publication Critical patent/KR20000053047A/ko
Application granted granted Critical
Publication of KR100465388B1 publication Critical patent/KR100465388B1/ko
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7814Specially adapted for real time processing, e.g. comprising hardware timers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Communication Control (AREA)

Abstract

RISC 구조의 8비트 마이크로 제어기(10)는 전용 산술 논리 장치 ALU(ALU-2)와 범용 8비트 ALU(ALU-1)를 갖는 8비트 레지스터 파일을 포함하고 있다. 레지스터 파일은 번지 지정을 위한 16비트 논리 레지스터를 제공하기 위해 한 쌍의 레지스터(100)를 결합하는 수단을 추가로 포함한다. 전용 ALU(ALU-2)는 레지스터 쌍에 대한 산술 기능을 제공하는 16비트 ALU로서, 범용 레지스터 8비트 ALU(ALU-1)에 부과될 계산 부하를 경감시킨다. 본 발명의 다른 특징은 논리적인 16비트 레지스터의 내용과 결합되어 더욱 광범위한 번지 지정 범위를 제공하는 페이징 레지스터(paging register: RAM X, RAM Y, RAM Z)를 갖추고 있다는 점이다. 본 발명의 8비트 마이크로 제어기의 또 다른 특징은 단일 명령으로 레지스터 파일 내의 어떤 비트 위치라도 곧바로 읽고 기록하는 수단이라는 것이다. 이것은 종래의 마이크로 제어기 기술 분야에서 필요한, 여러개의 명령, 시프트(shift) 및/또는 마스킹(masking) 연산 실행을 피한다.

Description

RISC 구조의 8비트 마이크로 제어기{EIGHT-BIT MICROCONTROLLER HAVING A RISC ARCHITECTURE}
현재의 초미세 CMOS 기술은 하나의 칩상에 복합 마이크로 제어기 구조 집적을 가능하게 하고, 복합 메모리 및 주변 논리 장치를 구현하기 충분한 실리콘 공간을 남겨두는 것을 가능하게 한다. 하이 엔드(high-end) 32비트 RISC 머신 및 64비트 RISC(Reduced Instruction Set Computer) 머신에서 주로 사용되는 설계 구조와 방법은 저렴한 8비트 마이크로 제어기 시스템에 효과적으로 이용되고 적용될 수 있다. 강력하면서도 저렴한 마이크로 제어기를 구비한다면, 시스템의 전체 집적 레벨은 계속해서 증가할 것이다. 더욱 효과적인 프로그램에 의해 이러한 하드웨어 구조로 실행 가능하고, 더 많은 기능이 집적될 수 있다.
최근에는 RISC 구조가 일반화되고 있다. 가장 주목할 만한 RISC 구조의 예로는 애플 컴퓨터, IBM 및 모토롤라가 공동 개발한 Power PC(등록 상표)가 있다. 비록 RISC 프로세서의 특성을 정의하는 것에 관한 합의는 없지만, 상이한 각종 RISC 구조 가운데서 다음과 같은 공통적인 특성이 있다.
(1) 대부분의 명령이 하나의 사이클로 실행된다.
(2) 별개의 단순 로드(load)/저장(store) 명령은 종종 두 개의 사이클로 실행된다.
(3) 일반적으로, 명령 디코딩(decoding)은 마이크로 코드화(microcoded)되기보다 고정 배선화(hard-wired)되기 때문에 실행 시간이 더 빨라진다.
(4) 대부분의 명령은 고정된 포맷을 가짐으로써, 명령 디코딩이 단순해진다.
(5) 명령 세트가 축소됨에 따라 번지 지정 모드는 적어진다.
(6) 데이터 경로는 고도로 파이프라인화(pipelined) 되어 있어, 고도의 병행 처리 를 제공한다.
(7) 저속의 시스템 RAM에 데이터가 과도하게 입/출력 되는 것을 피하기 위해, 대용량의 고속 레지스터 세트(레지스터 파일)를 구비하고 있다.
여러 반도체 제조사가 마이크로 제어기를 생산하고 있다. 예를 들어, 텍사스 인스트루먼트는 8비트 마이크로 제어기인 TMS370Cxlx 시리즈를 시판하고 있다. 비록 이러한 마이크로 제어기는 RISC 구조를 채택하지 않았지만, RAM 또는 범용 레지스터 세트로 이용될 수 있는 RAM(128 또는 256바이트)을 제공한다. 모토로라는 텍사스 인스트루먼트의 디바이스와 유사한 2중 목적 RAM을 채용한, 8비트 마이크로 제어기의 MC6805 패밀리를 시판하고 있다. 마이크로칩 테그놀러지(Microchip Technology)는 마이크로 제어기의 PIC16C5X 패밀리를 시판하고 있다. 이러한 제어기는, 데이터와 프로그램 명령이, 별개의 메모리와 버스를 가지는 하바드(Harvard) 이중 버스 구조를 이용한다. PIC16C5X는 시스템 RAM과 함께 공유되는 레지스터 파일을 채택한다. PIC16C5X는 단일 레벨 명령 파이프라이닝을 이용한다. 즉, 하나의 명령이 실행됨에 따라 다음 명령은 프로그램 메모리로부터 프리 페치(pre-fetch)된다. RAM이 레지스터로 겸용되기 때문에 실제의 내부 레지스터 세트는 없다. 모든 메모리가 스테틱(static) RAM으로 존재하므로 레지스터 연산을 포함하는 성능(performance)의 저하가 있게 된다.
위에서 설명한 바와 같이, 고속 설계 사이클은 마이크로 제어기를 이용한 설계에서 중요한 고려 사항이다. 컴퓨터 기반 시스템에서 소프트웨어가 차지하는 역할이 중요하다는 것은 의심의 여지가 없다. 그러므로, 마이크로 제어기 설계의 유틸리티는, 프로그래머와 하드웨어 설계자 사이의 규격 인터페이스(specification interface) 즉, 마이크로 제어기 명령 세트에 곧바로 연관된다. 어떤 연산 가능한 기능이 알맞은 프로그램 공간 크기 내에서 구현 가능해야만 한다는 점에서 명령 세트는 완전해야 한다. 명령 세트는 빈번하게 사용되는 기능들이, 비교적 적은 명령으로 구현 가능해야만 하는 점에서 효율적이어야 한다. 그러므로, 어플리케이션 소프트웨어 개발자를 위해 완전하고 효율적인 명령 세트를 제공하는 마이크로 제어기 설계를 제공하는 것이 바람직하다.
본 발명은 일반적으로 마이크로 제어기에 관한 것이고, 더욱 구체적으로는 축소된 명령 세트를 실행하는 마이크로 제어기에 관한 것이다.
도 1은 본 발명의 마이크로 제어기의 개략 배치도이다.
도 2A 내지 도 2C는 도 1의 마이크로 제어기에서 사용된 레지스터 파일의 내부도이다.
도 3A 및 도 3B는 도 2A 내지 도 2C에서 도시한 레지스터 파일의 레지스터 구성을 예시하는 도면이다.
도 4A 및 도 4B는 본 발명의 비트 기억 메카니즘을 나타내는 도면이다.
도 5는 본 발명에 따른 페이징 레지스터를 이용하는 24비트 논리 번지의 구성을 예시하는 도면이다.
도 6은 도 5에 도시한 페이징 레지스터를 결합한 도 1의 마이크로제어기를 나타낸 도면이다.
본 발명은 8비트 RISC 구조를 갖는 마이크로 제어기이다. 8비트 데이터 버스는 RAM 메모리 기억 장치(store), 레지스터 파일, 범용 8비트 산술 논리 장치(ALU) 및 상태 레지스터 사이에서 데이터 경로를 제공한다. 마이크로 제어기는 하바드 구조를 실현하고, RAM 기억 장치외의 별개 프로그램 메모리 기억 장치와, 데이터 버스와는 별개의 프로그램 데이터 버스를 제공한다.
레지스터 파일은 복수의 8비트 레지스터를 갖추고 있다. 레지스터 파일의 레지스터 중 몇 개는 논리적인 16비트 레지스터를 제공하기 위해 결합될 수 있다. 논리적인 16비트 레지스터는 효과적인 번지 계산을 제공하고, 데이터 메모리와 프로그램 메모리에 대한 간접 번지 포인터로서 사용된다. 데이터에 대해서 또는 프로그램 메모리에 대해서, 16비트 번지 공간에 의해 프로그램 번지 공간과 데이터 번지 공간이 증가됨으로써 마이크로 제어기의 융통성과 유틸리티가 크게 확대된다. 본 발명의 바람직한 실시예에서, 레지스터 파일은 세 개의 독립적인 16비트 논리 레지스터로서, 액세스(access; 읽기/쓰기) 가능한 세 쌍의 8비트 레지스터를 제공한다.
16비트 번지 지정의 장점을 더 살리기 위해, 레지스터 파일 전용의 특별한 제2 ALU가 이용된다. 제2 ALU는 16비트 가산기를 구비함으로써, 논리적인 16비트 레지스터에 대한 16비트 산술 연산을 제공한다. 제2 ALU는 16비트 결과값을 논리적인 16비트 레지스터에 다시 저장할 수 있다. 부가적으로, 16비트 결과값은 번지로서 소용된다. 그러므로, 제2 ALU는 장치의 연산 속도를 줄이는 범용 8비트 ALU에 부담을 주지 않고 효과적인 16비트 주소 계산을 제공한다.
레지스터 파일로 제공되는 16비트 논리 레지스터의 추가 확장은 8비트 RAM 페이징 레지스터를 활용하는 것이다. RAM 페이징 레지스터의 8비트는 논리적인 24비트 번지를 제공하기 위해 논리적인 16비트 레지스터의 16비트에 논리적으로 연결되어 있다. 이 특성은, 기본적인 구조는 본질적으로 8비트 설계인 마이크로 제어기를 위해 전례 없는 번지 지정 범위를 제공한다. 특별히, 페이징 레지스터는 메모리를 64K(64 * 1024) 바이트의 256 페이지로 구성하고, 각각의 64K 페이지는 페이징 레지스터에 의해 참조(reference)된다. 본 발명의 바람직한 실시예에서는 세 개의 페이징 레지스터가 있고, 세 개의 논리적인 16비트 레지스터 각각에 대해 한 개의 페이징 레지스터가 레지스터 파일에 의해서 제공된다.
하나의 비트 기억 장치는 레지스터 파일의 레지스터들간에 임의의 비트 위치로 1비트의 데이터를 입/출력 전송하는 것을 가능하게 한다. 바람직한 실시예에서, 비트 기억 장치는 상태 레지스터 내에 위치한다. 이러한 비트 전송 특성은 다수의 시간이 소모되는 다른 레지스터 시프트(shift) 연산을 행하지 않고, 레지스터 비트 위치의 직접적인 조작을 가능하게 한다. 대다수의 마이크로 제어기 어플리케이션에서는 전형적인 것으로서, 1바이트 데이터를 포함한 개개의 비트들은 다른 비트에 독립적인 유효값(significance)을 가지고 있다. 일반적으로, 종래 기술의 마이크로 제어기의 명령 세트는 레지스터의 좌/우 시프팅(shifting)을 제공하는 시프트 명령을 포함한다. 그러므로, 레지스터의 주어진 비트 위치 내의 비트에 대한 액세스는 해당 비트를 좌/우 시프팅함으로써 이루어진다. 이것은 파괴적인 연산이며, 원래의 데이터가 보호되어야 한다면 레지스터 내용을 저장하는 것이 필요하다. 또한, 이러한 연산은 시간 소모적이며 구현하려는 많은 프로그램 명령을 필요로 한다. 본 발명의 비트 전송 동작은 임의의 비트 위치 액세스에 대해서 더욱 시간 효율적이며, 적은 공간을 소모하는 수단을 제공한다.
캐리 비교(compare-with-carry) 명령은 레지스터 파일을 포함하는 8비트 레지스터의 16비트 확장을 제공한다. 이러한 명령 세트의 특성은 8비트 환경에서 16비트 분량의 비교를 실행하는데 효과적인 방법을 제공하고, 본 발명의 8비트 마이크로 제어기 유틸리티의 더 많은 확장을 제공한다.
도 1을 참조하면, 본 발명의 마이크로 제어기(10)는 8비트 데이터 버스(12) 구조를 중심으로 설계되었다. 데이터 버스는 마이크로 제어기를 포함한 다양한 구성 요소에 대한 데이터 경로를 제공한다. 온 보드 스테틱(on board static) RAM은 일반적인 데이터 기억 장치로 기능한다. 스테틱 RAM에서 분리된 8비트 레지스터 파일은 마이크로 제어기를 위한 고속의 8비트 메모리 기억 장치 세트를 제공한다.
범용 산술 및 논리 장치인 ALU-1은 레지스터 파일에 연결되어, 레지스터에 저장된 데이터에 대한 산술 계산을 제공한다. ALU-1의 출력은 8비트 데이터 버스(12)와 상태 레지스터 양쪽에 인가된다. 상태 레지스터를 포함하는 다양한 상태 비트들은 ALU-1의 결과에 따라 세트된다. 상태 레지스터 내에 포함되는 전형적인 비트들은 이에 한정하는 것은 아니지만, 캐리 플래그(carry flag), 제로 플래그(zero flag), 음의 플래그(negative flag), 2의 보수 오버플로우(overflow) 표시기, 음의 플래그와 2의 보수 오버플로우 플래그 사이의 배타적 논리합(exclusive-OR)과 동일한 부호 비트 및 인터럽트 인에이블(interrupt enable) 비트를 포함한다. 상태 레지스터는 상태 비트에 대한 읽기/쓰기 액세스가 가능하도록 데이터 버스(12)에 연결되어 있다. 데이터 버스(12)에 연결된 부가의 구성 요소는 서브루틴(subroutine) 호출/복귀(calls/returns)와 인터럽트 처리를 위한 스택 포인터, 타이머(timer), 인터럽트 회로, 타이밍 및 제어 회로, EEPROM 및 UART이다. 포트 드라이버(PORT DRIVERS)로 구동되는 입/출력 데이터 레지스터는 마이크로 제어기에 입/출력 경로(18)를 제공한다.
직접 번지 버스(16)는 프로그램 실행시 스테틱 RAM 기억 장소와 레지스터 파일에 직접적으로 액세스하는 것을 제공한다. 간접 번지 버스(14)는 간접적인 번지 지정을 제공한다. 간접 번지 버스(14)는 레지스터 파일로부터 번지를 수신하는 수단 즉, 버스 인터페이스(14')를 포함하는데, 버스 인터페이스에 의해 번지를 스테틱 RAM 또는 프로그램 카운터로 전송하는 간접 번지 버스(14)에 레지스터 파일이 연결시킨다.
마이크로 제어기(10)의 명령 실행 구성 요소에는 프로그램 메모리에 연결된 프로그램 카운터가 포함되어 있다. 프로그램 카운터에 의해 지정된 프로그램 명령은 프로그램 메모리에서 페이되어, 명령 레지스터에 전송된다. 명령 레지스터에서 나온 프로그램 명령은 다양한 제어 신호를 발생시키는 명령 디코더에 의해 디코드된다. 제어 신호는 제어 라인을 통해 마이크로 제어기(10)의 다른 구성요소로 전송되어, 디코드된 프로그램 명령에 따라 연산이 수행된다. 명령 실행 구성 요소를 연결하는 버스를 총괄적으로 프로그램 버스라 한다. 데이터 기억 장치에서 분리되어 있는 프로그램 메모리 기억 장치와, 데이터 버스에서 분리되어 있는 프로그램 버스를 이용하는 구성을 일반적으로 하바드(Harvard) 구조라고 한다.
전술한 바와 같이, 레지스터 파일은 복수 개의 8비트 레지스터로 구성되어 있다. 본 발명의 바람직한 실시예에서는 32 개의 8비트 레지스터가 있다. 그러나, 마이크로 제어기는 레지스터 파일 내의 레지스터의 다소와 관계없이 동일하게 잘 동작한다. 범용 산술 논리 장치 ALU-1은 8비트 연산자이고, 레지스터 파일에서 선택된 레지스터들간의 8비트 산술 연산을 제공한다. ALU-1의 출력은 데이터 버스(12)를 통하여 레지스터 파일 내의 레지스터에 전송될 수 있다. 아래에서 더욱 자세하게 설명하는 바와 같이, 8비트 레지스터 중 일부는 쌍으로 결합되어서 16비트 논리 레지스터를 제공한다. 바람직한 실시예에서, 도 1에서 도시한 바와 같이 세 쌍의 8비트 레지스터는 세 개의 16비트 논리 레지스터 X, Y, Z를 제공한다.
도 2A에서, 본 발명의 레지스터 파일은 32 개의 8비트 레지스터(R0 - R31)를 제공하는 레지스터 회로(100)를 포함한다. 아래에서 설명하는 바와 같이, 레지스터 회로(100)는 마지막 여섯 개의 레지스터(R26 - R31)를 세 쌍의 16비트 논리 레지스터 R27/R26(X), R29/R28(Y), R31/R30(Z)로서 공급할 수 있다. 두 개의 16라인 데이터 버스(102, 104)로 구성된 공통 버스 인터페이스는 레지스터에 대한 데이터 입력 및 데이터 출력 버스를 각각 제공한다.
레지스터 파일이 제공하는 16비트 레지스터는 스테틱 RAM과 프로그램 공간 번지 지정을 위한 간접 번지 레지스터 포인터로서 이용된다. 이와 같이, 후(post)-증가 및 선(pre)-감소와 같은 어떤 16비트 산술 연산은 번지 계산에 필요하다. 비록 ALU-1을 사용하여 16비트 산술을 16비트 레지스터에 대해 제공하는 것이 가능하다 하더라도, ALU-1의 8비트 설계 때문에 이러한 연산은 매우 비효과적일 것이다.
그러므로, 도 2A에 도시한 레지스터 파일은 16비트 논리 레지스터를 포함하는 16비트 계산을 돕기 위해 레지스터 파일에 전용으로 설정되 있는 제2 산술 논리 장치 ALU-2를 포함한다. 산술 논리 장치 ALU-2는 일반적으로 간접 번지 포인터를 필요로 하는 특정의 연산을 제공하도록 주문 제작되는 16비트 설계이다. ALU-2는 레지스터 파일의 데이터 출력 버스(104)에 의해 공급되는 제1 입력을 갖는다. ALU-2는 셀렉터(selector; 110)에 의해 전송되는 제2 입력을 갖는다. 셀렉터(110)는 수치값 -1, 수치값 +1 및 상수 V의 세 개의 선택값 중에서 수치값을 선택한다. ALU-2의 출력이 데이터 입력 버스(102)를 통해 X, Y, Z 레지스터로 귀환됨으로써, 레지스터의 내용은 갱신되게 된다. 다중화기(mux; 114)는 레지스터 파일의 버스 인터페이스(14')로 연결된다. 다중화기(114)의 제1 입력은 ALU-2의 출력에 연결되어 있고, 다중화기의 제2 입력은 데이터 출력 버스(104)에 연결되어 있다. 이러한 구성은 다중화기(114)로 하여금 ALU-2의 데이터 또는 레지스터 회로(100)의 데이터를 선택적으로 출력 가능하게 하는 구성이다.
다음에 오는 제어 신호는 위에서 설명한 레지스터 파일 특성의 연산과 관련이 있다. 제어 신호는 가산 인에이블(ADD ENABLE), 감산 인에이블(SUB ENABLE), 다중화기 선택(MUX SELECT), V 선택, V5-V0, 증가 선택, 감소 선택이다. 이 신호들은 명령 디코더에서 비롯되는 다양한 제어 라인을 통해 전송된다. 이 제어 신호가 인가되어 일어나는 레지스터 파일의 연산에 대해서는 본 발명의 마이크로 제어기 프로그램 명령을 참조하여 이후 설명하기로 한다.
도 2A에 도시된 레지스터 회로(100)의 내부 구성은 도 3A의 블럭도로 도시되어 있다. 본 발명의 한 실시예에서, 32 개의 레지스터 R0 - R31이 제공되고, 각각은 8비트 출력 라인(121) 세트와 8비트 입력 라인(123) 세트를 가지고 있다. 제공되는 실제의 레지스터의 수가 본 발명에 대한 임계치는 아니다. 래치(latches) 세트(120 - 126)는 레지스터에 입/출력되는 래치 데이터에 선택적으로 연결된다. 이 래치는 도 2A에 도시한 공통 버스 인터페이스(102, 104)의 입/출력 데이터 비트 bi15...bi0와 bo15...bo0를 제공한다. 8비트 레지스터 R0 - R31 사이의 데이터 전송은 데이터 입력 래치(122)와 데이터 출력 래치(126)를 통하여, 각각 비트 bi7-bi0와 bo7...bo0로서 제공된다.
16비트 논리 레지스터 X, Y, Z에 대하여, 부가의 데이터 입력 및 데이터 출력 래치(120, 124)가 제공된다. X 레지스터는 레지스터쌍 R27:R26으로 구성되고, Y 레지스터는 레지스터쌍 R29:R28로 구성되며, Z 레지스터는 레지스터쌍 R31:R30으로 구성된다. 데이터 출력 래치(120, 122)는, 공통 버스 인터페이스(102, 104)의 bo15...bo0출력 비트로, 16비트 레지스터 중 하나의 내용을 래치하고, 데이터 입력 래치(124, 126)는, 입력 비트 bi15...bi0에 나타나는 데이터를 래치한다. 데이터 출력 래치(120)는 상위 바이트(hi-byte) 레지스터 R27, R29 및 R31의 출력 라인(121)에 연결된다. 마찬가지로, 데이터 출력 래치(122)는 하위 바이트(lo-byte) 레지스터 R26, R28 및 R30의 출력 라인(121)에 연결된다. 데이터 입력 래치(124, 126)는 같은 방식으로 연결된다. 즉, 데이터 입력 래치(124)는 상위 바이트 레지스터 R27, R29 및 R31의 입력 라인(123)에 연결되고, 데이터 입력 래치(126)는 하위 바이트 레지스터 R26, R28 및 R30의 입력 라인(123)에 연결된다.
다음에 오는 제어 신호는 레지스터 회로(100)에 대해 설명한 특징의 동작과 관련이 있다. 제어 신호는 데이터16_입력, 데이터16_출력, 데이터8_입력, 데이터8_출력, RO 선택 - R31 선택, X 선택, Y 선택, Z 선택이다. 이 제어 신호와 관련한 레지스터 회로(100)의 동작에 대해서 본 발명의 마이크로 제어기 프로그램 명령을 참조하여 이후 설명하기로 한다.
본 발명의 8비트 마이크로 제어기의 또다른 특징에 대해 설명할 것이다. 위에서 설명한 것을 상기하면, 레지스터의 임의 비트 위치를 로딩(loading) 또는 저장(storing)하기 위한 종래 기술은 레지스터 시프트 및/또는 레지스터 마스킹(masking) 연산을 필요로 하고, 그로 인해 부호(code)가 비효율적이며 부호 크기가 증대된다. 또한, 이것은 파괴적인 연산이고, 원래의 데이터가 보존되어야 한다면 레지스터 내용이 저장될 필요가 있다.
본 발명의 레지스터 파일의 내부 구성을 다른 각도에서 보기 위해 도 4A를 주목하면, 레지스터 R0 - R31 사이에서 출력되는 비트에 임의로 액세스하는 것을 제공하는 레지스터 파일 내의 부가적 구성 요소를 자세히 묘사하고 있다. 논리적으로, 각각의 레지스터는, 다중화기의 8비트 출력의 각각이 레지스터 내의 비트에 연결되는 1:8 다중화기(130)를 갖추고 있다. 그러므로, 다중화기(130)의 1 비트 입력에 1 비트를 래치하고, 그 다중화기 입력을 8 개의 출력 중 하나로 전송함으로써 레지스터 내의 어떠한 비트 위치에 그 비트를 로드 할 수 있다. 또한 각각의 레지스터는, 8비트 입력의 각각이 레지스터 내의 1 비트로 결합되는 한 개의 8:1 다중화기(132)를 갖추고 있다. 그러므로, 레지스터 내의 임의 비트 위치는 대상 비트와 일치하는 다중화기 입력을 선택함으로써 복사될 수 있다.
계속하여, 레지스터 파일은 논리적으로 1:32 다중화기(134)와 32:1 다중화기(136)를 포함한다. 먼저 1:32 다중화기(134)를 보면, 이 다중화기는 8비트 데이터 버스(12)에서 취한 1 비트 입력을 가진다. 입력은 32 개의 출력 중 하나로 전송될 수 있다. 바꿔 말하면, 32 개 출력의 각각은 1:8 다중화기(130)들 중 하나의 입력에 연결되어서, 데이터 버스(12)에서 레지스터 파일의 레지스터 R0 - R31 중 임의 레지스터 내의 임의 비트 위치에 이르는 경로를 제공한다. 다음의 32:1 다중화기(136)를 보면, 8:1 다중화기(132) 각각의 출력은 다중화기(136)의 32 개 입력 중 하나에 연결된다. 바꿔 말하면, 다중화기(136)의 1비트 출력은 데이터 버스(12)에 연결되어, 레지스터 R0 - R31 중 어느 하나의 레지스터 내의 임의의 비트 위치에서 데이터 버스에 이르는 데이터 경로를 제공한다.
도 4A에 도시한 상태 레지스터는 전송 비트의 T비트로 알려진, 1비트 데이터를 수신하여 보유하는 1 비트 위치를 가지고 있다. 상태 레지스터는 8비트 데이터 버스(12)에 연결되어, 각종 비트에 읽기/쓰기 액세스를 제공한다. 특히, T비트 위치는 1:32 다중화기(134) 및 32:1 다중화기(136)와 결합하여 제어되며, 데이터 버스를 통해 1비트 데이터를 32:1 다중화기(136)에서 수신하거나, 데이터 버스를 통해 1비트 데이터를 1:32 다중화기(134)로 전송하게 된다.
다음에 오는 제어 신호는 도 4A에 도시한 레지스터 파일 특징의 연산과 관련이 있다. 제어 신호는 BST 레지스터 선택, BST 비트 선택, BLD 레지스터 선택, BLD 비트 선택이다. 이 제어 신호와 관련하여 레지스터 회로(100)의 동작에 대해서 본 발명의 마이크로 제어기 프로그램 명령을 참조하여 이후 설명하기로 한다.
본 발명의 8비트 마이크로 제어기의 또다른 특성은 도 5에서 도시한 개선된 번지 지정 기능이다. 레지스터 파일 외부의 세 개의 부가적인 레지스터 즉, RAM 페이징 레지스터 RAMPX, RAMPY, RAMPZ가 도시되고 있다. RAM 페이징 레지스터는, 상응하는 16비트 논리 레지스터 X, Y, Z와 결합하여 동작하며, 종래 기술의 8비트 마이크로 제어기에 비해 매우 확장된 번지 지정 범위를 제공한다. 개시된 실시예에서, RAM 페이징 레지스터는 8비트 레지스터이다. 그러나, 이것은 임계적인 것은 아니며, 본 발명이 다른 비트 길이를 갖는 레지스터와 결합하여 쉽게 동작할 수 있다는 것이 명백하게 될 것이다.
도 5는 번지의 개략 구성도이다. RAM 페이징 레지스터의 각각은 상응하는 16비트 레지스터와 연결되어 있다. 예를 들어, RAM 페이징 레지스터 RAMPX의 8 개 비트는 X 레지스터의 16 개 비트와 연결되어 있고, 24비트의 번지를 형성한다. 바람직한 실시예에서, RAMPX의 8 개 비트는 24비트 논리 번지의 상위 순서 비트 X[23...16]의 역할을 하고, X 레지스터의 16비트는 24비트 논리 번지의 하위 순서 비트인 X[15...0]를 제공한다. 이 배열에 의해 생성된 메모리 모델은 64K 바이트(64 * 1024) 페이지의 세트이고, 각 64K 페이지는 256페이지 전체에 대해 8비트 RAM 페이징 레지스터로 액세스한다.
본 발명의 설명한 실시예를 배경으로 RAM 페이징 레지스터의 실시예를 설명하기 위해 도 6을 본다. RAM 페이징 레지스터 RAMPX, RAMPY, RAMPZ 각각은 8비트 데이터 버스(12)에 연결되고, 프로그램 실행시 8비트의 참조(reference) 페이지를 수신한다. 셀렉터(11; 예로는 3:1 다중화기가 있다)는 RAM 페이징 레지스터의 각각으로부터 8비트를 수신하고, 선택된 RAM 페이징 레지스터의 8비트를 셀렉터의 출력으로 전송한다. 레지스터 파일의 버스 인터페이스(14')의 16비트는 셀렉터(11)에서 출력되는 8비트와 연계되어, 간접 번지 버스(14)를 통해 전달되는 24비트 번지를 형성한다.
본 발명의 확장된 24비트 번지 지정은 외부적으로 제공되는 RAM(도시되지 않음)의 사용을 가능하게 하고, 24비트 번지는 RAM의 16M(16 * 1024 * 1024) 번지를 지정할 수 있다. 외부의 24비트 번지 버스(20)와 8비트 데이터 버스(22)는 마이크로 제어기와 외부 RAM(도지되지 않음) 사이의 데이터 액세스를 위해 갖추어져 있다. 본 발명에 따르면, 레지스터 파일, 내장된 스테틱 RAM 및 외부의 RAM은 동일한 데이터 번지 공간을 차지한다. 레지스터 파일은 처음 32 개의 기억 장소를 차지하고, 내장된 스테틱 RAM은 다음 N 개의 번지 기억 장소를 차지하며, N은 스테틱 RAM의 크기이다. 번지 공간의 나머지는 외부 RAM이 차지한다. 그러므로, 00에서 N-1까지의 번지 범위가 내장 메모리(on-board memory)(레지스터 파일, 스테틱 RAM)의 메모리 기억 장소에 매핑(mapping)되고, N에서 16M-1까지의 나머지 번지 범위는 외부 RAM의 메모리 기억 장소에 매핑된다. 예를 들어, 내장 메모리가 전체 64K 바이트이면, 내장 번지 범위는 $00에서 $FFFF($:16진수 표기법)까지이고, 외부 RAM의 번지 범위는 $10000에서 $FFFFFF까지이다. 내장 메모리의 전체 크기는 본 발명의 유틸리티나 동작 성능에 영향을 주지 않고 변화될 수 있고, 실제 메모리 크기는 유용한 실리콘 영역, 장치 지오메트리 및 설계 규칙과 같은 설계 기준에 좌우된다.
내장 메모리와 외부 RAM이 주어진 번지에 정확하게 액세스하는 것을 확실히 하기 위해서, 제2 셀렉터(13)는 번지를 내부 번지 버스(14) 또는 외부 번지 버스(20)에 전송한다. 바람직한 실시예에서, 셀렉터(13)는 한 개의 다중화기 입력이 두 개의 출력 중 하나로 전송되는 1:2 다중화기이다. 여기서, 한 개의 입력은 셀렉터(11)에서 출력되는 24비트 번지 라인이다. 셀렉터(13)의 출력 중 하나는 번지 버스(14)에 연결되어 있고, 다른 출력은 외부 번지 버스(20)에 연결되어 있다. 내장 메모리 번지 범위 내에서 한 번지를 검출할 때, 셀렉터(13)는 자신의 입력을 번지 버스(14)에 전송한다. 24비트 번지의 하위 순서 16비트[15...0]만이 번지 버스(14)에 전송되는 것을 주시한다. 반대로, 셀렉터(13)는 외부 메모리의 번지 범위 내에서 번지를 검출할 때, 자신의 입력을 외부 번지 버스(20)에 전송할 것이다. 다수의 검출 설계 방법 중 하나가 가능하며, 모든 방법은 숙련 설계자의 능력 범위 내에 있다. 예를 들어, 하나의 방법으로 셀렉터(13) 제어 결과값을 이용하여 24 비트 번지의 상위 순서 8비트(비트[23...0])와 함께 논리합(OR) 될 수 있다. 만약 논리합 연산 결과가 FALSE이면, 번지가 내장 메모리의 번지 범위 내에 들어간다는 것을 의미하고, 이 때 셀렉터(13)는 자신의 입력을 내부 번지 버스(14)에 전송해야 한다. 만약 논리합 연산 결과가 TRUE이면, 번지가 최대한의 24비트 번지인 것을 의미하고, 이 때 셀렉터(13)는 자신의 입력을 외부 번지 버스(20)에 전송해야 한다.
본 발명의 8비트 마이크로 제어기 특징과 관련한 하드웨어에 대한 상세한 설명은 마이크로 제어기의 명령 세트에 관한 설명이다. 먼저, 본 마이크로 제어기는 산술 논리 명령, 분기 명령, 데이터 전송 명령, 비트 시험 및 비트 세트 명령을 포함해서, 모든 마이크로 제어기의 전형의 프로그램 명령을 지원한다. 부가적으로, 본 마이크로 제어기는 전술한 회로에 의해 인에이블되는 명령을 제공한다. 다음에 오는 것은 이 명령을 요약한 것이다.
ADIW
설명 : 16비트 논리 레지스터 L(X[R27:R26], Y[R29:R28], 또는 Z[R31:R30])에 상수를 가산한다. 메모리 액세스는 대응의 RAM 페이징 레지스터 RAMPX, RAMPY 및 RAMPZ에서 규정된 RAM 페이지에 한정된다.
연산 : L ← L + K
구문 : ADIW L, K (L은 X, Y 및 Z 중 하나; K는 상수, 0K63)
예 :
adiw X, 1 ; 1을 X 레지스터에 가산
adiw Z, 63 ; 63을 Z 레지스터에 가산
BST
설명 : 레지스터에서 출력되는 비트를 T비트로 저장한다.
연산 : T비트 ← Rd(b)
구문 : BST Rd, b (Rd : 레지스터 R0...R31;
b는 비트 위치, 0b63)
예 :
; 비트 복사
bst r4, 3 ; r4의 비트 3을 T 비트로 저장
bld r21, 6 ; T 비트로부터의 r21의 비트 6을 로드
BLD
설명 : T비트에서 출력되는 비트를 레지스터에 로드한다.
연산 : Rd(b) ← T비트
구문 : BLD Rd, b (Rd : 레지스터 R0...R31;
b는 비트 위치, 0b7)
예 :
; 비트 복사
bst r4, 3 ; r4의 비트 3을 T 비트로 저장
bld r21, 6 ; T 비트에서 r21의 비트 6을 로드
CPC
설명 : 두 개의 레지스터를 비교하고, 선행 캐리(carry)를 고려한다.
연산 : Rd - Rr - C
(Rd, Rr: 레지스터 R0 ... R31; C: 캐리 비트)
구문 : CPC Rd, Rr
예 :
; r3:r2와 r1:r0를 비교
cp r2, r0 ; 하위 바이트를 비교
cpc r3, r1 ; 상위 바이트를 비교
brne noteq ; 동일하지 않으면 분기
·
·
·
noteq: ··· ; 분기 방향
nop ; (동작 없음)
IJMP
설명 : 논리 16비트에 의해서 Z 레지스터 Z[R31:R30]에 의해 포인팅되는 번지로 간접 점프한다.
연산 : PC[15...0] ← Z[15...0]
구문 : IJMP (피연산자 없음)
예 :
; 점프 번지를 초기화
mov r30, r0 ; r0를 r30에 복사
mov r31, r1 ; r1를 r31에 복사
ijmp ; r31:r30에 의해 포인팅된 명령으로 점프
ICALL
설명 : 논리 16비트에 의해서 Z 레지스터 Z[R31:R30]에 의해 포인팅되는 서브루틴의 간접 호출.
연산 : STACK ← PC + 1
SP ← SP - 2
PC[15...0] ← Z[15...0]
구문 : ICALL (피연산자 없음)
예 :
; 서브루틴 번지를 초기화
mov r30, r0 ; r0를 r30에 복사
mov r31, r1 ; r1를 r31에 복사
icall ; r31:r30에 의해 포인팅된 명령으로 점프
LD
설명 : 한 개의 바이트를 메모리 기억 장소에서 레지스터로 간접 로드하고, 메모리 기억 장소는 16비트 논리 레지스터 L(X[R27:R26], Y[R29:R28], 또는 Z[R31:R30])에 의해 포인팅된다. 논리 레지스터는 후-증가(post-increment) 또는 선-감소(pre-decrement)될 수 있다. 메모리 액세스는 RAM 페이징 레지스터 RAMPX, RAMPY 및 RAMPZ에 상응하여 지정되는 RAM 페이지에 한정된다.
연산 : 1: Rd ← (L) L: 변하지 않음, 논리합
2: Rd ← (L)
L ← L + 1 L: 후-증가됨, 논리합
3: L ← L - 1
Rd ← (L) L: 선-감소됨
구문 : LD Rd, L L: 변하지 않음
LD Rd, L+ L: 후-증가됨
LD Rd, -L L: 선-감소됨
(Rd: 레지스터 R0 ... R31; L: X, Y 및 Z 중 하나)
예 :
clr r27 ; X 상위 바이트를 클리어
ldi r26, $20 ; X 하위 바이트를 $20에 세트
ld rl, X+ ; 메모리 기억 장소 $20의 내용과 r0를 로드
; (X 후-증가됨)
ld rl, X ; 메모리 기억 장소 $21의 내용과 r1을 로드
; (X 변하지 않음)
ld r2, -X ; 메모리 기억 장소 $20의 내용과 r2를 로드
; (X 선-감소됨)
LDD
설명 : 한 레지스터에 대한 메모리 위치로부터의 변위에 따라서 1 바이트를 간접 로드하되, 메모리 기억 장소는 16비트 논리 레지스터 L(Y[R29:R28] 및 Z[R31:R30])에 의해 포인팅되며, 변위값에 의해 오프셋 된다. 메모리 액세스는 대응의 RAM 페이징 레지스터 RAMPY 및 RAMPZ에서 규정되는 RAM 페이지에 한정된다.
연산 : Rd ← (L + q)
구문 : LDD Rd, L + q
(Rd: 레지스터 R0 ... R31;
L: Y 및 Z 중 하나
q: 변위, 0q63 )
예 :
clr r29 ; Y 상위 바이트를 클리어
ldi r28, $20 ; Y 하위 바이트를 $20에 세트
ldd r4, Y + 2 ; 메모리 기억 장소 $22의 내용과 r4를 로드
SBIW
설명 : 상수를 16비트 논리 레지스터 L(X[R27:R26], Y[R29:R28], 또는 Z[R31:R30])에서 감산한다. 메모리 액세스는 대응의 RAM 페이징 레지스터 RAMPX, RAMPY 및 RAMPZ에서 규정된 RAM 페이지에 한정된다.
연산 : L ← L - K
구문 : SBIW L, K
(L: X, Y 및 Z 중 하나; K는 상수, 0K63)
예 :
sbiw X, 1 ; 1을 X 레지스터에서 감산
sbiw Z, 63 ; 63을 Z 레지스터에서 감산
ST
설명 : 1 바이트를 레지스터에서 메모리 기억 장소로 간접 저장하되, 메모리 기억 장소는 16비트 논리 레지스터 L(X[R27:R26], Y[R29:R28], 또는 Z[R31:R30])에 의해 포인팅된다. 논리 레지스터는 후-증가, 또는 선-감소될 수 있다. 메모리 액세스는 대응의 RAM 페이징 레지스터 RAMPX, RAMPY 및 RAMPZ에서 규정된 RAM 페이지에 한정된다.
연산 : 1: (L) ← Rd L: 변하지 않음, 논리합
2: (L) ← Rd
L ← L + 1 L: 후-증가됨, 논리합
3: L ← L - 1
(L) ← Rd L: 선-감소됨
구문 : ST L, Rd L: 변하지 않음
ST L+, Rd L: 후-증가됨
ST -L, Rd L: 선-감소됨
(L: X, Y, Z 중 하나; Rd: R0 ... R31 중 하나의 레지스터)
예 :
clr r27 ; X 상위 바이트를 클리어
ldi r26, $20 ; X 하위 바이트를 $20에 세트
st X+, r0 ; r0의 내용을 메모리 기억 장소 $20에 저장
; (X 후-증가됨)
st X, rl ; r1의 내용을 메모리 기억 장소 $21에 저장
; (X 변하지 않음)
ldi r26, $23 ; X 하위 바이트를 $23에 세트
st -X, r2 ; r2의 내용을 메모리 기억 장소 $22에 저장
; (X 선-감소됨)
STD
설명 : 한 레지스터에 대한 메모리 위치로부터의 변위에 따라서 1 바이트를 간접 저장하고, 메모리 기억 장소는 16비트 논리 레지스터 L(Y[R29:R28], 또는 Z[R31:R30])에 의해 포인팅되며, 변위값에 의해 오프셋된다. 메모리 액세스는 대응의 RAM 페이징 레지스터 RAMPY 및 RAMPZ에서 규정되는 RAM 페이지에 한정된다.
연산 : (L + q) ← Rd
구문 : LDD L + q, Rd
(L: Y 및 Z 중 하나;
q: 변위, 0q63 )
Rd: R0 ... R31 중 하나의 레지스터;
예 :
clr r29 ; Y 상위 바이트를 클리어
ldi r28, $20 ; Y 하위 바이트를 $20에 세트
std Y + 2, r4 ; r4의 내용을 메모리 기억 장소 $22에 저장
명령 디코더가, 제어 라인에 의해 다양한 마이크로 제어기 구성요소에 전송되어, 디코드된 명령을 행하는데 필요한 연산을 실현하는 제어 신호를 제공하는 것을 도 1에서 상기한다. 이 설명은, 위 여러 도에서 설명한 회로에 미치는 효과에 관하여, 상기 명령에 관련된 제어 신호에 촛점이 맞추어질 것이다.
먼저, 도 4B의 비트 전송 명령(BST, BLD)을 고려한다. 각 BST, BLD 명령은 특정의 명령과 두 개의 연산자(레지스터 연산자 Rd, 비트 위치 연산자 b)를 확인하는 연산 부호(OP_CODE) 영역을 포함한다. 이 명령들이 명령 디코더(도 1)에 의해 디코드될 때, 레지스터 선택 제어 신호와 비트 선택 제어 신호가 생성될 것이다. 이 제어 신호에 의해 다중화기(132 - 136)가 제어되어 필요한 비트를 액세스한다. BST 레지스터 선택 제어 신호는 레지스터 연산자 Rd에 바탕을 둔 BST 명령을 위해 제공된다. 이와 비슷하게, BST 비트 선택 제어 신호는 비트 위치 연산자 b를 바탕으로 제공된다. 유사한 제어 신호가 BLD 명령을 위해 제공된다.
도 4B에 도시한 바와 같이, BST 비트 선택 제어 신호에 의해 각 레지스터(R0-R31)의 8:1 다중화기(132)가 동작되어, 지정된 비트는 각 레지스터에서 32:1 다중화기(136)로 전송되게 된다. BST 레지스터 선택 제어 신호에 의해 32:1 다중화기가 동작되어, 32비트 중 지정된 비트가 선택되어, 선택된 레지스터의 선택된 비트가 8비트 데이터 버스(12)로 전송되며, 이것은 상태 레지스터의 T비트 위치로 래치(latch)된다.
BLD 명령에 대응하는 제어 신호에 의해 다중화기(130, 134)가 유사한 방법으로 동작된다. T비트로 저장된 1 비트는 데이터 버스(12)를 통하여 1:32 다중화기(134)로 전송된다. 다음에 이 비트는 BLD 레지스터 선택 제어 신호의 제어를 받는 1:8 다중화기(130) 중 하나로 전송됨으로써, 그 비트를 지정된 레지스터에 전송한다. 다음에 BLD 비트 선택 신호는 규정된 레지스터의 올바른 비트 위치로 그 비트를 출력시킨다.
다음, 16비트 논리 레지스터 X, Y, Z 중 하나에 각각 상수값을 가산 및 감산하는 16비트 산술 연산 ADIW 및 SBIW를 고려한다. 먼저 도 2B를 보면, 도 2는 ADIW 및 SBIW 명령이, 연산 부호 영역 및 상수값 연산자 K가 명령 디코더(도 1)에 의해 디코딩될 때, 제어 신호를 제공하는 것을 보여주고 있다. 연산 부호 영역은, ALU-2가 두 개의 입력에 대한 적합한 산술 연산을 실행하게 하는 가산 인에이블 또는 감산 인에이블 제어 신호를 제공한다. 상수값 연산자 K는 셀렉터(110)의 V입력에 인가되는 제어신호 V5-V0를 제공한다. 제어신호 V5-V0는 ADIW 및 SBIW 명령의 연산자에서 지정되는 상수 K를 2진수 형식으로 표시한다. 설명한 본 발명의 실시예에서, 상수 K는 6비트 데이터이다. 또한, 상수값 연산자 K는 V 선택 제어 신호를 발생하는데, 이 제어 신호에 의해 셀렉터(110)는 상수 V를 ALU-2의 입력으로 출력한다. 이후 설명되는 바와 같이, ALU-2로 입력되는 다른 입력은 데이터 버스(104)를 통하여 레지스터 파일 내의 16비트 레지스터 X, Y, Z 중 선택된 하나에서 비롯된 것이다. ALU-2의 출력은 데이터 입력 버스(102)를 통하여 레지스터 파일로 귀환되고, 선택된 16비트 레지스터에 저장됨으로써 연산을 종료한다.
도 3A 및 3B를 보면, ADIW 및 SBIW 명령에 대한 명령 디코더에 의해 제공되는 제어 신호를 고려해 본다. 레지스터 연산자 L은, 적합한 레지스터 쌍이 지정된 16비트 논리 레지스터에 대한 읽기/쓰기 액세스를 제공하는 것을 가능하게 하는 X, Y, 또는 Z 선택 제어 신호를 제공한다. X 선택 신호에 의해 레지스터 R26 및 R27가 인에이블되고, Y 선택 신호에 의해 레지스터 R28 및 R29가 인에이블되며, Z 선택 신호에 의해 레지스터 R30 및 R31가 인에이블된다. 연산 부호 영역은 데이터16_입력 인에이블 및 데이터16_출력 인에이블 제어 신호를 제공한다. 데이터16_출력 인에이블 제어 신호에 의해 데이터 출력 래치(120, 122)는 위에서 설명한 바와 같이 ALU-2로 연결되는 데이터 출력 버스(104) 상으로, 선택된 16비트 논리 레지스터에 있는 데이터를 출력한다. 반대로, 데이터16_입력 인에이블 제어 신호에 의해 데이터 입력 래치(124, 126)는 ALU-2의 출력에서 제공된 결과 합 또는 차를 입력한다.
다음은 16비트 논리 레지스터 X, Y, Z를 포함하는 로드 및 저장(store) 명령(LD, ST)이다. 먼저, 16비트 레지스터의 선-감소 또는 후-증가가 있는 LD 및 ST 연산 형식을 고려한다. 도 2C에 있어어, 동 도면에는 로드/저장 연산을 위한 연산 부호 영역은 갱신과 더불어 감소 선택 또는 증가 선택 제어 신호 중 어느 하나를 생성하며, 그 갱신은 선-감소되는가, 또는 후-증가되는가에 따른다. 감소 선택 또는 증가 선택 제어 신호에 의해 셀렉터(110)가 동작되어, ALU-2의 입력으로 인가되는 적합한 값 "-1" 또는 "+1"을 출력하게 한다. ALU-2에 대한 다른 입력은 레지스터 파일 내의 16비트 레지스터 X, Y, Z 중 선택된 하나로부터 데이터 출력 버스(104)를 통하여 수신된다. 가산 인에이블 신호가 생성되어, ALU-2로 하여금 "-1" 또는 "+1"과 선택된 16비트 레지스터의 내용을 가산하게 한다. 다중화기 선택 제어 신호에 의해 다중화기(114)는 레지스터 파일의 버스 인터페이스(14')에 번지를 출력한다. 다중화기 선택 제어 신호의 타이밍은 명령이 선-감소 명령 또는 후-증가 명령인가에 따라 변한다. 만약 선-감소 명령을 원하면, ALU-2가 그의 연산을 실행한 후에 다중화기 선택 제어 신호를 발생함으로써, ALU-2에 의한 연산 전에 다중화기(114)는 ALU-2의 출력을 버스 인터페 이스(14')에 전송 가능하다. 한편, 후-증가 명령을 원하면, 다중화기 선택 제어 신호에 의해 다중화기(114)는 데이터 버스(104)를 버스 인터페이스(14')로 전달한다. 두 경우에, ALU-2의 출력은 데이터 입력 버스(102)를 통하여 레지스터 파일로 피드백되어, 선택된 16비트 레지스터는 갱신될 수 있다.
도 3A 및 3B에 있어서, 동 도면에는 LD 및 ST 명령은 갱신과 함께 결국 X, Y, Z 선택 제어 신호, 데이터16_입력 인에이블 및 데이터16_출력 인에이블 제어 신호로 되는 것이 도시되어 있다. 이 신호들은 ADIW 및 SBIW 명령에 대한 것과 같은 방법으로 기능하고, 모든 경우에 있어서 16비트 레지스터의 내용이 갱신된다. 이 제어 신호에 부가하여, R0 - R31 선택 신호, 데이터8_입력 및 데이터8_출력 신호가, LD 및 ST 명령의 레지스터 연산자 Rd를 디코딩한 결과로서 제공된다. 로드 명령에 대해서, 데이터8_입력 제어 신호는 하위 바이트 데이터 입력 래치(126)를 동작시켜서, 16비트 레지스터에 의해 참조되는 데이터에서 래치되며, R0 - R31 선택 제어 신호에 의해 선택된 8비트 레지스터에 로드된다. 저장 명령에 대해, 데이터8_출력 제어 신호는 하위 바이트 데이터 출력 래치(122)를 동작시켜서, R0 - R31 선택 제어 신호에 의해 선택된 8비트 레지스터의 내용을 출력시키고, 이것은 16비트 레지스터에 의해 포인팅되는 메모리 기억 장소에 저장된다.
다음에, 갱신 없는 즉, 선-감소 또는 후-증가 없는 LD 및 ST 명령의 형식을 고려한다. 도 2C와 관련하여, 선택된 16비트 레지스터의 갱신이 없으므로, 단지 다중화기 선택 제어 신호는 16비트 레지스터(데이터 출력 버스(104)를 통하여)를 간접 번지 버스(14)에 전송하기 위해 필요하다. 도 3B와 관련하여, 갱신과 더불어 LD 및 ST 명령에 대한 것과 동일한 제어 신호가 발생되는데, 16비트 레지스터의 갱신이 발생하지 않으므로 데이터16_입력 인에이블 제어 신호를 필요로 한다.
로드 및 저장 연산의 제3 형태는, 선택된 16비트 레지스터에 가산되는 변위 q를 이용한다. 이것이 LDD 및 STD 명령이다. 도 2B에서 볼 수 있듯이, LDD 및 STD 명령은 ADIW 및 SBIW 명령과 매우 유사한 방법으로 동작한다. 변위값 q는 제어 신호 V5- V0로 표시된다. 가산 인에이블 제어 신호로, ALU-2는 이 변위를 선택된 16비트 레지스터에 가산한다. 그러나, ADIW 및 SBIW와 다르게, LDD 및 STD 명령은, 계산된 값을 번지로서 간접 번지 버스에 출력 가능하게 하는, 다중화기 선택 신호를 발생한다. 도 3A 및 3B로 돌아가서, LDD 및 STD 명령은 LD 및 ST 명령과 본질적으로 같은 제어 신호를 발생하며, 16비트 레지스터의 갱신이 발생하지 않으므로 데이터16_입력 인에이블이 생성되지 않는 점과, LDD 및 STD 명령은 Y 및 Z 레지스터에 한정되는 두 가지 예외가 있다.
도 3B에 도시한 바와 같이, 점프 명령 IJMP, ICALL은 단순히 Z 레지스터의 선택과, Z 레지스터의 내용을 간접 번지 버스(14)로 출력시키는 데이터16_출력 인에이블 제어 신호를 포함한다. 도 2B에서, IJMP 및 ICALL 명령은 다중화기_선택 제어 신호를 생성하여, 다중화기(114)를 동작시켜 Z 레지스터의 내용이 레지스터 파일의 데이터 출력 버스(104)에서 번지 버스(14)로 전송될 수 있게 한다. 번지는 PC 카운터에 로드되어, 실행 제어의 흐름을 바꾼다.
도 3B에 도시된 캐리 비교(compare-with-carry) CPC 명령은 단순히, 명령의 각 레지스터 연산자 Rd, Rr에 대하여, R0 - R31 선택 제어 신호 중 하나의 생성을 포함한다. 데이터8_출력 제어 신호는 선택된 8비트 레지스터의 내용을 출력시킨다.
부가적인 제어 신호(도시하지 않음)가 생성되어, 8비트 ALU-1이 Rr 레지스터 및 캐리 비트 내용의 합을, Rd 레지스터의 내용에서 감산하게 한다. 이 연산의 결과는 저장되지 않는다. 그러나, 상태 레지스터의 플래그는 연산의 결과에 따라 세트된다.
CPC 명령은, 8비트 환경에서 16비트 성능을 제공함으로써, 마이크로 제어기의 8비트 구조를 진보시킨다. 8비트 연산의 캐리 결과는, 16비트 효과를 제공하기 위해 차후의 8비트 CPC 연산에서 이용될 수 있다. 예를 들어, 16비트 비교가 다음과같이 이루어질 수 있다.
:
:
: 레지스터 R3 및 R2에 있는 16비트 값과, 레지스터 R1 및 R0에 있는 16비트 값을 비교
:
cp r2, r0 : 하위 바이트를 비교
cpc r3, r1 : 상위 바이트를 비교
brne LABEL : 같지 않으면 분기
:
:
LABEL: :
:
cp 명령은 차후의 cpc 명령에서 사용되는 캐리 비트에 영향을 미칠 것이다. 레지스터 쌍 R3/R2 및 R1/R0는 두 개의 16비트 값을 보유하는 레지스터로서 효과적인 역할을 할 것이다.
본 발명의 마이크로 제어기에 관하여 나타낸 명령 및 논리 회로에 관련된 제어 신호에 대한 설명을 마친다. 이 신호들은 단지 위의 명령 실행에 포함된 제어 신호만은 아니라는 것이 이해되었다. 부가적인 신호들이 제공되어, 마이크로 제어기의 다른 요소들을 제어한다. 예를 들어, 번지 및 읽기/쓰기 스트로브(strobes : 데이터를 얻게 하는 신호)가 메모리 액세스를 포함하는 위의 명령을 위하여 생성된다. 또한, 실행 타이밍 제어는, 제어 신호 발생을 적절하게 동기화하기 위해 필요하다. 그러나, 통상의 통합 컴퓨터 회로 기술 분야의 당업자라면 과도한 실험 없이, 본 발명을 실시하기 위한 소요 추가 제어 신호와 이러한 신호의 필요한 타이밍을 결정할 수가 있다.

Claims (20)

  1. 하버드 구조를 갖는 마이크로 제어기로서,
    프로그램 버스와;
    프로그램을 저장하기 위한 프로그램 메모리 기억 장치와;
    상기 프로그램 버스를 통해 상기 프로그램 메모리 기억 장치에 결합되는 명령 디코더와;
    상기 프로그램 버스와는 별개의 8 비트 데이터 버스와;
    상기 8 비트 데이터 버스에 결합된, 상기 프로그램 메모리 기억 장치와는 별개의 랜덤하게 액세스 가능한 메모리와;
    상기 8 비트 데이터 버스에 연결되고, 복수의 8 비트 레지스터를 가지며, 단일 16 비트 논리 레지스터로서 액세스될 상기 8 비트 레지스터 중 두 개의 레지스터를 결합하기 위한 결합 수단을 포함하는 레지스터 파일과;
    상기 8 비트 레지스터 중 두 개의 레지스터의 내용을 수신하도록 결합되며, 상기 8 비트 데이터 버스에 연결된 출력을 갖는 범용 ALU와;
    프로그램 실행시, 상기 명령 디코더를 상기 데이터 기억 장치 및 상기 레지스터 파일에 직접 액세스 하도록 결합하는 직접 번지 버스와;
    프로그램 실행시, 상기 랜덤하게 액세스 가능한 메모리에 대한 간접 데이터 액세스와 함께 상기 레지스터 파일을 제공하는 간접 번지 버스를 포함하며,
    상기 레지스터 파일은 상기 결합 수단을 통해 액세스되는 16 비트 논리 레지스터에서 산술 연산을 수행하도록 상기 결합 수단에 결합된 전용 ALU를 더 포함하고,
    상기 간접 번지 버스는 상기 결합 수단으로부터 16 비트값을 수신하기 위한 번지 수신 수단을 가짐으로써 16 비트 간접 번지 지정을 제공하는 것인 마이크로 제어기.
  2. 제1항에 있어서, 상기 레지스터 파일은 -1의 수치 상수, +1의 수치 상수, 또는 프로그램 생성값을 출력하는 셀렉터 수단을 더 포함하고, 상기 전용 ALU는 상기 결합 수단을 통해 액세스되는 16 비트 논리 레지스터로 산술 연산을 수행하도록 상기 셀렉터 수단으로부터의 출력을 수신하도록 결합되는 것인 마이크로 제어기.
  3. 제2항에 있어서, 상기 두 개의 8 비트 레지스터 중 하나는 상기 16비트 논리 레지스터의 하위 바이트이고, 상기 두 개의 8 비트 레지스터 중 다른 하나는 상기 16 비트 논리 레지스터의 상위 바이트인 것인 마이크로 제어기.
  4. 제1항에 있어서, 상기 번지 수신 수단에 결합되어 상기 결합 수단이 제공하는 16 비트 번지와 상기 페이징 레지스터의 내용으로부터 번지를 형성하는 번지 형성 수단과 페이징 레지스터를 더 포함하는 것인 마이크로 제어기.
  5. 제4항에 있어서, 상기 페이징 레지스터는 8 비트 레지스터이고 상기 8 비트 데이터 버스에 연결되며, 상기 페이징 레지스터로 값을 로딩하는 것은 64K 바이트 각각의 256 페이지 중 하나를 지정하는 것인 마이크로 제어기.
  6. 제1항에 있어서, 1 비트를 저장하기 위한 비트 기억 장치와, 상기 비트 기억 장치 및 상기 레지스터 파일로부터 선택된 레지스터 내의 비트 기억 장소 사이에서 비트를 전송하기 위한 수단을 더 포함하는 것인 마이크로 제어기.
  7. 제6항에 있어서, 상기 8 비트 데이터 버스에 연결되며, 상기 비트 기억 장치로서 기능하는 복수의 비트 위치를 갖는 상태 레지스터를 더 포함하는 것인 마이크로 제어기.
  8. 프로그램 버스, 프로그램 기억 장치, 상기 프로그램 버스를 통해 상기 프로그램 기억 장치에 연결되는 프로그램 실행 장치, 8 비트 데이터 버스, 상기 데이터 버스에 연결된 상기 프로그램 기억 장치와는 별개의 데이터 기억 장치, 상기 데이터 버스에 연결된 출력을 갖는 범용 8 비트 ALU 및 상기 프로그램 실행 장치를 상기 데이터 기억 장치에 연결하는 제1 번지 버스를 포함하는 8 비트 마이크로 제어기로서,
    8 비트 레지스터 중 두 개의 레지스터에서 8 비트 산술 연산을 제공하도록 상기 범용 8비트 ALU에 의해 액세스 가능한 복수의 8 비트 레지스터와, 16 비트 레지스터로서 상기 8 비트 레지스터 중 두 개의 레지스터에 대한 액세스 제공하는 레지스터 수단과, 16 비트 ALU 및 값 셀렉터를 갖는 레지스터 파일-상기 16 비트 ALU는 상기 레지스터 수단으로부터 16 비트 데이터를 수신하고 상기 값 셀렉터로부터 수치값을 수신하도록 결합되어 상기 16 비트 데이터 및 상기 수치값으로부터 계산을 실행한다-과;
    상기 레지스터 파일과 상기 데이터 기억 장치 사이에 결합되며, 상기 16 비트 ALU로부터의 계산 결과값을 수신하는 제2 번지 버스-상기 계산 결과값은 상기 데이터 기억 장치 내의 메모리 기억 장소의 번지로서 이용된다-를 포함하는 것인 8 비트 마이크로 제어기.
  9. 제8항에 있어서, 상기 값 셀렉터는 -1의 수치 상수, +1의 수치 상수, 또는 프로그램 생성 수치값을 제공하는 것인 8 비트 마이크로 제어기.
  10. 제9항에 있어서, 상기 레지스터 파일은 상기 16 비트 ALU의 계산 결과값 또는 16비트 데이터 중 어느 하나를 상기 레지스터 수단으로부터 상기 제2 번지 버스로 전송하기 위한 수단을 포함하는 것인 8 비트 마이크로 제어기.
  11. 제10항에 있어서, 페이징 레지스터와, 상기 페이징 레지스터의 내용과 상기 레지스터 수단에서 제공하는 16 비트 번지에 기초해서 확장된 번지를 형성하기 위한 수단을 더 포함하는 것인 8 비트 마이크로 제어기.
  12. 제11항에 있어서, 외부 번지 버스와, 상기 확장 번지를 상기 외부 번지 버스 및 상기 제2 번지 버스에 선택적으로 결합하기 위한 수단을 더 포함하는 것인 8 비트 마이크로 제어기.
  13. 제12항에 있어서, 상기 페이징 레지스터는 8 비트 레지스터인 것인 8 비트 마이크로 제어기.
  14. 제12항에 있어서, 비트 기억 장치와, 상기 비트 기억 장치 및 상기 레지스터 파일의 레지스터 내의 비트 기억 장소 사이에서 1 비트 데이터를 전송하기 위한 수단을 더 포함하는 것인 8 비트 마이크로 제어기.
  15. 제14항에 있어서, 상기 8 비트 데이터 버스에 결합된 상태 레지스터를 더 포함하고, 상기 비트 기억 장치는 상기 상태 레지스터 내의 비트 기억 장소인 것인 8비트 마이크로 제어기.
  16. 하바드 기반 구조를 갖는 8 비트 마이크로 제어기로서,
    프로그램 명령을 디코딩하여 제어 신호를 생성하는 프로그램 명령 디코더와;
    랜덤하게 액세스 가능한 메모리와;
    복수의 8 비트 레지스터, 상기 복수의 8 비트 레지스터 중 두 개의 레지스터를 단일의 16 비트 논리 레지스터로서 액세스하는 레지스터 수단, +1값 또는 -1값을 출력하는 수치값 셀렉터 및 상기 수치값 셀렉터의 출력을 상기 단일 16 비트 논리 레지스터에 가산하는 16 비트 가산기를 포함하는 레지스터 파일과;
    상기 8 비트 레지스터 중 두 개의 레지스터의 내용을 수신하도록 연결되어 산술 연산을 수행하는 8 비트 ALU와;
    상기 8 비트 레지스터 중 한 개의 레지스터에서 비트를 수신하고, 비트를 상기 8 비트 레지스터 중 한 개의 레지스터에 복사하는 전송 비트를 갖는 상태 레지스터와;
    상기 8 비트 레지스터 중 한 개의 레지스터와 상기 상태 레지스터의 상기 전송 비트 사이에서 비트를 전송하는 비트 전송 수단과;
    상기 데이터 기억 장치, 상기 레지스터 파일, 상기 8 비트 ALU, 상기 상태 레지스터 및 상기 비트 전송 수단을 함께 결합하는 8 비트 데이터 버스와;
    상기 랜덤하게 액세스 가능한 메모리 내의 메모리 기억 장소에 액세스하도록 상기 레지스터 파일을 상기 랜덤하게 액세스 가능한 메모리에 결합하기 위한 번지 버스와;
    상기 제어 신호를 상기 레지스터 파일, 상기 8 비트 ALU, 상기 상태 레지스터 및 상기 비트 전송 수단에 전송하는 제어 라인을 포함하는 8 비트 마이크로 제어기.
  17. 제16항에 있어서, 증가 또는 감소 코드를 규정하는 수치적 연산 부호(opcode) 및 상기 한 쌍의 8 비트 레지스터 중 하나를 규정하는 레지스터 쌍 연산 부호를 각각 갖는 프로그램 명령의 제1 서브세트를 포함하고, 상기 명령 디코더는 상기 레지스터 수단이 16 비트 레지스터로서 상기 레지스터 쌍을 액세스 가능하게 하고, 상기 수치값 셀렉터가 "+1" 또는 "-1"을 출력 가능하게 하며, 상기 16 비트 가산기가 상기 셀렉터의 상기 출력을 상기 16 비트 레지스터에 가산 가능하게 하는 상기 레지스터 쌍 연산 부호 및 상기 수치 연산 부호에 응답하여 제1 제어 신호를 생성하는 것인 8 비트 마이크로 제어기.
  18. 제17항에 있어서, 상기 수치값 셀렉터는 수치 상수를 수신하여 상기 수치 상수를 출력하는 수단을 포함하고, 상기 프로그램 명령의 제1 서브세트 중 일부는 수치값을 규정하는 수치 연산 부호를 가지며, 상기 프로그램 명령 디코더는 수치값을 규정하는 상기 수치 연산 부호에 응답하여 상기 수치값 셀렉터로 수신되는 상기 수치값의 2 진 표현인 제2 제어 신호를 생성하는 것인 8 비트 마이크로 제어기.
  19. 제18항에 있어서, 상기 레지스터 파일 내의 레지스터를 식별하기 위한 레지스터 연산 부호와, 상기 레지스터 연산 부호에 의해 식별되는 레지스터의 비트 위치를 규정하는 비트 연산 부호를 각각 갖는 프로그램 명령의 제2 서브 세트를 더 포함하고, 상기 명령 디코더는 상기 레지스터 연산 부호와 상기 비트 연산 부호에 응답하여, 상기 비트 전송 수단으로 하여금 상기 상태 레지스터의 전송 비트와 상기 레지스터 연산 부호 및 상기 비트 연산 부호에 의해 지정된 비트 위치 사이에서 비트를 전송 가능하게 하는 제3 제어 신호를 생성하는 것인 8 비트 마이크로 제어기.
  20. 제19항에 있어서, 목적지 레지스터 연산 부호 및 소스 레지스터 연산 부호를 갖는 프로그램 명령을 더 포함하고, 그 각각의 연산 부호는 상기 8 비트 레지스터 중 한 개의 레지스터를 규정하며, 상기 상태 레지스터는 캐리 비트를 더 포함하고, 상기 8 비트 ALU는 상기 캐리 비트를 수신하도록 결합되며, 상기 명령 디코더는 상기 8비트 ALU가 Rd - Rr - C(Rd 및 Rr은 상기 목적지 레지스터 연산 부호 및 상기 소스 레지스터 연산 부호에 의해 각각 확인되는 레지스터 내용이고, C는 상기 캐리 비트의 내용)의 산술 계산을 수행하게 하는 상기 목적지 레지스터 연산 부호 및 상기 소스 레지스터 연산 부호에 응답하여 제4 제어 신호를 생성하는 것인 8비트 마이크로 제어기.
KR10-1999-7003950A 1996-11-07 1997-10-30 Risc 구조의 8비트 마이크로 제어기 Expired - Fee Related KR100465388B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/745,098 1996-11-07
US08/745,098 US5854939A (en) 1996-11-07 1996-11-07 Eight-bit microcontroller having a risc architecture
US8/745,098 1996-11-07

Publications (2)

Publication Number Publication Date
KR20000053047A KR20000053047A (ko) 2000-08-25
KR100465388B1 true KR100465388B1 (ko) 2005-01-13

Family

ID=24995260

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7003950A Expired - Fee Related KR100465388B1 (ko) 1996-11-07 1997-10-30 Risc 구조의 8비트 마이크로 제어기

Country Status (9)

Country Link
US (1) US5854939A (ko)
EP (2) EP0954791B1 (ko)
JP (1) JP3694531B2 (ko)
KR (1) KR100465388B1 (ko)
CN (1) CN1115631C (ko)
AT (1) ATE291256T1 (ko)
DE (1) DE69732793T2 (ko)
TW (1) TW355772B (ko)
WO (1) WO1998020422A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2766937B1 (fr) * 1997-07-31 2001-04-27 Sqware T Protocole et systeme de liaison par bus entre elements d'un microcontroleur
JPH1165840A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
US6577316B2 (en) * 1998-07-17 2003-06-10 3Dlabs, Inc., Ltd Wide instruction word graphics processor
US6367000B1 (en) * 1998-09-30 2002-04-02 Intel Corporation Fast conversion of encoded tag bits
US6850990B1 (en) * 1999-07-14 2005-02-01 Landesk Software Limited Transfer of synchronized data from 16-bit code to a 32-bit process
US20050166031A1 (en) * 2002-04-26 2005-07-28 Holmberg Anders P. Memory access register file
US7600161B2 (en) 2004-08-13 2009-10-06 Gm Global Technology Operations, Inc. Method of verifying integrity of control module arithmetic logic unit (ALU)
CN100430890C (zh) * 2005-08-31 2008-11-05 上海海尔集成电路有限公司 一种8位risc微控制器
US8533439B2 (en) * 2005-11-07 2013-09-10 Atmel Corporation Elastic shared RAM array including contiguous instruction and data portions distinct from each other
US8417922B2 (en) * 2006-08-02 2013-04-09 Qualcomm Incorporated Method and system to combine multiple register units within a microprocessor
CN101436120B (zh) * 2007-08-17 2011-05-04 凹凸电子(武汉)有限公司 微控制器、执行指令的方法及电子系统
TW200933385A (en) * 2008-01-22 2009-08-01 Sonix Technology Co Ltd Microcontroller having dual-core architecture
CN101539849B (zh) * 2009-04-21 2013-10-16 北京红旗胜利科技发展有限责任公司 一种处理器以及一种寄存器选通方法
JP5625903B2 (ja) 2010-12-29 2014-11-19 富士通株式会社 演算処理装置および演算処理方法
CN102033733B (zh) * 2011-01-14 2012-12-19 北方工业大学 新型mcu结构
US10514911B2 (en) 2014-11-26 2019-12-24 International Business Machines Corporation Structure for microprocessor including arithmetic logic units and an efficiency logic unit
CN107621949A (zh) * 2016-07-15 2018-01-23 龙芯中科技术有限公司 内存拷贝方法及装置
US12346695B2 (en) * 2021-09-25 2025-07-01 Intel Corporation Copy a subset of status flags from a control and status register to a flags register

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5465332A (en) * 1992-09-21 1995-11-07 International Business Machines Corporation Selectable 8/16 bit DMA channels for "ISA" bus
US5490256A (en) * 1993-04-06 1996-02-06 International Business Machines Corporation Method and mechanism for calling 32-bit functions from 16-bit functions

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US566651A (en) * 1896-08-25 Combined saw stretcher and shears
JPS5779551A (en) * 1980-11-06 1982-05-18 Nec Corp Information transfer device
JPS58142464A (ja) * 1982-02-19 1983-08-24 Hitachi Ltd マイクロプロセツサ
US4649511A (en) * 1983-07-25 1987-03-10 General Electric Company Dynamic memory controller for single-chip microprocessor
JPS623333A (ja) * 1985-06-28 1987-01-09 Yokogawa Hewlett Packard Ltd ビツト群置数方式
JPS6226561A (ja) * 1985-07-26 1987-02-04 Toshiba Corp パ−ソナルコンピユ−タ
US4831514A (en) * 1986-02-14 1989-05-16 Dso "Izot" Method and device for connecting a 16-bit microprocessor to 8-bit modules
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
KR0163179B1 (ko) * 1989-03-31 1999-01-15 미다 가쓰시게 데이타 프로세서
JP2995752B2 (ja) * 1989-07-21 1999-12-27 日本電気株式会社 バスアーキテクチャ変換回路
US5333284A (en) * 1990-09-10 1994-07-26 Honeywell, Inc. Repeated ALU in pipelined processor design
EP0483967A3 (en) * 1990-10-29 1993-07-21 Sun Microsystems, Inc. Apparatus for increasing the number of registers available in a computer processor
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
KR100272622B1 (ko) * 1991-05-08 2000-11-15 가나이 쓰도무 데이타 처리장치
JP3486630B2 (ja) * 1991-05-08 2004-01-13 株式会社ルネサステクノロジ データ処理装置
JP2718292B2 (ja) * 1991-07-24 1998-02-25 日本電気株式会社 マイクロプロセッサ
DE69228975T2 (de) * 1991-10-28 1999-11-18 Eastman Kodak Co., Rochester Steuerungsschaltung zur Datenübertragung von einem VME-Bus zu einer SCSI-Platteneinheit
JP2932963B2 (ja) * 1994-01-21 1999-08-09 モトローラ・インコーポレイテッド 効率的なビット移動能力を有するデータ・プロセッサとその方法
JPH0844665A (ja) * 1994-07-14 1996-02-16 Fujitsu Ltd 複数のデータ転送サイズ及びプロトコルをサポートするバス

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5465332A (en) * 1992-09-21 1995-11-07 International Business Machines Corporation Selectable 8/16 bit DMA channels for "ISA" bus
US5490256A (en) * 1993-04-06 1996-02-06 International Business Machines Corporation Method and mechanism for calling 32-bit functions from 16-bit functions

Also Published As

Publication number Publication date
EP0954791A4 (en) 2003-06-11
CN1115631C (zh) 2003-07-23
DE69732793D1 (de) 2005-04-21
TW355772B (en) 1999-04-11
EP0954791A1 (en) 1999-11-10
EP0954791B1 (en) 2005-03-16
US5854939A (en) 1998-12-29
WO1998020422A1 (en) 1998-05-14
ATE291256T1 (de) 2005-04-15
JP3694531B2 (ja) 2005-09-14
HK1022358A1 (en) 2000-08-04
CN1236455A (zh) 1999-11-24
EP1596279A2 (en) 2005-11-16
KR20000053047A (ko) 2000-08-25
JP2001504959A (ja) 2001-04-10
DE69732793T2 (de) 2006-04-06
EP1596279A3 (en) 2010-03-10

Similar Documents

Publication Publication Date Title
US7558942B1 (en) Memory mapped register file and method for accessing the same
KR100465388B1 (ko) Risc 구조의 8비트 마이크로 제어기
US5303358A (en) Prefix instruction for modification of a subsequent instruction
EP0138419B1 (en) Central processing unit for a digital computer
US6539467B1 (en) Microprocessor with non-aligned memory access
JP5199931B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
US5481734A (en) Data processor having 2n bits width data bus for context switching function
US7228401B2 (en) Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
EP0465248B1 (en) Pseudo-linear bank switching memory expansion
KR20010043826A (ko) 마이크로 컨트롤러 명령어 집합
EP0614137A2 (en) Data processing system providing an extensible register and method thereof
US4812971A (en) Central processing unit for a digital computer
US4893235A (en) Central processing unit for a digital computer
US6098160A (en) Data pointer for outputting indirect addressing mode addresses within a single cycle and method therefor
JP2000039995A (ja) 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
US6505225B1 (en) Adder logic circuit and processor
US5649229A (en) Pipeline data processor with arithmetic/logic unit capable of performing different kinds of calculations in a pipeline stage
EP0915416B1 (en) System for allowing a two word instruction to be executed in a single cycle and method therefor
US11775310B2 (en) Data processing system having distrubuted registers
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
CA1250666A (en) Central processing unit for a digital computer

Legal Events

Date Code Title Description
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

A201 Request for examination
P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

FPAY Annual fee payment

Payment date: 20111208

Year of fee payment: 8

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 8

FPAY Annual fee payment

Payment date: 20121210

Year of fee payment: 9

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 9

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20131230

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20131230

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000