KR100946561B1 - 오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어방법 - Google Patents

오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어방법 Download PDF

Info

Publication number
KR100946561B1
KR100946561B1 KR1020060119680A KR20060119680A KR100946561B1 KR 100946561 B1 KR100946561 B1 KR 100946561B1 KR 1020060119680 A KR1020060119680 A KR 1020060119680A KR 20060119680 A KR20060119680 A KR 20060119680A KR 100946561 B1 KR100946561 B1 KR 100946561B1
Authority
KR
South Korea
Prior art keywords
program
memory
mcu
microcontroller
logic
Prior art date
Application number
KR1020060119680A
Other languages
English (en)
Other versions
KR20070102370A (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 KR20070102370A publication Critical patent/KR20070102370A/ko
Application granted granted Critical
Publication of KR100946561B1 publication Critical patent/KR100946561B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead

Abstract

본 발명은 오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어 방법을 개시하며, 여기에서 멀티-마이크로컨트롤러 시스템의 임의의 MCU 코어 로직은 삽입된 프로그램의 시작 어드레스를 피제어 MCU 코어 로직의 프로그램 카운터에 직접 놓는다. 피제어 MCU 코어 로직의 인터럽트된 프로그램의 어드레스가 MCU 코어 로직의 스택 포인터의 인덱스에 따라 스택 메모리에 임시 저장되어 피제어 MCU 코어 로직은 삽입된 프로그램의 실행이 완료된 후 인터럽트된 프로그램의 실행을 재개한다.
오토노머스 멀티-마이크로컨트롤러 시스템, MCU 코어 로직, 삽입된 프로그램, 프로그램 카운터, 스택 포인터, 스택 메모리

Description

오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어 방법{Autonomous multi-microcontroller system and the control method thereof}
도 1(a)은 종래의 멀티-마이크로컨트롤러 시스템의 아키텍쳐를 개략적으로 나타낸 블록도이다.
도 1(b)은 종래의 하이퍼-스레드 마이크로컨트롤러 시스템의 아키텍쳐를 개략적으로 나타낸 블록도이다.
도 2는 인터럽트 요청이 발생할 때의 동작에 대한 종래의 마이크로컨트롤러 시스템의 아키텍쳐를 개략적으로 나타낸 블록도이다.
도 3은 본 발명에 따른 오토노머스 멀티-마이크로컨트롤러 시스템의 아키텍쳐를 개략적으로 나타낸 블록도이다.
도 4은 제 1 실시예에 따른 플로차트이다.
도 5는 본 발명의 제 2 실시예에 따른 플로차트이다.
<도면의 주요 부분에 대한 부호의 설명>
10, 11, 12: 마이크로컨트롤러 13 : 데이터 메모리
14 : 주변 장치 15, 16: 마이크로컨트롤러 코어 유닛
17 : 프로그램 메모리 18 : 데이터 메모리
20 : MCU 코어 로직 24 : 프로그램 카운터
26 : 스택 메모리 30, 31, 32: MCU 코어 로직
33: 프로그램 메모리 34: 스택 메모리
35 : 마이크로컨트롤러 인에이블 레지스터
101, 111, 121 : 프로그램 메모리
102, 112, 122 : MCU 코어 로직
151, 161 : 명령어 버퍼
152, 162 : MCU 코어 로직
301 : 제 1 MCU 기능 로직 302 : 제 1 프로그램 카운터
303 : 제 1 스택 포인터 311 : 제 2 MCU 기능 로직
312 : 제 2 프로그램 카운터 313 : 제 2 스택 포인터
321 : 제 3 MCU 기능 로직 322 : 제 3 프로그램 카운터
323 : 제 2 스택 포인터 330: 시스템 프로그램 블록
331: 제 1 MCU 코어 로직 프로그램 블록
332: 제 2 MCU 코어 로직 프로그램 블록
333: 제 3 MCU 코어 로직 프로그램 블록
334: 프로그램 메모리 버스
341: 제 1 MCU 코어 로직 스택 블록
342: 제 2 MCU 코어 로직 스택 블록
343: 제 3 MCU 코어 로직 스택 블록
344: 스택 메모리 버스
발명의 분야
본 발명은 멀티-마이크로컨트롤러 시스템 및 그의 제어 방법에 관한 것으로서, 특히 오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어 방법에 관한 것이다.
관련 기술의 설명
단일 칩 마이크로컴퓨터(single-chip microcomputer)라고도 불리는 마이크로컨트롤러/마이크로프로세서(MCU/MPU)는 시스템에 제어 명령들을 발행하는 집적 회로이다. 그것은 어떤 다른 보조 회로의 도움없이 동작할 수 있다. 마이크로컨트롤러는 소형 컴퓨터(miniature computer)에 제공되는 기능과 거의 같은 기능을 제공한다. 최근에, 마이크로컨트롤러들은 소비자 전자 제품, 산업용 제어기, 의료 장비, 차량 제어기 등과 같은 많은 분야에 널리 응용될 수 있다. 응용된 분야에 따라, 마이크로컨트롤러는 상이한 스펙(specification)을 가질 수 있고 상이한 주변 기기와 협력할 수 있다.
마이크로컨트롤러의 개발 역사는 3가지 목표 즉, (1) 데이터 처리 속도의 가속화, (2) 단위 기능 당 칩 사이즈의 소형화, 및 (3) 전력 소비 감소의 연속적인 개량의 역사이다. 따라서, 마이크로컨트롤러의 많은 중요한 진보가, 처리된 비트의 수의 증가, 더 빠른 클록 주파수, 산술 유닛의 향상, 더 낳은 메모리 관리, 캐시 기술(cache technology), 파이프라인 처리 아키텍쳐(pipeline processing architectures), 명령의 사전-디코딩 및 사전-실행, 멀티미디어를 위한 새로운 명령 세트, 새로운 제조 프로세스, 및 새로운 패키징 기술을 포함해서 이루어져 왔다. 그럼에도 불구하고, 모든 상기 성과들은 2가지 중요 기술들, 즉 반도체 처리 기술 및 하드웨어 아키텍처 디자인 기술의 향상에 기여한다. 반도체 프로세스 기술의 진보는 칩 당 트랜지스터의 수를 증가시키고 디바이스들간의 거리를 감소시켜, 동작 전압이 낮아 질 수 있고, 동작 속도가 증가될 수 있고, 더 진보된 기능이 제공될 수 있다. 하드웨어 아키텍처 디자인의 진보는 수퍼-파이프라인 아키텍처, 내부 캐시 아키텍처, 수퍼-스칼라 기술(super-scalar technology), 예측 실행 기술(predictive execution technology), 및 마이크로코드 추적 기술(microcode trace technology)을 포함한다. 위에 기술한 것 중, 파이프라인 기술은 하드웨어 아키텍처 디자인 기술의 향상에 가장 많이 기여했다. 파이프라인 기술은 태스크 분할(task partition)을 수행하는 데, 이것은 태스크를 다수의 부분들로 분할하고 그것을 다수의 유닛들에 할당한다. 마이크로컨트롤러의 클록 주파수가 증가될 수 없을지라도, 마이크로컨트롤러의 실행 속도는 이와 같은 파이프라인 기술로 인해 여전히 증가될 수 있을 것이다.
태스크-분할 기능을 수행하는 종래의 멀티-마이크로컨트롤러 시스템 및 종래의 하이퍼-스레드 마이크로컨트롤러 시스템은 도 1(a) 및 도 1(b)의 블록도로 도시되어 있다. 종래의 멀티-마이크로컨트롤러 시스템(도 1(a))은 기본적으로 다수의 마이크로컨트롤러(10, 11, 12)를 포함하고, 이 다수의 마이크로컨트롤러는 버스들 (중공의 양방향 화살표로 도시됨)을 통해 공통 데이터 메모리(13) 및 공통 주변 장치들(14)에 연결된다. 각각의 MCU들 (마이크로컨트롤러들)은 대응하는 프로그램 메모리(101, 111, 121)와 각각 협력하는 코어 로직(102, 112, 122)을 구비한다. MCU들은 상호 독립적으로 동작한다.
종래의 하이퍼-스레드 마이크로컨트롤러 시스템(도 1(b))은 기본적으로 다수의 마이크로컨트롤러 코어 유닛들(15, 16)을 포함한다. 각각의 마이크로컨트롤러 코어 유닛들(15, 16)은 MCU 코어 로직(152, 162), 및 대응하는 전용 명령어 버퍼(151, 161)를 구비한다. MCU 코어 유닛들(15, 16)은 버스들(중공의 양방향 화살표로 도시됨)을 통해 데이터 메모리(18) 및 프로그램 메모리(17)에 각각 연결된다. 명령어 버퍼의 이러한 구성에 의해, MCU 유닛들은 병렬로 및 개별적으로 대응하는 프로그램들을 실행할 수 있고 그 결과, 각 MCU는 프로그램 메모리(17)를 덜 액세스한다. 따라서, 프로그램 메모리(17)를 액세하는 동안 마이크로컨트롤러 코어 유닛들이 서로 간섭할 가능성이 크게 감소되고, 프로그램들이 더 효율적으로 실행될 수 있다.
종래의 멀티-마이크로컨트롤러 시스템 또는 종래의 하이퍼-스레드 마이크로컨트롤러 시스템에 있어서, 인터럽트 요청에 응답한 이들 프로그램 실행 동작은 동일하다. 도 2를 참조하면, 모든 마이크로컨트롤러가 임의의 다른 MCU와는 독립적으로 동작하므로, 인터럽션이 일어날 때, 인터럽팅 태스크는 MCU들 중 하나가 인터럽셥을 검출하여 응답할 수 있을 때까지 대기해야 한다. MCU 코어 로직(20)을 갖는 MCU가 인터럽션에 대한 응답 MCU인 것으로 가정한다. MCU 코어 로직(20)이 인터럽 트 요청을 검출하면, MCU 코어 로직(20)은 먼저 그 자신의 프로그램 카운터(24)의 내용을 스택 메모리(26)에 놓을 것이고, 다음에 인터럽팅 태스크를 실행하도록 ISR(Interrupt Service Routine)의 시작 어드레스를 얻는다. 전술한 바로부터 알 수 있는 것과 같이, 이들 2개의 멀티-마이크로컨트롤러 시스템에 있어서, 마이크로컨트롤러들은 서로 직접적으로 그리고 효율적으로 제어할 수 없다. 하나의 마이크로컨트롤러(도 2에 도시하지 않음)는, 다른 마이크로컨트롤러에 플래그를 설정하거나 인터럽트 요청을 보냄으로써, 마이크로컨트롤러가 실행하고 있는 프로그램이 변경되어야 한다는 것을 다른 마이크로컨트롤러(예컨대 코어 로직(20)을 가진 MCU)에 단지 "알릴(inform)" 수 있다. 이후, 전자의 MCU는 응답하기 위해 후자의 MCU를 대기해야 한다. 이 경우, 태스크들은 마이크로컨트롤러들에 부적절하게 분배될 수 있고, 멀티-마이크로컨트롤러 시스템의 전체 성능이 떨어질 수 있다. 직접 및 효율적 내부-제어(inter-control)의 무능력(incapability)외에, 인터럽션 작용은 또한 그와 같은 동작 모드에서 시간-소모적(time-consuming)이다. 그러므로, 그와 같은 종래의 기술은 진보된 전자 제품들의 더 높고 더 복잡한 요구조건들을 만족시키기 어렵다.
따라서, 본 발명은 전술한 문제들을 극복하기 위해 오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어 방법을 제안하며, 여기에서 멀티-마이크로컨트롤러 시스템의 마이크로컨트롤러 유닛은 서로 효율적으로 내부-제어할 수 있고, 인터럽팅(삽입된) 프로그램의 시작 어드레스가 피제어 마이크로컨트롤러 유닛에 직접 놓일 수 있어 인터럽션 동작에 필요한 시간이 짧아질 수 있고, 따라서, 각각의 마 이크로컨트롤러 유닛은 최고의 성능을 달성할 수 있다.
발명의 요약
본 발명의 주 목적은 오토노머스 멀티-마이크로컨트롤러 시스템을 제공하는 것이며, 여기에서 다수의 MCU (마이크로컨트롤러) 코어 로직은 다수의 프로그램을 병렬로 실행하기 위해 사용되며, 각 MCU 코어 로직의 동작이 소프트웨어를 통해 정확하고 효율적으로 제어되어 멀티-마이크로컨트롤러 시스템의 각각의 MCU 코어 로직은 최상의 효율을 달성할 수 있다.
본 발명의 다른 목적은 오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어 방법을 제공하는 것이며, 여기에서, 컨트롤러 MCU 코어 로직으로부터의 명령에 따라, 삽입된 프로그램의 시작 어드레스가 피제어 MCU 코어 로직의 프로그램 카운터에 보내져서, 피제어 MCU 코어 로직은 삽입된 프로그램을 순간적으로 실행할 수 있고 그것에 의해 마이크로컨트롤러들 사이의 필요 상호작용 시간(required interaction time)이 최소로 된다.
상기 목적을 달성하기 위해, 본 발명은,
복수의 MCU(Microcontroller Unit) 기능 로직들, 및 상기 MCU 기능 로직들에 각각 연결되어 프로그램 어드레스를 상기 MCU 기능 로직들에 제공하기 위한 대응하는 복수의 프로그램 카운터들을 구비하는 멀티-마이크로컨트롤러 유닛;
상기 멀티-마이크로컨트롤러 유닛에 연결되어, 상기 MCU 기능 로직들을 인 에이블링 또는 디스에이블링하는 마이크로컨트롤러-인에이블 레지스터; 및
상기 멀티-마이크로컨트롤러 유닛에 연결되어, 상기 멀티-마이크로컨트롤러 유닛에 의해 요구되는 프로그램을 저장하는 적어도 하나의 메모리;를 포함하고,
상기 프로그램 카운터들 중 어느 하나의 내용을 변경할 수 있는, 오토노머스 멀티-마이크로컨트롤러 시스템을 제공한다.
게다가, 본 발명은 또한, 적어도 하나의 컨트롤러 MCU(Microcontroller Unit) 기능 로직, 피제어 MCU 기능 로직, 상기 피제어 MCU에 대응하는 프로그램 카운터, 및 메모리를 가진 오토노머스 멀티-마이크로컨트롤러 시스템의 제어 방법에 있어서,
상기 피제어 MCU 기능 로직을 디스에이블링하는 단계;
상기 프로그램 카운터를 프리징(freezing)하는 단계;
상기 메모리의 제 1 위치에 있는 내용을 상기 프로그램 카운터로 전달하는 단계; 및
상기 피제어 MCU 기능 로직을 인에이블링하는 단계;를 포함하는, 오토노머스 멀티-마이크로컨트롤러 시스템을 위한 제어 방법을 제공한다.
더욱이, 본 발명은 또한 적어도 하나의 컨트롤러 MCU(Microcontroller Unit) 기능 로직, 피제어 MCU 기능 로직, 상기 피제어 MCU에 대응하는 프로그램 카운터, 프로그램 메모리, 스택 메모리, 및 상기 스택 메모리에 대응하는 스택 포인터를 가진 오토노머스 멀티-마이크로컨트롤러 시스템을 위한 제어 방법에 있어서,
상기 피제어 MCU 기능 로직을 디스에이블링하는 단계;
상기 프로그램 카운터를 프리징하는 단계;
상기 스택 포인터의 제 1 인덱스에 따라 상기 프로그램 카운터의 내용을 상기 스택 메모리의 제 1 위치에 저장하는 단계;
상기 스택 포인터의 제 2 인덱스에 따라 상기 프로그램 메모리의 어드레스를 상기 스택 메모리의 제 2 위치에 임시 저장하는 단계;
상기 스택 포인터의 상기 제 2 인덱스에 따라 상기 스택 메모리의 상기 제 2 위치에 있는 내용을 상기 프로그램 카운터에 저장하는 단계;
상기 피제어 MCU 기능 로직을 인에이블링하여 상기 피제어 MCU 기능 로직이 상기 프로그램 메모리의 상기 어드레스에 있는 내용에 대응하는 태스크를 완료하는 단계; 상기 피제어 MCU 기능 로직을 디스에이블링하는 단계;
상기 스택 메모리의 상기 제 2 위치에 있는 내용을 상기 프로그램 카운터로 복귀시키는 단계; 및
상기 피제어 MCU 기능 로직을 인에이블링하여 상기 피제어 MCU 기능 로직이 그것의 원 태스크를 재개하는 단계;를 포함하는, 오토노머스 멀티-마이크로컨트롤러 시스템을 위한 제어 방법을 제안한다.
본 발명의 상기 목적, 기술 내용, 특징 및 효율을 더 잘 이해하기 위해, 본 발명이 첨부 도면들을 참조하여 예시적인 실시예들에 의해 이하에 상세히 설명될 것이다.
발명의 상세한 설명
본 발명은 각각의 MCU(Microcontroller) 코어 로직이 그것의 프로그램을 독 립적으로 실행할 수 있는 멀티-마이크로컨트롤러 시스템의 아키텍처에 기초하고 있다. 본 발명에 따라, 그것의 각각의 프로그램의 실행 동안, 각각의 MCU 코어 로직은 할당된 프로그램의 시작 어드레스를 다른 MCU 코어 로직의 프로그램 카운터에 입력하여 후자의 MCU 코어 로직(피제어 MCU 코어 로직)에 대한 다음 태스크를 결정할 수 있다. 그럼으로써, MCU 코어 로직의 프로그램을 변경하는 데 필요한 시간이 최소로 된다.
일 예로서, 오토노머스 멀티-마이크로컨트롤러 시스템의 하나의 MCU 코어 로직이 동일 시스템의 특정되지 않은(즉, 임의의 다른) MCU 코어 로직을 제어하고자 할 경우 본 발명의 제 1 실시예가 어떻게 시스템 및 방법이 작용하는지를 설명하기 위해 기술될 것이다. 도 3를 참조하면, 본 발명의 오토노머스 멀티-마이크로컨트롤러 시스템은, 3개의 MCU 코어 로직(30, 31, 32); 마이크로컨트롤러-인에이블-레지스터(35); 프로그램 메모리(33); 및 스택 메모리(34)를 포함한다. MCU 코어 로직(30, 31, 32)은 각각 기능 로직(301, 311, 321); 프로그램 카운터(302, 312, 322); 및 스택 포인터(303, 313, 323)를 구비한다. MCU 코어 로직(30, 31, 32)은 프로그램 메모리 버스(334)를 통해 프로그램 메모리(33)에 링크되고, 그것에 의해, MCU 코어 로직(30, 31, 32)은 시스템 프로그램 블록(330) 및 제 1, 제 2 및 제 3 MCU 코어 로직 프로그램 블록(331, 332, 333)에 저장되어 있는 프로그램 및 명령들을 검색하기 위해 프로그램 메모리(33)를 액세스할 수 있다. MCU 코어 로직(30, 31, 32)은 또한 스택 메모리 버스(344)를 통해 스택 메모리(34)에 링크되고, 그것에 의해, MCU 코어 로직(30, 31, 32)이 프로그램을 실행할 때, 제 1, 제 2 및 제 3 프로그램 카운터(302, 312, 322)의 내용이 대응하는 제 1, 제 2 및 제 3 MCU 코어 로직 스택 블록(341, 342, 343)에 개별적으로 임시 저장될 수 있다.
본 발명의 오토노머스 멀티-마이크로컨트롤러 시스템의 제어 방법이 이하에 상세히 설명된다. 도 3 및 도 4와 관련하여, 여기에서 도 4는 본 발명의 제 1 실시예에 따른 제어 방법의 플로차트이다. 먼저, 단계 S01에서, 3개의 MCU 코어 로직(30, 31, 32)은 각각 그들 자신의 프로그램들을 실행한다. 더 실례를 들기 위해, 제 1 MCU 코어 로직(30)의 기능 로직(301)은 제 1 프로그램 카운터(302)에 의해 포인팅된 프로그램 어드레스의 명령을 실행하고 있고, 상기 프로그램 어드레스는 프로그램 메모리(33)의 c101이고, 제 2 MCU 코어 로직(31)의 기능 로직(311)은 제 2 프로그램 카운터(312)에 의해 포인팅된 프로그램 어드레스내의 명령을 실행하고 있고, 프로그램 어드레스는 프로그램 메모리(33)의 c201이고, 제 3 MCU 코어 로직(32)의 기능 로직(321)은 제 3 프로그램 카운터(322)에 의해 포인팅된 프로그램 어드레스내의 명령을 실행하고, 프로그램 어드레스는 프로그램 메모리(33)의 c301이라고 가정하자. 다음에, 프로그램 어드레스 00f0로부터 시작하는 프로그램을 실행하도록 상기 시스템에 요청하는 인터럽션이 일어난다. 이 삽입된 프로그램의 프로그램 어드레스는 예를 들어 시스템 프로그램 블록(330)에 저장되어 있다. 인터럽션은 제 2 MCU 코어 로직(31)에 제 2 MCU 코어 로직 프로그램 블록(332)의 그것의 현재의 프로그램을 정지시키도록 요청하고, 시작 어드레스 00f0를 갖는 삽입된 시스템 프로그램을 실행한다. 제 2 MCU 코어 로직(31)의 기능 로직(311)이 그것의 원 프로그램의 실행을 재개하도록 요청받지 않는다고 가정하면, 원 프로그램은 그것의 현 프로그램 어드레스(예를 들면, c202)에서 정지될 것이고, 제 2 프로그램 카운터(312)가 어드레스 c202에서 그에 대응하여 프리징될 것이다. 단계 S02에서, 제 1 MCU 코어 로직(30)은 마이크로컨트롤러-인에이블-레지스터(35)와 협력하여 디스에이블 신호를 제 2 MCU 코어 로직(31)(및 따라서 그 기능 로직(311))에 전송하여, 현재의 프로그램의 실행을 정지시키고 프로그램 카운터(312)를 프로그램 어드레스 c202에 프리징한다. 단계 S03에서, 제 1 MCU 코어 로직(30)의 제 1 스택 포인터(303)의 인덱스가 스택 메모리 어드레스 i에 있고 피제어 제 2 MCU 코어 로직(31)의 기능 로직(311)에 의해 실행될 삽입된 프로그램의 시작 어드레스가 00f0이기 때문에, 제 1 MCU 코어 로직(30)의 기능 로직(301)은 00f0를 스택 메모리(34)의 스택 메모리 어드레스 i에 저장한다. 단계 S04에서, 제 1 MCU 코어 로직(30)의 기능 로직(301)은 (예를 들면, Pop PC2와 같은 Pop 명령에 의해) 스택 메모리(34)의 스택 메모리 어드레스 i의 내용을 제 2 MCU(31)의 제 2 프로그램 카운터(312)에 전달하고, 따라서, 제 2 MCU 코어 로직(31)이 나중에 인에블되면, 그것은 어드레스 00f0로부터 프로그램을 실행할 것이다. 단계 S05에서, 제 1 MCU 코어 로직(30)은 마이크로컨트롤러-인에이블-레지스터(35)와 협력하여 인에이블 신호를 제 2 MCU 코어 로직(31)(및 따라서 그것의 기능 로직(311))에 보내고, 그 결과 제 2 MCU 코어 로직(31)의 기능 로직(311)이 기동하여 제 2 프로그램 카운터(312)에 의해 포인팅된 시작 프로그램 어드레스 OOf0를 갖는 삽입된 프로그램을 실행시킨다. 단계 S06에서, 제 2 MCU(31)의 제 2 프로그램 카운터(312)의 내용이 00f0으로 변경되었기 때문에, 3개의 MCU 코어 로직(30, 31, 32)의 상태는 다음과 같다: 제 1 MCU 코어 로직(30)의 기능 로직(301)은 여전히 제 1 프로그램 카운터(302)에 의해 포인팅된 프로그램 어드레스의 프로그램을 실행하고 있고, 프로그램 어드레스는 프로그램 메모리(33)의 제 1 MCU 코어 로직 프로그램 블록(331)에 있고; 제 2 MCU 코어 로직(31)의 기능 로직(311)은 제 2 프로그램 카운터(312)에 의해 포인팅된 프로그램 어드레스에 있는 프로그램을 실행하고 있지만, 프로그램 어드레스는 프로그램 메모리(33)의 시스템 프로그램 블록(330)에 있고; 제 3 MCU 코어 로직(321)의 기능 로직(321)은 여전히 제 3 프로그램 카운터(322)에 의해 포인팅된 프로그램 어드레스의 프로그램을 실행하고 있고, 프로그램 어드레스는 프로그램 메모리(33)의 제 3 MCU 코어 로직 프로그램 블록(333)에 있다.
전술한 제 1 실시예는 컨트롤러 MCU 코어 로직(30) 및 피제어 MCU 코어 로직(31)에 대한 내부-제어 방법을 상세히 설명했다. 제 1 실시예에서, 피제어 MCU 코어 로직이 삽입된 프로그램의 실행을 완료한 후, 피제어 MCU 코어 로직은 새로운 프로그램의 실행을 시작하거나 인터럽트된 프로그램의 실행을 재개할 수 있다. 본 발명의 다음의 제 2 실시예는 또한 피제어 MCU 코어 로직이 삽입된 프로그램의 실행을 완료한 후 인터럽트된 프로그램의 실행을 재개할 필요가 있을 때 어떻게 시스템이 작동하는지에 대해 기술한다.
도 3 및 도 5와 관련하여, 여기에서 도 5는 본 발명의 제 2 실시예에 따른 제어 방법의 플로차트이다. 본 발명의 오토노머스 멀티-마이크로컨트롤러 시스템의 아키텍처가 위에 기술되었으므로 여기서는 반복하지 않는다. 본 발명의 제 2 실시예에 따른 오토노머스 멀티-마이크로컨트롤러 시스템의 제어 방법이 이하에 상세히 기술된다. 먼저, 단계 S11에서, 3개의 MCU 코어 로직(30, 31, 32)은 각각 그들 자신의 프로그램들을 실행하는 바, 즉 제 1 MCU 코어 로직(30)의 기능 로직(301)은 제 1 프로그램 카운터(302)에 의해 포인팅된 프로그램 어드레스에 있는 명령을 실행하고 있고, 상기 명령은 프로그램 메모리(33)의 제 1 MCU 코어 로직 프로그램 블록(331)에 있고, 제 2 MCU 코어 로직(31)의 기능 로직(311)은 제 2 프로그램 카운터(312)에 의해 포인팅된 프로그램 어드레스에 있는 명령을 실행하고 있고, 상기 명령은 프로그램 메모리(33)의 제 2 MCU 코어 로직 프로그램 블록(332)에 있고, 제 3 MCU 코어 로직(32)의 기능 로직(321)은 제 3 프로그램 카운터(322)에 의해 포인팅된 프로그램 어드레스의 명령을 실행하고 있고, 상기 명령은 프로그램 메모리(33)의 제 3 MCU 코어 로직 프로그램 블록(333)에 있다. 다음에, 시스템 프로그램 블록(330)에 지금 저장되어 있는 프로그램 어드레스 00f0로부터 시작하는 프로그램을 실행하도록 시스템에 요청하는 인터럽션이 일어난다. 이것은 제 2 MCU 코어 로직 프로그램 블록(332)의 그것의 현재의 프로그램을 정지시키도록 제 2 MCU 코어 로직(31)에 요청하고, 시작 어드레스 00f0를 갖는 삽입된 시스템 프로그램을 실행하고, 또한, 제 2 MCU 코어 로직(31)은 삽입된 시스템 프로그램의 완료 후 그것의 원 프로그램의 실행을 재개해야 할 것이다. 단계 S12에서, 제 1 MCU 코어 로직(30)은 마이크로컨트롤러-인에이블-레지스터(35)와 협력하여 디스에이블 신호를 제 2 MCU 코어 로직(31)(및 따라서 그것의 기능 로직(311))에 보내어, 현재의 프로그램의 실행을 정지시키고 프로그램 카운터(312)를 현재의 프로그램 어드레스(예를 들면, c202)에 프리징한다. 단계 S13에서, 제 1 MCU 코어 로직(30)의 제 1 스택 포인 터(303)의 인덱스가 스택 메모리 어드레스 i에 있기 때문에, 제 1 MCU 코어 로직(30)의 기능 로직(301)은 (예를 들면, Push PC2와 같은 푸시 명령에 의해) 제 2 MCU 코어 로직(311)의 제 2 프로그램 카운터(312)의 내용을 스택 메모리 어드레스 i에 저장한다. 단계 S14에서, 제 1 MCU 코어 로직(30)의 제 1 스택 포인터(303)의 인덱스가 지금 스택 메모리 어드레스 i+1에 있고, 피제어 제 2 MCU 코어 로직(31)에 의해 실행되어야 할 삽입된 프로그램의 시작 어드레스가 00f0이기 때문에, 제 1 MCU 코어 로직(30)의 기능 로직(301)은 00f0를 스택 메모리(34)의 스택 메모리 어드레스 i+1에 저장한다. 단계 S15에서, 제 1 MCU 코어 로직(30)의 기능 로직(301)은 (예를 들면, Pop PC2와 같은 Pop 명령에 의해) 스택 메모리(34)의 스택 메모리 어드레스 i+1 (즉 00f0)의 내용을 제 2 MCU 코어 로직(31)의 제 2 프로그램 카운터(312)에 전달한다. 단계 S16에서, 제 1 MCU 코어 로직(30)은 마이크로컨트롤러-인에이블-레지스터(35)와 협력하여 인에이블 신호를 제 2 MCU 코어 로직(31)(및 따라서 그것의 기능 로직(311))에 보내서, 제 2 MCU 코어 로직(31)의 기능 로직(311)이 제 2 프로그램 카운터(312)에 의해 포인팅된 시작 어드레스 00f0를 갖는 삽입된 시스템 프로그램을 실행하도록 기동할 수 있다. 단계 S17에서, 시작 어드레스 00f0를 갖는 삽입된 프로그램의 실행을 완료한 후, 제 2 MCU 코어 로직(31)은 제 1 MCU 코어 로직(30)에게 삽입된 프로그램의 실행이 완료된 것을 알린다. 단계 S18에서, 마이크로컨트롤러-인에이블-레지스터(35)와 협력하여, 제 1 MCU 코어 로직(30)은 디스에이블 신호를 보내서 제 2 MCU 코어 로직(31)을 정지시키고 현재의 프로그램의 실행을 정지시킨다. 단계 S19에서, 제 1 MCU 코어 로직(30)의 제 1 스택 포인 터(303)의 인덱스에 따라, 제 1 MCU 코어 로직(30)의 기능 로직(301)은 (예를 들면, Pop PC2와 같은 Pop 명령에 의해) 스택 메모리(34)의 스택 메모리 어드레스 i의 내용(즉, c202)을 제 2 MCU 코어 로직(31)의 제 2 프로그램 카운터(312)로 복구하며, 이것은 제 2 MCU 코어 로직(31)의 제 2 프로그램 카운터(312)가 지금 다시 프로그램 메모리(33)의 프로그램 메모리 어드레스 c202를 가리키는 것을 의미한다. 단계 S20에서, 제 1 MCU 코어 로직(30)은 마이크로컨트롤러-인에이블-레지스터(35)와 협력하여 인에이블 신호를 제 2 MCU 코어 로직(31)에 보내서, 제 2 MCU 코어 로직(31)의 기능 로직(311)을 인에이블하고 제 2 프로그램 카운터(312)에 의해 포인팅된 프로그램 어드레스에 따라 제 2 MCU 코어 로직 프로그램 블록(332)에 저장되어 있는 인터럽트 프로그램을 재개한다. 마지막으로, 단계 S21에서, 제 2 MCU 코어 로직(31)의 제 2 프로그램 카운터(312)가 다시 프로그램 메모리(33)의 프로그램 메모리 어드레스 c202에 포인팅되었기 때문에, 3개의 MCU 코어 로직(30, 31, 32)의 상태는 다음과 같다: 제 1 MCU 코어 로직(30)의 기능 로직(301)은 여전히 제 1 프로그램 카운터(302)에 의해 포인팅된 프로그램 어드레스에 있는 프로그램을 실행하고 있고, 프로그램 어드레스는 프로그램 메모리(33)의 제 1 MCU 코어 로직 프로그램 블록(331)에 있고, 제 2 MCU 코어 로직(31)의 기능 로직(311)은 그것의 원 프로그램, 즉 제 2 프로그램 카운터(312)에 의해 포인팅된 프로그램 어드레스에 있는 프로그램의 실행을 재개하고, 프로그램 어드레스는 프로그램 메모리(33)의 제 2 MCU 코어 로직 프로그램 블록(332)에 있고, 제 3 MCU 코어 로직(32)의 기능 로직(321)은 여전히 제 3 프로그램 카운터(322)에 의해 포인팅된 프로그램 어드레스 에 있는 프로그램을 실행하고 있고, 프로그램 어드레스는 프로그램 메모리(33)의 제 3 MCU 코어 로직 프로그램 블록(333)에 있다.
상기 실시예들에 있어서, 제 1 MCU 코어 로직은 컨트롤러 MCU 코어 로직으로서 기술되지만, MCU 코어 로직들 어느 하나가 컨트롤러 MCU 코어 로직으로서 작용하여 삽입된 프로그램의 시작 어드레스를 피제어 MCU 코어 로직의 프로그램 카운터에 놓을 수 있다는 것을 알아야 한다.
그리고, MCU 기능 로직, 프로그램 카운터 및 스택 포인터가 함께 MCU 코어 로직을 구성하는 것으로 도 3에 도시되었지만, 이것은 단지 본 발명의 아키텍처의 더 용이한 이해를 위한 것이다. 실제로, MCU 기능 로직들 각각은 프로그램 카운터들 중 하나와 스택 포인트들 중 하나와 동적 대응(dynamic correspondence)을 가질 수 있다.
게다가, 상기 실시예들에 있어서, 삽입된 프로그램의 프로그램 어드레스들은 시스템 프로그램 블록(330)에 저장된다. 그러나, 이 기술분에서 숙련된 사람이 용이하게 이해할 수 있는 것과 같이, 삽입된 프로그램의 프로그램 어드레스들은 임의의 적절한 위치에, 예컨대 범용 레지스터에 저장될 수 있다. 본원에 기재된 시스템 프로그램 블록(330)은 단지 일례일 뿐이다.
더욱이, 상기 실시예들에 있어서, 프로그램 어드레스들은 컨트롤러 MCU 코어 로직(제 1 MCU 코어 로직(30))의 스택 포인터를 함께 사용하여, 스택 메모리에 의해 피제어 MCU 코어 로직(상기 실시예들에서의 제 2 MCU 코어 로직(31))으로부터/에 전달된다. 그러나, 이 기술분야에서 숙련된 사람은 동일한 목적을 달성하기 위 해 많은 등가의 접근방식을 용이하게 생각할 수 있다. 예를 들면, 프로그램 어드레스들은 범용 레지스터, 데이터 메모리, 또는 임의의 다른 메모리와 같은 임의의 다른 메모리 위치로부터/에 전달될 수 있다. 마찬가지로, 푸시(Push) 명령 또는 팝(Pop) 명령의 사용은 메모리 위치들간에서 프로그램 어드레스들을 전달하기 위한 유일한 방법이 아니다, 즉 예를 들어 이동(Move) 명령, 호(Call) 명령, 리턴(Return) 명령에 의해, 로드 테이블 동작(Load Table operation) 등에 의해 동일한 것을 행하는 많은 등가의 방법들이 있다.
종래의 기술과 비교했을 때, 본 발명은 피제어 MCU의 프로그램 카운터의 내용을 직접 변경하고, 그래서 컨트롤러 MCU가 플래그를 셋업하고 피제어 MCU가 응답하기 위해 대기할 필요가 없고, 따라서 수 클록 사이클 또는 심지어 수십 클록 사이클의 시간 낭비가 줄어든다. 그러므로, 본 발명이 개시한 것은 단순하고, 효과적이고, 신속히 응답하는 오토노머스 멀티-마이크로컨트롤러 시스템 및 제어 방법이다.
전술한 실시예들은 이 기술분야에서 숙련된 사람이 본 발명을 이해할 수 있도록 하기 위해 단지 예시적으로 나타낸 것일 뿐이다. 상기 실시예들은 결코 본 발명의 범위를 제한하고자 의도되지 않는다. 본 발명의 사상하의 임의의 변형예 및 변경예가 본 발명의 청구된 범위에 포함되어야 한다.
본 발명에 의하면, 다수의 MCU (마이크로컨트롤러) 코어 로직은 다수의 프로그램을 병렬로 실행하기 위해 사용되며, 각 MCU 코어 로직의 동작이 소프트웨어를 통해 정확하고 효율적으로 제어되어 멀티-마이크로컨트롤러 시스템의 각각의 MCU 코어 로직은 최상의 효율을 달성할 수 있는 오토노머스 멀티-마이크로컨트롤러 시스템을 제공할 수 있다.

Claims (20)

  1. 오토노머스 멀티-마이크로컨트롤러 시스템(autonomous multi-microcontroller system)에 있어서,
    복수의 MCU (Microcontroller Unit) 기능 로직들, 및 상기 MCU 기능 로직들에 각각 연결되어 프로그램 어드레스를 상기 MCU 기능 로직들에 제공하기 위한 대응하는 복수의 프로그램 카운터들을 구비하는 멀티-마이크로컨트롤러 유닛;
    상기 멀티-마이크로컨트롤러 유닛에 연결되어, 상기 MCU 기능 로직들을 인에이블링 또는 디스에이블링하는 마이크로컨트롤러-인에이블 레지스터; 및
    상기 멀티-마이크로컨트롤러 유닛에 연결되어, 상기 멀티-마이크로컨트롤러 유닛에 의해 요구되는 프로그램을 저장하는 적어도 하나의 메모리;를 포함하고,
    상기 MCU 기능 로직들 각각은 상기 프로그램 카운터들 중 어느 하나의 내용을 변경할 수 있는, 오토노머스 멀티-마이크로컨트롤러 시스템.
  2. 제 1 항에 있어서, 상기 MCU 기능 로직들 각각은 적어도 하나의 프로그램을 독립적으로 실행할 수 있고 상기 마이크로컨트롤러-인에이블 레지스터와 협력하여 상기 MCU 기능 로직들 중 다른 MCU 기능 로직에 디스에이블 또는 인에이블 신호를 전송하거나 프로그램 어드레스를 상기 적어도 하나의 메모리 또는 다른 MCU 기능 로직의 프로그램 카운터로 전달하여 다른 MCU 기능 로직을 제어하기 위해 명령을 동시에 실행할 수 있는, 오토노머스 멀티-마이크로컨트롤러 시스템.
  3. 제 2 항에 있어서, 상기 명령은,
    상기 다른 MCU 기능 로직을 인에이블링하는 것;
    상기 다른 MCU 기능 로직을 디스에이블링하는 것;
    프로그램 어드레스를 상기 다른 MCU 기능 로직에 대응하는 프로그램 카운터로 전달하는 것; 및
    상기 다른 MCU 기능 로직에 대응하는 프로그램 카운터의 내용을 상기 적어도 하나의 메모리에 전달하는 것;으로 구성된 그룹으로부터 선택된 하나인, 오토노머스 멀티-마이크로컨트롤러 시스템.
  4. 제 1 항에 있어서, 상기 적어도 하나의 메모리는,
    프로그램 메모리 버스를 통해 상기 멀티-마이크로컨트롤러 유닛에 연결되고, 적어도 하나의 프로그램을 저장하는 복수의 프로그램 메모리 어드레스들을 가진 적어도 하나의 프로그램 메모리; 및
    스택 메모리 버스를 통해 상기 멀티-마이크로컨트롤러 유닛에 연결되고, 상기 멀티-마이크로컨트롤러 유닛에 의해 실행되는 프로그램의 적어도 하나의 프로그램 어드레스를 저장하는 복수의 스택 메모리 어드레스들을 가진 적어도 하나의 스택 메모리;를 포함하고,
    상기 멀티-마이크로컨트롤러 유닛은,
    상기 MCU 기능 로직들에 각각 연결되어 스택 메모리 어드레스를 제공하는 복수의 스택 포인터들을 더 포함하는, 오토노머스 멀티-마이크로컨트롤러 시스템.
  5. 제 3 항에 있어서, 상기 다른 MCU 기능 로직에 대응하는 프로그램 카운터의 내용을 상기 적어도 하나의 메모리에 전달하는 상기 명령은 푸시(Push) 명령 및 이동(Move) 명령으로 구성된 그룹으로부터 선택된 하나인, 오토노머스 멀티-마이크로컨트롤러 시스템.
  6. 제 3 항에 있어서, 프로그램 어드레스를 상기 다른 MCU 기능 로직에 대응하는 프로그램 카운터로 전달하는 상기 명령은 팝(Pop) 명령, 이동(Move) 명령, 호(Call) 명령, 리턴(return) 명령, 및 로드 테이블 연산(Load Table operation)으로 구성된 그룹으로부터 선택된 하나인, 오토노머스 멀티-마이크로컨트롤러 시스템.
  7. 삭제
  8. 삭제
  9. 적어도 하나의 컨트롤러 MCU (Microcontroller Unit) 기능 로직, 피제어 MCU 기능 로직, 상기 피제어 MCU에 대응하는 프로그램 카운터, 및 메모리를 가진 멀티-마이크로컨트롤러 시스템을 위한 제어 방법에 있어서,
    상기 피제어 MCU 기능 로직을 디스에이블링하는 단계;
    상기 프로그램 카운터를 프리징(freezing)하는 단계;
    상기 메모리의 제 1 위치에 있는 내용을 상기 프로그램 카운터로 전달하는 단계; 및
    상기 피제어 MCU 기능 로직을 인에이블링하는 단계;를 포함하는, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  10. 제 9 항에 있어서, 상기 피제어 MCU 기능 로직을 디스에이블링하는 단계는 마이크로컨트롤러-인에이블 레지스터에 의해 상기 피제어 MCU 기능 로직으로 디스에이블 신호가 전송되어 상기 피제어 MCU 기능 로직의 현재 프로그램의 실행이 정지되고 상기 피제어 MCU 기능 로직의 프로그램 카운터가 현재 프로그램 어드레스에서 프리징됨으로써 수행되며,
    상기 피제어 MCU 기능 로직을 인에이블링하는 단계는 마이크로컨트롤러-인에이블 레지스터에 의해 상기 피제어 MCU 기능 로직으로 인에이블 신호가 전송되어 상기 피제어 MCU 기능 로직이 삽입된 프로그램을 실행함으로써 수행되는, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  11. 제 9 항에 있어서, 상기 메모리의 제 1 위치에 있는 내용을 상기 프로그램 카운터로 전달하기 전에, 상기 프로그램 카운터의 상기 내용을 상기 메모리의 제 2 위치에 저장하는 단계를 더 포함하는, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  12. 제 11 항에 있어서, 상기 피제어 MCU 기능 로직을 인에이블링하여 상기 피제어 MCU 기능 로직이 상기 메모리의 상기 제 1 위치에 있는 상기 내용에 대응하는 태스크를 완료한 후, 상기 메모리의 상기 제 2 위치에 있는 상기 내용을 상기 프로그램 카운터로 복구시키는 단계를 더 포함하는, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  13. 제 9 항에 있어서, 상기 메모리의 제 1 위치에 있는 내용을 상기 프로그램 카운터로 전달하는 상기 단계는 팝(Pop) 명령, 이동(Move) 명령, 호(Call) 명령, 및 로드 테이블 연산으로 구성된 그룹으로부터 선택된 하나인, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  14. 제 11 항에 있어서, 상기 프로그램 카운터의 내용을 상기 메모리의 제 2 위치에 저장하는 상기 단계는 푸시(Push) 명령, 및 이동(Move) 명령으로 구성된 그룹 으로부터 선택된 하나인, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  15. 제 12 항에 있어서, 상기 메모리의 상기 제 2 위치에 있는 상기 내용을 상기 프로그램 카운터로 복구시키는 상기 단계는 팝 명령, 이동 명령, 호 명령, 리턴 명령, 및 로드 테이블 연산으로 구성된 그룹으로부터 선택된 하나인, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  16. 제 9 항에 있어서, 상기 메모리의 상기 제 1 위치는 프로그램 메모리내의 한 위치인, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  17. 제 11 항에 있어서, 상기 메모리의 상기 제 2 위치는 스택 메모리내의 한 위치인, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  18. 제 17 항에 있어서, 상기 시스템은 상기 스택 메모리에 대응하는 스택 포인터를 더 포함하고, 상기 프로그램 카운터의 내용을 상기 메모리의 제 2 위치에 저장하는 상기 단계는,
    상기 스택 포인터의 인덱스에 따라 상기 프로그램 카운터의 내용을 상기 스택 메모리의 위치에 저장하는 단계를 포함하는, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  19. 제 16 항에 있어서, 상기 시스템은 스택 메모리 및 상기 스택 메모리에 대응하는 스택 포인터를 더 포함하고,
    상기 메모리의 제 1 위치에 있는 내용을 상기 프로그램 카운터에 전달하는 상기 단계는,
    상기 메모리의 제 1 위치에 있는 상기 내용을 상기 스택 메모리의 한 위치에 임시 저장하는 단계; 및
    상기 스택 메모리의 상기 위치에 있는 상기 내용을 상기 프로그램 카운터에 저장하는 단계를 포함하는, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
  20. 적어도 하나의 컨트롤러 MCU(Microcontroller Unit) 기능 로직, 피제어 MCU 기능 로직, 상기 피제어 MCU에 대응하는 프로그램 카운터, 프로그램 메모리, 스택 메모리, 및 상기 스택 메모리에 대응하는 스택 포인터를 가진 멀티-마이크로컨트롤러 시스템을 위한 제어 방법에 있어서,
    상기 피제어 MCU 기능 로직을 디스에이블링하는 단계;
    상기 프로그램 카운터를 프리징하는 단계;
    상기 스택 포인터의 제 1 인덱스에 따라 상기 프로그램 카운터의 내용을 상기 스택 메모리의 제 1 위치에 저장하는 단계;
    상기 스택 포인터의 제 2 인덱스에 따라 상기 프로그램 메모리의 어드레스를 상기 스택 메모리의 제 2 위치에 임시 저장하는 단계;
    상기 스택 포인터의 상기 제 2 인덱스에 따라 상기 스택 메모리의 상기 제 2 위치에 있는 내용을 상기 프로그램카운터에 저장하는 단계;
    상기 피제어 MCU 기능 로직을 인에이블링하여 상기 피제어 MCU 기능 로직이 상기 프로그램 메모리의 상기 어드레스에 있는 내용에 대응하는 태스크를 완료하는 단계;
    상기 피제어 MCU 기능 로직을 디스에이블링하는 단계;
    상기 스택 메모리의 상기 제 1 위치에 있는 내용을 상기 프로그램 카운터로 복구시키는 단계; 및
    상기 피제어 MCU 기능 로직을 인에이블링하여 상기 피제어 MCU 기능 로직이 그것의 원 태스크를 재개하는 단계;를 포함하는, 멀티-마이크로컨트롤러 시스템을 위한 제어 방법.
KR1020060119680A 2006-04-14 2006-11-30 오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어방법 KR100946561B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW095113415 2006-04-14
TW095113415A TW200725393A (en) 2005-12-23 2006-04-14 Self-control multi-microcontroller system and method

Publications (2)

Publication Number Publication Date
KR20070102370A KR20070102370A (ko) 2007-10-18
KR100946561B1 true KR100946561B1 (ko) 2010-03-11

Family

ID=38758803

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060119680A KR100946561B1 (ko) 2006-04-14 2006-11-30 오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어방법

Country Status (4)

Country Link
JP (1) JP2007287126A (ko)
KR (1) KR100946561B1 (ko)
FR (1) FR2911415B1 (ko)
TW (1) TW200725393A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833476B (zh) * 2010-05-28 2013-08-14 西安交通大学 基于cmp的推测多线程机制下的独立栈函数调用方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000005265A (ko) * 1996-04-08 2000-01-25 토마스 데주어 다중 통신 인터페이스 회로 및 그 방법
US6085307A (en) * 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US6341344B1 (en) 1998-03-20 2002-01-22 Texas Instruments Incorporated Apparatus and method for manipulating data for aligning the stack memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000005265A (ko) * 1996-04-08 2000-01-25 토마스 데주어 다중 통신 인터페이스 회로 및 그 방법
US6085307A (en) * 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US6341344B1 (en) 1998-03-20 2002-01-22 Texas Instruments Incorporated Apparatus and method for manipulating data for aligning the stack memory

Also Published As

Publication number Publication date
TWI312941B (ko) 2009-08-01
TW200725393A (en) 2007-07-01
KR20070102370A (ko) 2007-10-18
FR2911415A1 (fr) 2008-07-18
FR2911415B1 (fr) 2013-12-27
JP2007287126A (ja) 2007-11-01

Similar Documents

Publication Publication Date Title
US10949249B2 (en) Task processor
CN107408036B (zh) 用户级分叉与结合处理器、方法、系统和指令
US8972699B2 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
KR102187912B1 (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
US5727227A (en) Interrupt coprocessor configured to process interrupts in a computer system
CN100533428C (zh) 半导体器件
US20070162640A1 (en) Method and system for efficient context swapping
US10459773B2 (en) PLD management method and PLD management system
CN109522099B (zh) 提高非实时性操作系统实时性的方法及其系统
WO2008023426A1 (fr) Dispositif de traitement de tâche
GB2318194A (en) Power saving in asynchronous data processing apparatus
EP3770759A1 (en) Wake-up and scheduling of functions with context hints
US5948093A (en) Microprocessor including an interrupt polling unit configured to poll external devices for interrupts when said microprocessor is in a task switch state
KR100946561B1 (ko) 오토노머스 멀티-마이크로컨트롤러 시스템 및 그의 제어방법
US20070220234A1 (en) Autonomous multi-microcontroller system and the control method thereof
US10073810B2 (en) Parallel processing device and parallel processing method
US6418540B1 (en) State transfer with throw-away thread
US9946665B2 (en) Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU)
GB2506169A (en) Limiting task context restore if a flag indicates task processing is disabled
US20120066415A1 (en) Methods and systems for direct memory access (dma) in-flight status
US9342312B2 (en) Processor with inter-execution unit instruction issue
US9043507B2 (en) Information processing system
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
US20230161616A1 (en) Communications across privilege domains within a central processing unit core

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: 20130116

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140221

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150303

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151221

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180305

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20200303

Year of fee payment: 11