KR20000053047A - Risc 구조의 8비트 마이크로 제어기 - Google Patents
Risc 구조의 8비트 마이크로 제어기 Download PDFInfo
- Publication number
- KR20000053047A KR20000053047A KR1019990703950A KR19997003950A KR20000053047A KR 20000053047 A KR20000053047 A KR 20000053047A KR 1019990703950 A KR1019990703950 A KR 1019990703950A KR 19997003950 A KR19997003950 A KR 19997003950A KR 20000053047 A KR20000053047 A KR 20000053047A
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- register
- registers
- program
- alu
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims description 47
- 238000012546 transfer Methods 0.000 claims description 22
- 238000013500 data storage Methods 0.000 claims description 13
- 230000005055 memory storage Effects 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 4
- 238000000034 method Methods 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims 4
- 238000013461 design Methods 0.000 abstract description 11
- 230000003068 static effect Effects 0.000 description 11
- 238000006073 displacement reaction Methods 0.000 description 8
- 235000005282 vitamin D3 Nutrition 0.000 description 6
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 240000007320 Pinus strobus Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7814—Specially adapted for real time processing, e.g. comprising hardware timers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent 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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Communication Control (AREA)
- Image Processing (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
현재의 초미세 CMOS 기술은 하나의 칩에 복합 마이크로 제어기 구조 집적을 가능하게 하고, 복합 메모리 및 주변 논리 장치의 동작을 수행하는데 충분한 실리콘 공간을 허용한다. 하이 엔드(high-end) 32비트 및 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으로 존재하므로 레지스터 연산이 포함되는 작업이 줄어든다.
위에서 설명한 바와 같이, 빠른 설계 사이클은 마이크로 제어기를 이용한 설계에서 중요한 항목이다. 컴퓨터 기반 시스템에서 소프트웨어가 작동하는 역할이 중요하다는 것은 의심의 여지가 없다. 그러므로, 마이크로 제어기 설계의 유틸리티는, 프로그래머와 하드웨어 설계자 사이의 명세서 인터페이스 즉, 마이크로 제어기 명령 세트에 곧바로 연관된다. 어떤 연산 가능한 기능이 알맞은 프로그램 공간 내에서 실행 가능해야만 한다는 생각 하에서 명령 세트는 완성되어야 한다. 명령 세트는 빈번하게 사용되는 기능이, 연관되는 적은 명령으로 실행 가능해야만 하는것 속에서 유효해야 한다. 그러므로, 어플리케이션 소프트웨어 개발자에게 완전하고 효과적인 명령 세트를 제공하는 마이크로 제어기 설계를 제공하는 것이 필요하다.
본 발명은 일반적으로 마이크로 제어기에 관한 것이고, 더욱 구체적으로는 축소된 명령 세트를 실행하는 마이크로 제어기에 관한 것이다.
도 1은 본 발명의 마이크로 제어기의 개략 배치도.
도 2A 내지 도 2C는 도 1의 마이크로 제어기에서 사용된 레지스터 파일의 내부 표시를 나타낸 도면.
도 3A 및 도 3B는 도 2A 내지 도 2C에서 도시한 레지스터 파일의 레지스터 구성을 예시하는 도면.
도 4A 및 도 4B는 본 발명의 비트 기억 장치를 나타내는 도면.
도 5는 본 발명에 따라 페이징 레지스터를 이용하는 24비트 논리 번지의 구조를 예시하는 도면.
도 6은 도 1의 마이크로 제어기에 도 5에서 도시한 페이징 레지스터를 통합하여 나타낸 도면.
본 발명은 8비트 RISC 구조를 갖는 마이크로 제어기이다. 8비트 데이터 버스는 RAM 메모리 기억 장치(store), 레지스터 파일, 범용 8비트 산술 논리 장치(ALU) 및 상태 레지스터 사이에 데이터 경로를 제공한다. 마이크로 제어기는 하바드 구조를 실현하고, RAM 기억 장치에서 분리된 프로그램 메모리 기억 장치와, 데이터 버스에서 분리된 프로그램 데이터 버스를 제공한다.
레지스터 파일은 다수의 8비트 레지스터를 갖추고 있다. 레지스터 파일의 레지스터 중 몇 개는 논리적인 16비트 레지스터를 제공하기 위해 결합될 수 있다. 논리적인 16비트 레지스터는 효과적인 번지 계산을 제공하고, 데이터 메모리와 프로그램 메모리에 대한 간접 번지 포인터로서 사용된다. 데이터에 대해서 또는 프로그램 메모리에 대해서, 16비트 번지 공간은 프로그램 번지 공간과 데이터 번지 공간을 증가시킴으로써 마이크로 제어기의 융통성과 유틸리티를 크게 확대한다. 본 발명의 바람직한 실시예에서, 레지스터 파일은 세 개의 독립적인 16비트 논리 레지스터로서, 액세스(access; 읽기/쓰기) 가능한 세 쌍의 8비트 레지스터를 제공한다.
16비트 번지 지정의 장점을 더 늘리기 위해, 레지스터 파일 전용의 특별한 두번째 ALU가 장착되어 있다. 두번째 ALU는 16비트 가산기를 포함하고, 논리적인 16비트 레지스터에 대한 16비트 산술 연산을 제공한다. 두번째 ALU는 16비트 결과값을 논리적인 16비트 레지스터에 다시 저장할 수 있다. 부가적으로, 16비트 결과는 번지로서 소용된다. 그러므로, 두번째 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) 구조 속에 설계되었다. 데이터 버스는 마이크로 제어기를 포함한 다양한 구성 요소에 대한 데이터 경로를 제공한다. 내장된 스테틱 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비트 계산을 돕기 위해 레지스터 파일에 전용으로 설정되 있는 두번째 산술 논리 장치 ALU-2를 포함한다. 산술 논리 장치 ALU-2는 16비트 설계이고, 일반적으로 간접 번지 포인터를 규정하는 특정의 연산을 제공하는 것을 목적으로 제작되었다. ALU-2는 레지스터 파일의 데이터 출력 버스(104)에 의해 전송되는 첫번째 입력을 갖는다. ALU-2는 셀렉터(selector; 110)에 의해 전송되는 두번째 입력을 갖는다. 셀렉터(110)는 수치값 -1, 수치값 +1 및 상수 V 세 개의 선택 사이에서 비롯되는 수치값을 선택한다. ALU-2의 출력은 데이터 입력 버스(102)를 통해 X, Y, Z 레지스터로 귀환되고, 레지스터의 내용이 갱신되게 한다. 다중화기(mux; 114)는 레지스터 파일의 버스 인터페이스(14')로 연결된다. 다중화기(114)의 한 개의 입력은 ALU-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비트 입력에 어떤 비트를 래치하고, 해당 다중화기 입력을 8 개의 출력 중 하나로 전송함으로써 레지스터 내의 어떠한 비트 위치에 그 비트를 로드 할 수 있다. 또한 각각의 레지스터는, 8비트 입력의 각각이 레지스터 내의 비트로 연결되는 한 개의 8:1 다중화기(132)를 갖추고 있다. 그러므로, 레지스터 내의 어떤 비트 위치는 대상 비트와 일치하는 다중화기 입력을 선택함으로써 복사될 수 있다.
계속하여, 레지스터 파일은 논리적으로 1:32 다중화기(134)와 32:1 다중화기(136)를 포함한다. 먼저 1:32 다중화기(134)를 보면, 이 다중화기는 8비트 데이터 버스(12)에서 비롯되는 한 개의 비트 입력을 가진다. 입력은 32 개의 출력 중 하나로 전송될 수 있다. 바꿔 말하면, 32 개 출력의 각각은 1:8 다중화기(130)들 중 하나의 입력에 연결되어서, 데이터 버스(12)에서 레지스터 파일의 레지스터 R0 - R31 중 어떤 레지스터 내의 임의 비트 위치로 가는 경로를 제공한다. 다음의 32:1 다중화기(136)를 보면, 8:1 다중화기(132)를 각각의 출력은 다중화기(136)의 32 개 입력 중 하나에 연결된다. 바꿔 말하면, 다중화기(136)의 1비트 출력은 데이터 버스(12)에 연결되어, 레지스터 R0 - R31 중 어떤 레지스터 내의 임의의 비트 위치에서 데이터 버스로 가는 데이터 경로를 제공한다.
도 4A에 도시한 상태 레지스터는 전송 비트를 위한 T비트로 알려진, 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까지의 번지 범위가 내장 메모리(레지스터 파일, 스테틱 RAM)의 메모리 기억 장소에 매핑(mapping)되고, N에서 16M-1까지의 나머지 번지 범위는 외부 RAM의 메모리 기억 장소에 매핑된다. 예를 들어, 내장 메모리가 전체 64K 바이트이면, 내장 번지 범위는 $00에서 $FFFF($:16진수 표기법)까지이고, 외부 RAM의 번지 범위는 $10000에서 $FFFFFF까지이다. 내장 메모리의 전체 크기는 본 발명의 유틸리티나 동작 성능에 영향을 주지 않고 변화될 수 있고, 실제 메모리 크기는 유용한 실리콘 영역, 장치 결합 구조 및 설계 규칙과 같은 설계 기준에 좌우된다.
내장 메모리와 외부 RAM이 주어진 번지에 정확하게 액세스하는 것을 확실히 하기 위해서, 두번째 셀렉터(13)는 번지를 내부 번지 버스(14) 또는 외부 번지 버스(20)에 전송한다. 바람직한 실시예에서, 셀렉터(13)는 한 개의 다중화기 입력이 두 개의 출력 중 하나로 전송되는 1:2 다중화기이다. 여기서, 한 개의 입력은 셀렉터(11)에서 출력되는 24비트 번지 라인이다. 셀렉터(13)의 출력 중 하나는 번지 버스(14)에 연결되어 있고, 다른 출력은 외부 번지 버스(20)에 연결되어 있다. 내장 메모리 번지 범위 내에서 번지를 검출하고, 셀렉터(13)는 자신의 입력을 번지 버스(14)에 전송한다. 24비트 번지의 하위 순서 16비트[15...0]만이 번지 버스(14)에 전송되는 것을 주시한다. 반대로, 셀렉터(13)는 외부 메로리의 번지 범위 내에서 번지를 검출하면서, 자신의 입력을 외부 번지 버스(20)에 전송할 것이다. 여러가지 검출 설계가 가능하며, 평범한 기술을 가진 설계자의 능력에 달려 있다. 예를 들어, 하나가 24비트 번지의 상위 순서 8비트(비트[23...0])와 함께 논리합(OR) 될 수 있고, 셀렉터(13)를 제어하기 위해 결과값을 사용한다. 만약 논리합 연산 결과가 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
설명 : 한 개의 바이트를, 변위와 함께 메모리 기억 장소에서 레지스터로 간접 로드하고, 메모리 기억 장소는 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
설명 : 한 개의 바이트를 레지스터에서 메모리 기억 장소로 간접 저장하고, 메모리 기억 장소는 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
설명 : 한 개의 바이트를, 변위와 함께 레지스터에서 메모리 기억 장소로 간접 저장하고, 메모리 기억 장소는 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비트에 저장된 한 개의 비트는 데이터 버스(12)를 통하여 1:32 다중화기(134)로 전송된다. 다음에 이 비트는 BLD 레지스터 선택 제어 신호의 제어를 받는 1:8 다중화기(130) 중 하나로 전송되고, 그 비트를 지정된 레지스터에 전송한다. 다음에 BLD 비트 선택 신호는 지정된 레지스터의 올바른 비트 위치로 그 비트를 출력시킨다.
다음, 16비트 논리 레지스터 X, Y, Z 중 하나에 각각 상수값을 가산 및 감산하는 16비트 산술 연산 ADIW 및 SBIW를 본다. 먼저 도 2B를 보면, ADIW 및 SBIW 명령의 다이어그램이, 연산 부호 영역 및 상수값 연산자 K가 명령 디코더(도 1)에 의해 디코드하면서 제어 신호를 제공하는 것을 나타내고 있다. 연산 부호 영역은, ALU-2가 두 개의 입력에 대한 적합한 산술 연산을 실행하게 하는 가산 인에이블 또는 감산 인에이블 제어 신호를 제공한다. 상수값 연산자 K는 셀렉터(110)의 V입력에 인가되는 제어신호 V5-V0를 제공한다. 제어신호 V5-V0는 ADIW 및 SBIW 명령의 연산자에서 지정되는 상수 K를 2진수 형식으로 표시한다. 설명한 본 발명의 실시예에서, 상수 K는 6비트 데이터이다. 또한, 상수값 연산자 K는, 셀렉터(110)로 하여금 상수 V를 ALU-2의 입력으로 출력시키는 V 선택 제어 신호를 제공한다. 아래에서 설명하겠지만, 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_입력 인에이블 제어 신호가 필요치 않다는 것을 제외한다.
로드 및 저장 연산의 세번째 형식은, 선택된 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)
- 프로그램 버스와;프로그램을 저장하는 프로그램 기억 장치와;상기 프로그램 버스를 통하여 상기 프로그램 기억 장치에 연결되는 프로그램 실행 장치와;상기 프로그램 버스와 분리된 8비트 데이터 버스와;상기 프로그램 기억 장치와 분리되어 상기 8비트 데이터 버스에 연결된 데이터 기억 장치와;상기 8비트 데이터 버스와 연결되고, 다수의 8비트 레지스터를 갖는 동시에 상기 8비트 레지스터 중 두 개의 레지스터를 결합하여 단일 논리의 16비트 레지스터로서 액세스되게 하는 결합 수단을 포함하는 레지스터 파일과;상기 8비트 레지스터 중 두 개의 레지스터의 내용을 수신하기 위해 연결되고, 상기 8비트 데이터 버스에 연결된 출력을 갖는 범용 ALU와;프로그램 실행시, 상기 프로그램 실행 장치를 상기 데이터 기억 장치 및 상기 레지스터 파일에 직접 액세스 하도록 연결하는 직접 번지 버스와;프로그램 실행시, 상기 레지스터 파일을 간접 데이터 액세스로써 상기 데이터 기억 장치에 제공하는 간접 번지 버스를 포함하며,상기 레지스터 파일은 상기 결합 수단을 통해 액세스되는 16비트 논리 레지스터에서 산술 기능을 행하기 위해 상기 결합 수단에 연결되는 전용 ALU를 더 포함하고,상기 간접 번지 버스는 상기 결합 수단에서 16비트값을 수신하는 번지 수신 수단을 가짐으로써 16비트 간접 번지 지정을 제공하는 것을 특징으로 하는 마이크로 제어기.
- 제1항에 있어서, 상기 레지스터 파일은 -1의 수치 상수, +1의 수치 상수, 또는 프로그램 생성값을 출력하는 셀렉터 수단을 더 포함하고, 상기 전용 ALU는 상기 결합 수단을 통해 액세스되는 16비트 논리 레지스터에서 산술을 행하기 위해 상기 셀렉터 수단의 출력을 수신하도록 연결되는 것을 특징으로 하는 마이크로 제어기.
- 제2항에 있어서, 상기 두 개의 8비트 레지스터 중 하나는 상기 16비트 논리 레지스터의 하위 바이트이고, 상기 두 개의 8비트 레지스터 중 다른 하나는 상기 16비트 논리 레지스터의 상위 바이트인 것을 특징으로 하는 마이크로 제어기.
- 제1항에 있어서, 페이징 레지스터와, 상기 번지 수신 수단에 접속되어 상기 결합 수단에 의해 제공되는 상기 페이징 레지스터의 내용과 16비트 번지로부터 번지를 형성하는 번지 형성 수단을 더 포함하는 것을 특징으로 하는 마이크로 제어기.
- 제4항에 있어서, 상기 페이징 레지스터는 8비트 레지스터이고 상기 8비트 데이터 버스에 연결됨으로써 64K 바이트 각각의 256 페이지 중 하나를 지정하는 상기 페이징 레지스터에 임의의 값을 로드하는 것을 특징으로 하는 마이크로 제어기.
- 제1항에 있어서, 단일의 비트를 보존하는 비트 기억 장치와, 상기 비트 기억 장치 및 상기 레지스터 파일로부터 선택된 레지스터 내의 비트 기억 장소 사이에서 한 개의 비트를 전송하는 수단을 더 포함하는 것을 특징으로 하는 마이크로 제어기.
- 제6항에 있어서, 상기 8비트 데이터 버스에 연결되어 상기 비트 기억 장치로서 역할을 하는 다수의 비트 위치를 갖는 상태 레지스터를 더 포함하는 것을 특징으로 하는 마이크로 제어기.
- 프로그램 버스, 프로그램 기억 장치, 상기 프로그램 버스를 통하여 상기 프로그램 기억 장치에 연결되는 프로그램 실행 장치, 8비트 데이터 버스, 상기 데이터 버스에 연결된 상기 프로그램 기억 장치와 분리된 데이터 기억 장치, 상기 데이터 버스에 연결된 출력을 갖는 범용 8비트 ALU 및 상기 프로그램 실행 장치를 상기 데이터 기억 장치에 연결하는 제1 번지 버스를 포함하는 8비트 마이크로 제어기에 있어서,2 개의 8비트 레지스터 상에서 8비트 산술을 행하기 위해 상기 범용 8비트 ALU에 의해 액세스 가능한 다수의 8비트 레지스터와, 16비트 레지스터로서 상기 2개의 8비트 레지스터를 액세스하는 레지스터 수단과, 16비트 ALU 및 값 셀렉터를 갖는 레지스터 파일을 포함하는데, 상기 16비트 ALU는 상기 레지스터 수단으로부터 16비트 데이터를 수신하고 상기 값 셀렉터로부터 수치값을 수신하도록 연결되어 상기 16비트 데이터와 상기 수치값으로 계산을 실행하고;상기 레지스터 파일과 상기 데이터 기억 장치 사이에 연결되어 상기 16비트 ALU로부터의 계산 결과값을 수신하는 제2 번지 버스를 포함하고,상기 계산의 결과값은 상기 데이터 기억 장치 내의 메모리 기억 장소의 번지로서 이용되는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제8항에 있어서, 상기 값 셀렉터는 -1의 수치 상수, +1의 수치 상수, 또는 프로그램 생성 수치값을 제공하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제9항에 있어서, 상기 레지스터 파일은 상기 16비트 ALU의 계산 결과값 또는 16비트 데이터를 상기 레지스터 수단으로부터 상기 제2 번지 버스로 전송하는 수단을 포함하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제10항에 있어서, 페이징 레지스터와, 상기 페이징 레지스터의 내용과 상기 레지스터 수단에서 제공하는 16비트 번지를 기초로 하여 확장된 번지를 형성하는 수단을 더 포함하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제11항에 있어서, 외부 번지 버스와, 상기 확장 번지를 상기 외부 번지 버스 및 상기 제2 번지 버스에 선택적으로 연결하는 수단을 더 포함하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제12항에 있어서, 상기 페이징 레지스터는 8비트 레지스터인 것을 특징으로 하는 8비트 마이크로 제어기.
- 제12항에 있어서, 비트 기억 장치와, 상기 비트 기억 장치 및 상기 레지스터 파일의 레지스터 내의 비트 기억 장소 사이에서 1비트 데이터를 전송하는 수단을 더 포함하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제14항에 있어서, 상기 8비트 데이터 버스에 연결된 상태 레지스터를 더 포함하고, 상기 비트 기억 장치는 상기 상태 레지스터 내에서 비트 기억 장소가 되는 것을 특징으로 하는 8비트 마이크로 제어기.
- 하바드 기반 구조를 갖는 8비트 마이크로 제어기에 있어서,프로그램 명령을 디코딩하여 제어 신호를 생성하는 프로그램 명령 디코더와;데이터 기억 장치와;다수의 8비트 레지스터, 상기 다수의 8비트 레지스터 중 두 개의 레지스터를 단일의 16비트 논리 레지스터로서 액세스하는 레지스터 수단, +1값 또는 -1값을 출력하는 수치값 셀렉터 및 상기 수치값 셀렉터의 출력을 상기 단일 16비트 논리 레지스터에 가산하는 16비트 가산기를 포함하는 레지스터 파일과;상기 8비트 레지스터 중 두 개의 레지스터의 내용을 수신하도록 연결되어 산술 연산 기능을 수행하는 8비트 ALU와;상기 8비트 레지스터 중 한 개의 레지스터에서 비트를 수신하고, 비트를 상기 8비트 레지스터 중 한 개의 레지스터에 복사하는 전송 비트를 갖는 상태 레지스터와;상기 8비트 레지스터 중 한 개의 레지스터와 상기 상태 레지스터의 상기 전송 비트 사이에서 비트를 전송하는 비트 전송 수단과;상기 데이터 기억 장치, 상기 레지스터 파일, 상기 8비트 ALU, 상기 상태 레지스터 및 상기 비트 전송 수단을 함께 연결하는 8비트 데이터 버스와;상기 데이터 기억 장치 내의 메모리 기억 장소를 액세스하도록 상기 레지스터 파일을 상기 데이터 기억 장치에 연결하는 번지 버스와;상기 제어 신호를 상기 레지스터 파일, 상기 8비트 ALU, 상기 상태 레지스터 및 상기 비트 전송 수단에 전송하는 제어 라인을 포함하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제16항에 있어서, 증가 또는 감소 코드를 지정하는 수치적 연산 부호 및 상기 8비트 레지스터의 쌍 가운데 하나를 지정하는 레지스터 쌍 연산 부호를 각각 갖는 제1 프로그램 명령 부분 집합을 포함하고, 상기 명령 디코더는 상기 레지스터 수단이 16비트 레지스터로서 상기 레지스터 쌍을 액세스하고, 상기 수치값 셀렉터가 "+1" 또는 "-1"을 출력하며, 상기 16비트 가산기가 상기 셀렉터의 상기 출력을 상기 16비트 레지스터에 가산하게 하도록 상기 레지스터 쌍 연산 부호 및 상기 수치 연산 부호에 응답하여 제1 제어 신호를 생성하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제17항에 있어서, 상기 수치값 셀렉터는 수치 상수를 수신하고 상기 수치 상수를 출력하는 수단을 포함하고, 상기 제1 프로그램 명령 부분 집합 중 일부의 집합은 수치값을 지정하는 수치 연산 부호를 가지며, 상기 프로그램 명령 디코더는 수치값을 지정하는 상기 수치 연산 부호에 응답하여 상기 수치값 셀렉터로 수신되는 상기 수치값의 2진수 표기인 제2 제어 신호를 생성하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제18항에 있어서, 상기 레지스터 파일 내의 레지스터를 확인하는 레지스터 연산 부호와, 상기 레지스터 연산 부호에 의해 확인되는 레지스터의 비트 위치를 지정하는 비트 연산 부호를 각각 갖는 제2 프로그램 명령 부분 집합을 더 포함하고, 상기 명령 디코더는 상기 레지스터 연산 부호와 상기 비트 연산 부호에 응답하여, 상기 비트 전송 수단이 상기 상태 레지스터의 전송 비트와 상기 레지스터 연산 부호 및 상기 비트 연산 부호에 의해 지정된 비트 위치 사이의 비트를 전송하는 제3 제어 신호를 생성하는 것을 특징으로 하는 8비트 마이크로 제어기.
- 제19항에 있어서, 목적 레지스터 연산 부호 및 소스 레지스터 연산 부호를 갖는 프로그램 명령을 추가로 포함하고, 그 각각의 연산 부호는 상기 8비트 레지스터 중 한 개의 레지스터를 지정하며, 상기 상태 레지스터는 캐리 비트를 더 포함하고, 상기 8비트 ALU는 상기 캐리 비트를 수신하도록 연결되며, 상기 명령 디코더는 상기 목적 레지스터 연산 부호 및 상기 소스 레지스터 연산 부호에 응답하여 상기 8비트 ALU가 Rd - Rr - C(Rd 및 Rr은 상기 목적 레지스터 연산 부호 및 상기 소스 레지스터 연산 부호에 의해 각각 확인되는 레지스터 내용이고, C는 상기 캐리 비트의 내용)의 산술 계산을 행하도록 하는 제4 제어 신호를 생성하는 것을 특징으로 하는 8비트 마이크로 제어기.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/745,098 US5854939A (en) | 1996-11-07 | 1996-11-07 | Eight-bit microcontroller having a risc architecture |
US8/745,098 | 1996-11-07 | ||
US08/745,098 | 1996-11-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000053047A true KR20000053047A (ko) | 2000-08-25 |
KR100465388B1 KR100465388B1 (ko) | 2005-01-13 |
Family
ID=24995260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-1999-7003950A KR100465388B1 (ko) | 1996-11-07 | 1997-10-30 | Risc 구조의 8비트 마이크로 제어기 |
Country Status (10)
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) |
HK (1) | HK1022358A1 (ko) |
TW (1) | TW355772B (ko) |
WO (1) | WO1998020422A1 (ko) |
Families Citing this family (18)
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 | 演算処理装置およびその方法 |
WO2000004484A2 (en) * | 1998-07-17 | 2000-01-27 | Intergraph Corporation | 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 |
WO2003091972A1 (en) * | 2002-04-26 | 2003-11-06 | Telefonaktiebolaget Lm Ericsson | 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 | 凹凸电子(武汉)有限公司 | 微控制器、执行指令的方法及电子*** |
US20090187735A1 (en) * | 2008-01-22 | 2009-07-23 | 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 | 龙芯中科技术有限公司 | 内存拷贝方法及装置 |
US20230098724A1 (en) * | 2021-09-25 | 2023-03-30 | Intel Corporation | Copy a subset of status flags from a control and status register to a flags register |
Family Cites Families (21)
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 | 日本電気株式会社 | マイクロプロセッサ |
EP0539782B1 (en) * | 1991-10-28 | 1999-04-21 | Eastman Kodak Company | Circuit for controlling data transfer from VME bus to SCSI disk drive |
US5465332A (en) * | 1992-09-21 | 1995-11-07 | International Business Machines Corporation | Selectable 8/16 bit DMA channels for "ISA" bus |
CA2093451C (en) * | 1993-04-06 | 2000-03-14 | David M. Mooney | Method and mechanism for calling 32-bit functions from 16-bit functions |
JP2932963B2 (ja) * | 1994-01-21 | 1999-08-09 | モトローラ・インコーポレイテッド | 効率的なビット移動能力を有するデータ・プロセッサとその方法 |
JPH0844665A (ja) * | 1994-07-14 | 1996-02-16 | Fujitsu Ltd | 複数のデータ転送サイズ及びプロトコルをサポートするバス |
-
1996
- 1996-11-07 US US08/745,098 patent/US5854939A/en not_active Expired - Lifetime
-
1997
- 1997-10-30 EP EP97913860A patent/EP0954791B1/en not_active Expired - Lifetime
- 1997-10-30 WO PCT/US1997/019626 patent/WO1998020422A1/en active IP Right Grant
- 1997-10-30 CN CN97199485A patent/CN1115631C/zh not_active Expired - Lifetime
- 1997-10-30 EP EP04029045A patent/EP1596279A3/en not_active Withdrawn
- 1997-10-30 KR KR10-1999-7003950A patent/KR100465388B1/ko not_active IP Right Cessation
- 1997-10-30 DE DE69732793T patent/DE69732793T2/de not_active Expired - Lifetime
- 1997-10-30 JP JP52153498A patent/JP3694531B2/ja not_active Expired - Fee Related
- 1997-10-30 AT AT97913860T patent/ATE291256T1/de not_active IP Right Cessation
- 1997-11-07 TW TW086116599A patent/TW355772B/zh not_active IP Right Cessation
-
2000
- 2000-02-21 HK HK00101020A patent/HK1022358A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1236455A (zh) | 1999-11-24 |
DE69732793D1 (de) | 2005-04-21 |
EP0954791A4 (en) | 2003-06-11 |
HK1022358A1 (en) | 2000-08-04 |
TW355772B (en) | 1999-04-11 |
JP3694531B2 (ja) | 2005-09-14 |
WO1998020422A1 (en) | 1998-05-14 |
ATE291256T1 (de) | 2005-04-15 |
JP2001504959A (ja) | 2001-04-10 |
EP1596279A3 (en) | 2010-03-10 |
DE69732793T2 (de) | 2006-04-06 |
EP0954791A1 (en) | 1999-11-10 |
EP0954791B1 (en) | 2005-03-16 |
US5854939A (en) | 1998-12-29 |
KR100465388B1 (ko) | 2005-01-13 |
CN1115631C (zh) | 2003-07-23 |
EP1596279A2 (en) | 2005-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5303358A (en) | Prefix instruction for modification of a subsequent instruction | |
US8078828B1 (en) | Memory mapped register file | |
KR100465388B1 (ko) | Risc 구조의 8비트 마이크로 제어기 | |
US4449184A (en) | Extended address, single and multiple bit microprocessor | |
JP5199931B2 (ja) | Riscアーキテクチャを有する8ビットマイクロコントローラ | |
EP0138419B1 (en) | Central processing unit for a digital computer | |
US5481734A (en) | Data processor having 2n bits width data bus for context switching function | |
US4558411A (en) | Polymorphic programmable units employing plural levels of sub-instruction sets | |
US5249280A (en) | Microcomputer having a memory bank switching apparatus for accessing a selected memory bank in an external memory | |
US7228401B2 (en) | Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor | |
US5680632A (en) | Method for providing an extensible register in the first and second data processing systems | |
US5682339A (en) | Method for performing rotate through carry using a 32 bit barrel shifter and counter | |
JP2004086837A (ja) | データ処理装置 | |
US6098160A (en) | Data pointer for outputting indirect addressing mode addresses within a single cycle and method therefor | |
JP2551167B2 (ja) | マイクロコンピュータ | |
US6408380B1 (en) | Execution of an instruction to load two independently selected registers in a single cycle | |
US5754460A (en) | Method for performing signed division | |
JPH0922379A (ja) | マイクロコンピュータ | |
US6233675B1 (en) | Facility to allow fast execution of and, or, and test instructions | |
JP2000039995A (ja) | 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル | |
US6289439B1 (en) | Method, device and microprocessor for performing an XOR clear without executing an XOR instruction | |
JP2696578B2 (ja) | データ処理装置 | |
JP2003131873A (ja) | マイクロコンピュータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20111208 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20121210 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |