KR20180019603A - 구성 가능한 메일 박스 데이터 버퍼 장치 - Google Patents

구성 가능한 메일 박스 데이터 버퍼 장치 Download PDF

Info

Publication number
KR20180019603A
KR20180019603A KR1020177037091A KR20177037091A KR20180019603A KR 20180019603 A KR20180019603 A KR 20180019603A KR 1020177037091 A KR1020177037091 A KR 1020177037091A KR 20177037091 A KR20177037091 A KR 20177037091A KR 20180019603 A KR20180019603 A KR 20180019603A
Authority
KR
South Korea
Prior art keywords
data
slave
master
configurable
core
Prior art date
Application number
KR1020177037091A
Other languages
English (en)
Inventor
마이클 캐서우드
데이비드 미키
브라이언 크리스
Original Assignee
마이크로칩 테크놀로지 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로칩 테크놀로지 인코포레이티드 filed Critical 마이크로칩 테크놀로지 인코포레이티드
Publication of KR20180019603A publication Critical patent/KR20180019603A/ko

Links

Images

Classifications

    • 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
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Microcomputers (AREA)
  • Logic Circuits (AREA)
  • Multi Processors (AREA)

Abstract

단일 칩 마이크로컨트롤러는 마스터 코어와 적어도 하나의 슬레이브 코어를 구비한다. 상기 마스터 코어는 마스터 시스템 클록에 의해 클록킹되고, 상기 슬레이브 코어는 슬레이브 시스템 클록에 의해 클록킹되고, 각각의 코어는 마스터 마이크로컨트롤러와 슬레이브 마이크로컨트롤러를 각각 형성하기 위해 복수의 주변 디바이스들과 관련된다. 상기 마스터 마이크로컨트롤러와 상기 슬레이브 마이크로컨트롤러 사이에는 통신 인터페이스가 제공되고, 상기 통신 인터페이스는 복수의 구성 가능한 데이터 레지스터들의 각각에 방향을 할당하도록 구성 가능한 흐름 제어 로직과 결합된 상기 복수의 구성 가능한 방향성 데이터 레지스터들을 갖는다.

Description

구성 가능한 메일 박스 데이터 버퍼 장치
관련 특허 출원
본 출원은, 2015년 6월 18일 출원된 미국 가출원 번호 62/181,379 호의 우선이익을 주장하며, 상기 미국 가출원은 모든 목적들을 위해 본 출원에 참조로 통합된다.
기술 분야
본 개시는 다중 코어들을 갖는 마이크로컨트롤러들과 같은 멀티-프로세서 임베디드 시스템들에 관한 것으로, 특히 이러한 임베디드 시스템을 위한 구성 가능한 메일박스 데이터 버퍼 장치에 관한 것이다.
멀티-프로세서 코어 마이크로컨트롤러들은 완전히 분리된 코어들로 설계될 수 있으며, 각 코어는 서로 다른 시스템 클록에서 동작할 수 있다. 따라서, 두 코어들 간에 통신하는 기능을 제공하기 위해서는, 특정 통신 인터페이스가 필요하다. 특히, 두 프로세서들 간의 클록 경계를 넘어(across) 소량의 데이터를 빠르고 안정적으로 이동시키는 수단이 필요하다.
해결책은 완전히 구성 가능해야 했지만 실리콘 사용과 관련해서는 효율적이어야 했다.
일 실시예에 따르면, 단일 칩 마이크로컨트롤러는 마스터 코어와 슬레이브 코어를 포함할 수 있으며, 여기서 상기 마스터 코어는 마스터 시스템 클록에 의해 클록킹되고, 상기 슬레이브 코어는 슬레이브 시스템 클록에 의해 클록킹되고, 각각의 코어는 마스터 마이크로컨트롤러와 슬레이브 마이크로컨트롤러를 각각 형성하기 위해 복수의 주변 디바이스들과 관련되며, 상기 마스터 마이크로컨트롤러와 상기 슬레이브 마이크로컨트롤러 사이에 통신 인터페이스를 더 포함하고, 상기 통신 인터페이스는 복수의 구성 가능한 데이터 레지스터들의 각각에 방향을 할당하도록 구성 가능한 흐름 제어 로직과 결합된 상기 복수의 구성 가능한 방향성 데이터 레지스터들을 포함한다. 추가 실시예에 따르면, 상기 단일 칩 마이크로컨트롤러는 각각의 방향성 데이터 레지스터들을 구성하기 위한 퓨즈들을 더 포함할 수 있다.
추가 실시예에 따르면, 상기 단일 칩 마이크로컨트롤러는 각각의 방향성 데이터 레지스터들을 구성하기 위한 구성 레지스터들을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 단일 칩 마이크로컨트롤러는 상기 복수의 구성 가능한 방향성 데이터 레지스터들에 대해 상기 마스터와 슬레이브 코어 사이에 핸드셰이크 신호들을 제공하도록 구성된 핸드셰이크 로직 블록을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 통신 인터페이스는 복수의 메일박스들을 정의하도록 추가로 구성 가능하고, 상기 복수의 구성 가능한 데이터 레지스터들의 연속적인 데이터 레지스터들의 구성 가능한 수는 각각의 메일 박스에 할당된다. 추가 실시예에 따르면, 상기 단일 칩 마이크로컨트롤러는 각각의 방향성 데이터 레지스터들을 구성하기 위한 퓨즈들을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 단일 칩 마이크로컨트롤러는 각각의 방향성 데이터 레지스터들을 구성하기 위한 구성 레지스터들을 더 포함할 수 있다. 추가 실시예에 따르면, 구성 가능한 데이터 레지스터의 데이터 방향은 상기 단일 칩 마이크로컨트롤러의 프로그래밍 동안에 할당될 수 있다. 추가 실시예에 따르면, 메일박스로의 레지스터들의 할당과 상기 복수의 구성 가능한 데이터 레지스터의 각각의 데이터 방향의 할당은 상기 단일 칩 마이크로컨트롤러의 프로그래밍 동안에 프로그램될 수 있다. 추가 실시예에 따르면, 각각의 데이터 레지스터는 방향 신호와 핸드셰이크 신호에 의해 제어될 수 있다. 추가 실시예에 따르면, 메일박스의 상기 구성 가능한 레지스터들 중 하나는 제어 레지스터로서 사용될 수 있다. 추가 실시예에 따르면, 상기 복수의 구성 가능한 데이터 레지스터들 중 적어도 하나는 상태 레지스터로서 사용될 수 있다. 추가 실시예에 따르면, 상기 복수의 구성 가능한 데이터 레지스터들 중 적어도 하나는 명령 레지스터로서 사용될 수 있다. 추가 실시예에 따르면, 상기 단일 칩 마이크로컨트롤러는 상기 마스터 코어만으로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 기록 경로 및 상기 구성 가능한 데이터 레지스터 중 상기 하나로부터 상기 슬레이브 코어로의 판독 경로, 또는 상기 슬레이브 코어만으로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 기록 경로 및 상기 구성 가능한 데이터 레지스터 중 상기 하나로부터 상기 마스터 코어로의 판독 경로를 정의하기 위한 복수의 멀티플렉서들을 포함할 수 있다. 추가 실시예에 따르면, 상기 마스터 또는 슬레이브 코어로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 상기 기록 경로가 각각 설정될 때, 상기 구성 가능한 데이터 레지스터 중 상기 하나로부터 상기 마스터 또는 슬레이브 코어로의 판독 경로가 이용 가능하다. 추가 실시예에 따르면, 상기 마스터 코어로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 상기 기록 경로가 설정될 때, 상기 마스터 클록은 상기 구성 가능한 데이터 레지스터 중 상기 하나를 기록하기 위한 클록을 제공하고, 상기 슬레이브 클록은 상기 구성 가능한 데이터 레지스터 중 상기 하나를 판독하기 위한 클록을 제공한다. 추가 실시예에 따르면, 상기 슬레이브 코어로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 상기 기록 경로가 설정될 때, 상기 슬레이브 클록은 상기 구성 가능한 데이터 레지스터 중 상기 하나를 기록하기 위한 클록을 제공하고, 상기 마스터 클록은 상기 구성 가능한 데이터 레지스터 중 상기 하나를 판독하기 위한 클록을 제공한다. 추가 실시예에 따르면, 상기 단일 칩 마이크로컨트롤러는 상기 통신 인터페이스 내에 판독 FIFO 메모리 및 기록 FIFO 메모리를 더 포함할 수 있고, 상기 판독 FIFO 메모리는 상기 슬레이브 코어와 결합된 데이터 입력부 및 상기 마스터 코어와 결합된 데이터 출력부를 포함하고, 상기 기록 FIFO 메모리는 상기 마스터 코어와 결합된 데이터 입력부 및 상기 슬레이브 코어와 결합된 데이터 출력부를 포함한다. 추가 실시예에 따르면, 상기 판독 FIFO 메모리 및 기록 FIFO 메모리는 구성 레지스터를 통해 선택적으로 인에이블될 수 있다. 추가 실시예에 따르면, 상기 단일 칩 마이크로컨트롤러는 복수의 슬레이브 코어들을 더 포함할 수 있고, 상기 통신 인터페이스는 복수의 데이터 레지스터 세트들을 포함하고, 각각의 데이터 레지스터 세트는 복수의 구성 가능한 데이터 레지스터들의 각각에 방향을 할당하도록 구성 가능한 흐름 제어 로직과 결합된 상기 복수의 구성 가능한 방향성 데이터 레지스터들을 포함한다.
또 하나의 실시예에 따르면, 단일 칩 마이크로컨트롤러의 마스터 코어와 슬레이브 코어 사이에 통신을 제공하기 위한 방법에 있어서, 상기 마스터 코어는 마스터 시스템 클록에 의해 클록킹되고, 상기 슬레이브 코어는 슬레이브 시스템 클록에 의해 클록킹되고, 각각의 코어는 마스터 마이크로컨트롤러와 슬레이브 마이크로컨트롤러를 각각 형성하기 위해 복수의 주변 디바이스들과 관련되고, 상기 방법은, 상기 마스터 마이크로컨트롤러와 상기 슬레이브 마이크로컨트롤러 사이에 통신 인터페이스 제공하는 것, 각자의 메일박스들을 형성하기 위해 흐름 제어 로직과 결합된 복수의 구성 가능한 방향성 데이터 레지스터들을 구성하는 것, 상기 복수의 구성 가능한 방향성 데이터 레지스터들의 각각에 대해 상기 마스터 코어로부터의 또는 상기 마스터 코어로의 데이터 방향을 구성하는 것, 및 상기 복수의 구성 가능한 방향성 데이터 레지스터들을 통해서만 상기 마스터 코어와 상기 슬레이브 코어 사이에 데이터를 교환하는 것을 포함한다.
상기 방법의 추가 실시예에 따르면, 상기 구성 단계들은 상기 단일 칩 마이크로컨트롤러를 프로그래밍하는 동안에 퓨즈들을 통해 수행될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 교환 단계는 상기 마스터와 슬레이브 코어 사이의 핸드셰이크 신호들에 의해 수행될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 복수의 구성 가능한 데이터 레지스터들의 연속적인 데이터 레지스터들의 구성 가능한 수는 각각의 메일 박스에 할당될 수 있다. 상기 방법의 추가 실시예에 따르면, 메일박스의 상기 구성 가능한 레지스터들 중 하나는 제어 레지스터로서 사용될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 복수의 구성 가능한 데이터 레지스터들 중 적어도 하나는 상태 레지스터 또는 명령 레지스터로서 사용될 수 있다.
도 1은 듀얼-코어 마이크로컨트롤러의 제 1 실시예의 블록도이다.
도 2는 듀얼 또는 멀티-코어 마이크로컨트롤러의 제 2 실시예의 블록도이다.
도 3은 다양한 실시예들에 따른 통신 인터페이스의 보다 상세한 블록도이다.
도 4는 다양한 실시예들에 따른 예시적인 메일박스 구성들을 도시한 도면이다.
도 5는 데이터 기록 채널(상부) 및 데이터 판독 채널(하부)을 도시한 도면이다.
도 6은 메일박스 핸드셰이크 프로토콜 시퀀스 다이어그램을 도시한 도면이다.
도 7은 듀얼 또는 멀티-코어 마이크로컨트롤러를 위한 옵션의 부가적인 FIFO 메모리의 블록도이다.
도 8은 판독 FIFO 인터럽트 동작을 도시한 도면이다.
도 9는 다양한 실시예들에 따른 결합된 메일박스 및 FIFO 통신 인터페이스의 블록도이다.
도 1 및 도 2에 도시된 바와 같이, 듀얼 또는 멀티 코어 처리 디바이스(100, 200)는 마스터 중앙 처리 유닛(CPU)(112)을 갖는 마스터 마이크로컨트롤러(110) 및 하나 이상의 슬레이브 유닛들(120)을 구비하도록 설계될 수 있고, 각각의 슬레이브 유닛(120)은 슬레이브 중앙 처리 유닛(122)을 구비하고, 각각의 슬레이브 중앙 처리 유닛(122)의 코어 구조(design)는 마스터 CPU(112)의 코어 구조와 일반적으로 동일하거나 유사할 수 있다. 그러나, 다른 실시예들에 따르면, 슬레이브 CPU(122)는 마스터 CPU(112)와는 다를 수 있다. 마스터 마이크로컨트롤러는 도 1 및 도 2에 도시된 바와 같이 자신의 주변 디바이스들의 세트를 갖는다. 슬레이브 유닛(120)은 자신의 주변 디바이스들의 세트를 가질 수도 있고 갖지 않을 수도 있으며, 따라서 마이크로컨트롤러를 홀로 형성할 수도 있고 형성하지 않을 수도 있다. 따라서, 각각의 마스터 및 슬레이브 디바이스는 다소간 완전히 독립적인 처리 디바이스들을 형성하고 전용 버스 또는 통신 인터페이스(130)와 통신할 수 있다. 도 1 및 도 2는 마스터 마이크로컨트롤러(110) 및 단일 또는 복수의 슬레이브 마이크로컨트롤러(들)(120)를 갖는 이러한 구조를 도시한다. 두 개의 코어들(110, 120) 사이의 통신을 가능케 하는 통신 인터페이스(130)가 제공된다. 각각의 프로세서(112, 122)는 도시된 바와 같은 하버드(Harvard) 아키텍처로 설계될 수 있다. 그러나, 다양한 실시예들에 따른 원리들은 폰 노이만(von Neumann) 아키텍처로 쉽게 변환될 수 있다. 마스터 유닛은 예를 들어, 프로그램 메모리로서 사용되는 플래시 메모리(116) 및 데이터 메모리로서 사용되는 랜덤 액세스 메모리(114)를 포함하고, 이 메모리들 각각은 마스터 코어(112)와 결합된다.
도 1 및 도 2에 도시된 바와 같이, 슬레이브 유닛(120)은 플래시 메모리 없이 설계될 수 있다. 그 대신에, 전용 프로그램 랜덤 액세스 메모리(126)가 제공된다. 이 메모리는 휘발성이기 때문에, 이것은 다양한 실시예들에 따라 마스터(110)를 통해 로딩될 것이다. 이러한 구조 선택은 플래시 기술로 인한 병목 현상을 피할 수 있다는 장점이 있다. 플래시 메모리는 일반적으로 RAM보다 느리다. 따라서, 어떠한 판독 지연들도 없으며 슬레이브는 보다 높은 실행 속도로 동작될 수 있으며, 이는 예를 들어 SMPS 애플리케이션과 같은 특정 고속 애플리케이션에 매우 유익할 수 있다. 전술한 바와 같이, 하나보다 많은 슬레이브 유닛(120)이 다양한 실시예들에 따라 구현될 수 있다. 코어들 둘 다가 동일한 경우에, 마스터 코어(112)는 슬레이브 유닛(122)에서 구현되지 않거나 슬레이브 유닛에서 기능하지 않을 수 있는 추가 명령어들을 포함하도록 설계될 수 있다. 이러한 추가 명령어들은 플래시 메모리(116) 또는 외부 소스로부터의 데이터를 슬레이브 디바이스(120)의 PRAM(126)으로 전송하는 것을 가능케 한다. 예를 들어, 일 실시예에 따르면, 다수의 코어들이 단일 칩 디바이스 내에 구현될 수 있고 각 코어는 할당된 구성 레지스터를 가질 수 있으며, 여기서 이러한 레지스터의 비트들 중 하나는 각각의 유닛이 마스터인지 슬레이브인지를 정의할 수 있다. 코어들 중 하나만 마스터로 설정할 수 있게 하는 로직이 있을 수 있다. 이 비트가 설정되면 추가 명령어가 실행될 수 있다. 다른 유닛들(슬레이브들)에서는 이러한 명령어들이 실행되지 않을 수 있는데, 예를 들면, 그것들은 불법적인 실행코드들(opcodes)로서 해석될 수 있다.
마스터 유닛(110)에 의해 PRAM(126)에 액세스하는 제어 로직은 버퍼/비교기 유닛(118)으로 도 1에 도시 된 바와 같이 마스터 유닛에 위치될 수 있다. 대안적으로, 유사한 유닛이 PRAM 래퍼(wrapper) 유닛(128)으로 도 2에 도시된 바와 같이 슬레이브 유닛(120) 내에 배치될 수 있다. 어느 하나의 유닛은 PRAM의 액세스를 마스터 유닛(110)과 슬레이브 유닛(120) 중 어느 하나에 독점적으로 허용하도록 설계된다. 다른 실시예들은 마스터 코어 내에 로직의 일부를 배치하고 슬레이브 코어 내에 다른 부분들을 배치하거나, 또는 로직을 유닛들 둘 다의 외부에 배치할 수 있다. 유사하게, 통신 인터페이스(130)는 어느 유닛 내부에 있거나 또는 전적으로 유닛들 둘 다의 외부에 있을 수 있다. PRAM 액세스 유닛들(118 또는 128)에 대한 추가적인 제어는 도 2에 점선으로 표시된 바와 같이 통신 인터페이스(130)에 의해 제공될 수 있다. 도 2는 또한 점선을 이용하여 추가의 슬레이브 유닛들(140 및 150)을 도시한다. 모든 유닛들은 버스 및 각 슬레이브 유닛 내의 관련 래퍼 유닛들(128)을 통해 연결될 수 있다. 따라서, 실시예들은 듀얼 코어 구현으로 제한되지 않는다. 본 기술분야의 통상의 기술자는 다른 구현들이 가능하다고 인식할 것이다.
다양한 실시예에 따르면, 마스터 및 슬레이브 프로세서들 간의 데이터 전송에 제공되는 두 가지 접근법이 있다. 메일박스 기반 데이터 파이프가 디폴트 접근 방식이며 항상 존재한다. FIFO 기반 데이터 파이프는 매개변수화된 옵션이다. 각 접근 방식에는 장점과 단점이 있다.
다양한 실시예에 따르면, 임의의 메일 박스에 퓨즈가 할당될 수 있는 데이터 흐름 제어 로직의 몇개의 블록들과 결합된 통신 인터페이스(130) 내에 퓨즈 구성 가능한 양방향 n-비트 "메일박스" 레지스터들의 세트가 제공된다. 명세서에서 "양방향성"이란 레지스터에 있어서는 레지스터가 구성될 때 두 방향들 중 하나를 선택할 수 있다는 것을 의미한다. 동작시 각 레지스터는 단방향이다. 그러나, 메일박스는 어느 방향으로든 동작하도록 구성되는 레지스터들을 포함할 수 있으므로, 메일박스는 양방향으로 간주될 수 있다. 16-비트 듀얼-코어 마이크로컨트롤러에서, 이러한 레지스터들은 n=16 비트 폭이 될 것이다. 일부 추가 버퍼링은 클록 멀티플렉싱 문제들을 제거하고 그리고 각 방향으로 메일박스들을 복제하지 않아도 된다. 따라서, 하나의 워드와 16 워드들 사이의 범위에 있는 어드레스된 데이터의 블록들은 메일 박스가 될 수 있으며, 여기서 일부 실시예들에 따르면 기록/판독될 최종 레지스터는 하드웨어 데이터 흐름 제어 프로토콜을 지시할 것이다. 각 데이터 레지스터의 방향이 프로그램 가능하기 때문에, 마스터 또는 슬레이브를 참조(referencing)하는 것은 데이터 전송 프로토콜을 논의할 때 의미가 없다. 그러므로 "송신기" 및 "수신기"라는 용어는 이후에는 데이터 기록 및 판독 프로세서들을 각각 나타내는데 사용된다. 데이터 레지스터 방향에 따라, 데이터 기록 및 판독 프로세서들은 각각 마스터 및 슬레이브 또는 슬레이브 및 마스터가 될 수 있다.
일부 실시예들에 따르면, 메일박스 레지스터 동작 데이터 방향은 예를 들어 디바이스 퓨즈(메일박스 당 하나)에 의해 결정될 수있다. 이것은 이하에서 보다 상세히 설명될 새로운 메일박스 레지스터 설계 구조의 사용에 의해 실용적으로 될 수 있다.
메일박스 내의 (공유된 자원) 데이터 레지스터들로의 액세스는 데이터 흐름 제어 프로토콜을 사용하여 제어된다. 결과적으로, 메일박스 기반 데이터 파이프로의 액세스는 상호 배타적이다(즉, 메일박스 기반 데이터 파이프는 프로세서들 둘 다에 의해 동시에 액세스될 수 없다). 각 프로세서는 액세스 제어를 다른 프로세서에 전달하기 전에 자신의 액세스를 완료해야 한다.
그러나 메일박스의 모든 콘텐츠는 메모리 매핑될 것이므로 임의의 특정 순서로 액세스될 필요가 없을 것이다(프로세서들 둘 다에 의해 마지막에 액세스되어야 하는 하드웨어 데이터 흐름 제어 프로토콜을 처리하기 위해 할당된 메일박스 레지스터는 제외함).
또한, 소프트웨어 관리 버퍼를 구성하는 메일박스들은 메모리에서 순차적으로 주소 지정될 필요가 없다. 이것은 전송되는 데이터가 제어, 상태 및 시스템 데이터의 혼합으로 이루어지는 애플리케이션에서 유용할 수 있다. 또한, 하나보다 많은 데이터 레지스터로 이루어지는 메일박스들에서는, 메일박스 내의 모든 데이터 레지스터들의 방향이 같을 필요는 없다. 데이터 흐름 제어 프로토콜은 마스터와 슬레이브 간에 액세스 제어를 전송하는데 사용되지만, 프로토콜 하드웨어에 할당 된 데이터 레지스터만이 필요한 데이터 방향 규칙들을 준수해야 한다. 다양한 크기, 방향 및 성능의 버퍼들로의 한 쌍의 가능한 단체(organizations) 메일박스들이 도 4와 관련하여 이하에서 보다 상세하게 설명될 것이다. 이것들은 단지 메일박스 방식의 유연성을 입증하기 위한 것이고 특정 사용 모델들로서 의도되지는 않는다. 다른 구성들도 가능하다.
각 데이터 흐름 제어 로직 블록은 퓨즈 비트 필드 설정(데이터 흐름 제어 블록 당 하나의 비트 필드)에 기초하여 임의의 메일박스에 할당될 수 있다. 위의 결과는 사용자가 지원되는 메일박스들의 제한될 수 있는 수까지 모든 크기의 데이터 버퍼를 정의할 수 있다는 것이다. 데이터 흐름 제어 로직 블록은 기록될 버퍼의 마지막 요소에 할당될 것이다. 버퍼 내의 요소들(즉, 개별 메일박스 레지스터들)은 어느 방향으로든 동작하도록 구성될 수 있다(즉, 버퍼 내의 데이터는 기록 및 판독될 수 있다).
소스 및 대상 프로세서 클록들을 판독 및 기록 데이터 레지스터들로 단순히 멀티플렉싱하면 설계 타이밍 문제가 발생하여 멀티플렉싱을 실용적이지 못하게 만든다(그리고 방향당 하나씩 두 개의 메일박스들을 인스턴스화(instantiation)하게 한다). 그러나 양측의 기록 버퍼, 및 기록 데이터를 파이프라이닝하는 (기록 클록으로부터 지연된 다중 클록으로) 공통의 판독 버퍼를 지원하는 것은 타이밍 문제를 해결하고 다양한 실시예들에 따른 효율적인 설계로 이어진다.
클록 경계를 넘는 데이터 전달자(conduits)는 위에 설명된 이유들 때문에 전형적으로 단방향이다. 데이터 흐름 제어는 전형적으로 클록 경계 또는 다른 인터페이스를 넘어 데이터 전달자의 각 요소와 연관된다. 다양한 실시예들에 따르면, 퓨즈들은 핸드셰이크 로직을 할당하여 설계 복잡도를 줄이기 위해(주로 특수 기능 레지스터 요구 사항들을 줄이기 위해) 사용될 수 있다.
퓨즈들은 대개 마이크로컨트롤러의 구성 중에만, 즉 마스터 플래시 프로그램이 예를 들어 외부 프로그래머 디바이스를 통해 프로그래밍될 때에만 설정된다. 일반적으로 초기 구성은 특정 애플리케이션 용으로 설계되므로 런타임 중에는 변경되지 않아도 된다. 따라서, 퓨즈의 사용이 선호될 수 있다. 그러나, 메일박스들을 프로그래밍하기 위한 다른 수단이 대신 사용될 수 있다. 예를 들면, 임의의 유형의 비휘발성 메모리가 퓨즈들 대신에 사용될 수 있다.
멀티-코어 마이크로컨트롤러 또는 임베디드 시스템은 도 1 및 도 2에 도시된 바와 같이 마스터 코어 및 슬레이브 프로세서를 포함하도록 설계될 수 있다. 전술한 바와 같이, 코프로세서(coprocessor)와는 달리, 슬레이브 프로세서는 완전한 기능을 갖춘 독립형 프로세서 코어이며, 할당되거나 할당 가능한 복수의 주변 디바이스들을 구비할 수 있다. 유사하게, 마스터 프로세서는 복수의 할당된 또는 할당 가능한 주변 디바이스들을 가질 수 있고, 자신의 클록상에서 실행될 수 있다. 따라서, 서로 다른 코어들은 서로 다른 속도들로 클록킹될 수 있다. 예를 들어, 슬레이브 코어는 일부 실시예들에 따라 프로세싱 집약적인 태스크들을 제어할 수 있도록 더 높은 클록을 사용할 수 있다. 이것은 또한 RAM을 일반적으로 플래시 메모리보다 빠른 프로그램 메모리로서 사용함으로써 가능하다.
다양한 실시예들에 따르면, 단순한 16 비트 데이터 채널이 서로 다른 클록 속도들로 비동기적으로 구동되는 마스터 및 슬레이브 프로세서들 간에 생성된다. 이러한 16-비트 채널은 처음에는 양방향으로 설계될 수 있으며, 여기서 방향은 퓨즈들 또는 구성 레지스터를 통해 프로그램 시간에 고정될 수 있고, 견고하고 유연할 수 있으며, 그리고 특히 구성을 위한 퓨즈들을 사용할 때에는 단지 최소 실리콘 풋프린트(footprint)만을 필요로 할 수 있다.
도 3은 복수의 메일박스 레지스터들(MBXD0...MBXD15) 관련 로직(340, 350) 및 퓨즈들(310, 320)뿐만 아니라 메일박스 레지스터들(MBXD0...MBXD15)에 의해 링크될 마스터 버스 및 슬레이브 버스를 포함하는 블록도를 도시한다. 퓨즈들 또는 구성 메모리(310, 320)는 각각의 메일박스 레지스터의 방향 및 핸드셰이크 선택을 제어한다. 공유된 핸드셰이크 로직 블록(330)이 또한 제공된다. 일 실시예에 따르면, 16개의 메일박스 레지스터들이 16-비트 듀얼 코어 마이크로컨트롤러 내에 배치될 수 있다. 이 레지스터들은 서로 다른 메일박스들에 할당될 수 있으며, 여기서 각 레지스터는 하나의 메일박스에만 할당될 수 있다.
도 4는 데이터, 상태 및 명령어들을 포함할 마스터/슬레이브 데이터 인터페이스(130)에서의 메일박스들의 서로 다른 가능한 구성들을 도시한다. 어떤 H/W 데이터 흐름 제어도 할당되지 않는다는 것을 유의해야 한다. 액세스는 소프트웨어 프로토콜을 통해 제어된다. 도 4에 도시된 바와 같이, 메일박스들은 레지스터들(410)의 서로 다른 세트들로 분할될 수 있다. 이를 위해, 예를 들면 도 4의 우측에 도시된 바와 같은 구성 퓨즈들(420)이 사용될 수 있다. 퓨즈들(420)의 블록은 첫번째 9개의 레지스터들을 제 1 메일박스에 할당하고, 다음 레지스터를 사용하지 않고 그 다음 4개의 레지스터들을 제 2 메일박스에 할당한다. 마지막 2개의 레지스터는 퓨즈를 예를 들면 Fh 또는 임의의 다른 소정 값으로 설정함으로써 상태 및 명령어들로서 사용된다.
예 1은 2개의 단방향 버퍼들, 명령어 및 상태어를 지원하는 배열을 보여준다. 데이터 흐름 제어 로직 블록은 각 버퍼에 액세스된 마지막 워드에 할당된다(버퍼 길이는 지원되는 메일박스들의 수의 범위 내에서 임의적(arbitrary)임에 유의해야 함). 데이터 흐름 제어 로직 블록은 또한 명령어에 할당된다. 그러나 상태 워드로의 액세스는 소프트웨어를 통해 제어되므로, 어떠한 데이터 흐름 제어 로직 블록도 필요하지 않다. 메일박스 레지스터(MSIxMBXD9)는 사용되지 않는다.
예 2는 2개의 양방향 버퍼들과 하나의 명령어를 지원하는 배열을 보여준다. 데이터 흐름 제어 로직 블록은 버퍼들 중 하나의 버퍼에 액세스되는 최종 워드에 할당되지만 다른 워드에는 할당되지 않는다. 이것은 애플리케이션이 다른 버퍼 액세스가 완료된 후에 오직 하나의 프로세서만이 상기 버퍼에 액세스한다는 것을 보장할 수 있기 때문이다. 데이터 흐름 제어 로직 블록은 또한 상기 명령어에 할당된다.
도 5는 도 5의 상반부에 데이터 기록 채널 및 하반부에 데이터 판독 채널을 도시한다. 좌측은 마스터 측을 나타내고 우측은 슬레이브 측을 나타낸다. 실제의 메일박스(540)는 기록 동작들을 위해 그리고 직접 판독 동작들을 위해 버퍼 레지스터들(510 또는 520)을 경유하여 멀티플렉서(530)를 통해 액세스된다. 메일박스(540)는 일반적으로 마스터 코어에 의해 제어된다. 그러나, 클록은 멀티플렉서(550)를 통해 마스터와 슬레이브 중 어느 하나에 의해 제공된다. 도 5에 도시된 바와 같이, 플래그(cfg_mbox_master_data_rd[n])는 메일박스 레지스터가 마스터에 대해 기록 채널(도 5의 상부)로서 구성되는지 또는 판독 채널(도 5의 하부)로서 구성되는지를 결정한다. 기록은 마스터와 슬레이브 중 어느 하나에 의해서만 가능한 반면, 판독은 마스터와 슬레이브 중 어느 하나에 의해 수행될 수 있다. 일 실시예에 따라, 멀티플렉서들(560 및 570)은 예를 들어 실제 메일박스 업데이트가 반 사이클만큼 지연되기 때문에, 판독이 즉시 이어지는 송신기 기록을 지원하고 그리고 실제 메일박스 레지스터를 수신기에 대한 판독 소스로서 선택하도록 구현될 수 있다.
일 실시예에 따르면, 송신기에서는, 메일박스가 기록된 후 판독의 1 사이클 내에서 판독되면, 하드웨어는 pipelined_wren를 어서트하고 상기 판독은 방금 기록된 버퍼 레지스터(510 또는 520)에서 비롯된다. 메일박스가 기록된 후 1 사이클 후에 임의의 포인트에서 메일박스가 판독되면, pipeline_wren = 0이고 상기 판독은 실제의 메일박스 레지스터로부터 얻어진다. 그러나, 실제 메일박스는 항상 메일박스 버퍼(510 또는 520)를 이용하여 업데이트된다. 송신 버퍼가 판독되는 다른 구현들이 가능하다. 수신기에서는, 결코 기록되지 않는 MBOX 버퍼(510/520)는 명백히 판독되지 않으므로, 신호 pipelined_wren = 0이고 실제 메일박스가 선택된다.
일 실시예에 따르면, 16개의 MSI 메일박스 데이터 레지스터들(MSIxMBXDn)(여기서 0 <= n <= 15) 각각은 그들의 데이터 방향 이외에는 동일하다. 상기 배열은 일부 실시예들에 따라 8개의 데이터 흐름 제어 프로토콜 하드웨어 블록들을 포함할 수 있으며, 각각의 블록은 임의의 데이터 레지스터에 할당되어 메일박스를 형성할 수 있다.
다음은 통신 인터페이스의 예시적인 실시예를 보다 상세하게 설명한다. 모든 메일박스(MSIxMBXDn) 데이터 레지스터들은 단방향이므로 레지스터 콘텐츠는 마스터 및 슬레이브 포트들 둘 다로부터 결코 판독/기록되지 않는다. 각 MSIxMBXDn 레지스터는 선택된 채널 데이터 방향에 따라, (송신기로서의) 마스터로부터 판독/기록되고 (수신기로서의) 슬레이브로부터만 판독되거나 또는 (송신기로서의) 슬레이브로부터 판독/기록되고 (수신기로서의) 마스터로부터만 판독된다. 이 접근법은 데이터 기록 충돌들을 피하고 설계를 단순화하기 위한 것이다.
각각의 메일박스 데이터 레지스터는 (마스터 관점에서) 판독 채널과 기록 채널 중 어느 하나가 되도록 구성되는 퓨즈일 수 있다. 메일박스[n]에 대해:
ㆍcfg_mbox_master_data_rd[n] = 0: 데이터 레지스터는 마스터 데이터 기록 채널로서 구성된다.
ㆍcfg_mbox_master_data_rd[n] = 1: 데이터 레지스터는 마스터 데이터 판독 채널로서 구성된다.
이 개념은 (구조를 복잡하게 하는) 모든 레지스터들을 양방향으로 만드는 대신 적절한 유연성을 제공하는 것이다. 이러한 접근 방식의 가장 큰 단점은 각 레지스터의 데이터 방향이 런 타임에서 고정된다는 것이다.
자동화된 데이터 흐름 제어 메카니즘은 다양한 실시예들에 따라 메일박스들을 통한 데이터의 흐름을 제어하도록 지원된다.
8개의 데이터 흐름 핸드셰이크 프로토콜 하드웨어 블록 각각은 MSIxMBXS 레지스터들에 위치한 두 개의 데이터 준비 상태 플래그들(DTRDY_α, 여기서 α는 A, B, C, D, E, F, G 또는 H)을 제어한다. 하나의 플래그는 데이터 송신기 용이며 인터페이스의 송신측의 MSIxMBXS 레지스터에 위치한다. 다른 하나는 데이터 수신기 용이며 인터페이스의 수신측의 MSIxMBXS 레지스터에 위치한다.
데이터 송신기는 항상 전송 개시자(initiator)로 가정되므로, 데이터 수신기로부터의 하드웨어 데이터 요청이 필요하지 않다. 애플리케이션에서 전송을 개시하기 위해 데이터 요청이 필요한 경우에 애플리케이션은 소프트웨어를 통해 처리되어야 한다. 수신 프로세서 소프트웨어는 송신 프로세서에 데이터가 필요함을 표시해야 할 것이다. 이것은 인터럽트를 통해 또는 메일박스 기반의 소프트웨어 명령 프로토콜을 통해 달성될 수 있다.
핸드셰이크 프로토콜 하드웨어 블록들 각각은 그것과 관련된 퓨즈 인에이블(cfg_mbox_handshake_enable_n[7:0])을 갖는다. 해당 핸드셰이크 프로토콜 하드웨어 블록을 인에이블하기 위해서는 퓨즈를 프로그래밍해야 한다. 퓨즈(cfg_mbox_handshake_enable_n[0])는 핸드셰이크 프로토콜 하드웨어 블록 A에 해당하고, cfg_mbox_handshake_enable_n[1]은 핸드셰이크 프로토콜 하드웨어 블록 B 등에 해당한다.
8개의 프로토콜 블록들의 각각은 cfg_mbox_handshake_register_select[31:0] 내의 8개의 4-비트 필드들에 의해 특정 MSI 메일박스 데이터 레지스터에 할당된다. 선택된 MSI 메일박스 레지스터는 메일박스 프로토콜 데이터 레지스터로 불린다. 할당되지 않은 메일박스 레지스터들은 메일박스 데이터 레지스터들로 불린다. 프로토콜 데이터 레지스터는 단일 메일박스이거나, 또는 소프트웨어를 통해 버퍼로서 정의된 한 세트의 메일박스 레지스터들 내의 하나의 메일박스 레지스터일 수 있다. 메일박스들이 버퍼로서 정의될 때, 일부 실시예들에 따라 마지막 버퍼 액세스는 프로토콜 데이터 레지스터에 있어야 한다. 유사하게, 수신 프로세서가 데이터가 준비된 것을 보고 메일박스에 액세스할 때에는, 마지막 버퍼 액세스도 또한 프로토콜 데이터 레지스터에 있어야 한다.
어느 프로세서도 메일박스에 액세스하지 않을 때에는, 데이터 흐름 제어 하드웨어가 유휴 상태(MSIxMBXS.DTRDY_α = 0)에 있다. 송신 프로세서는 이제 데이터 전송 데이터 흐름 제어를 시작하기 위해 메일박스에 액세스할 수 있다. 데이터 흐름 제어는 이하에 기술된 바와 같이 동작하며, 여기서 MSIxMBXDn은 프로토콜 하드웨어 블록 α에 할당된다고 가정된다(즉, MSIxMBXDn은 프로토콜 데이터 레지스터이다):
1. 송신 프로세서:
a) 마지막 데이터 워드를 제외하고 모두 기록(버퍼인 경우)
b) Din → MSIxMBXDn (마지막 데이터 기록하; 1 → DTRDY_α (자동); 수신기에 Ready To Read 인터럽트 송신 (자동)
2. 수신 프로세서:
Ready To Read 인터럽트1 수신
a) 마지막 데이터 워드를 제외한 모두 판독(버퍼인 경우)
b) MSIxMBXDn_α Dout (마지막 데이터 판독); 0 → DTRDY_α (자동); 송신기에 Ready To Write 인터럽트 송신 (자동)
3. 송신 프로세서:
Ready To Read 인터럽트 수신
a) 0 → DTRDY_α (자동2)
b) [1]로 돌아가서 필요에 따라 반복.
단계 3a 후에, 데이터 흐름 제어는 완료되고, 송신 프로세서는 종료되거나 또는 더 많은 데이터를 송신하도록 진행될 수 있다(즉, 단계 1로 되돌아 간다). 프로토콜 시퀀스 다이어그램은 도 6에 도시되어 있다. 위에서 언급한 것처럼, MSIxMBXDn 레지스터로의 송신기 기록에 의해 DTRDY_α 플래그를 설정하면, 해당 메일박스로부터 수신기 데이터 흐름 제어 프로토콜 인터럽트(Ready To Read)가 발생할 것이다.
유사하게, MSIxMBXDn 레지스터의 수신기 판독에 의해 DTRDY_α 플래그를 소거하면, 해당 메일박스로부터 데이터 송신기 데이터 흐름 제어 프로토콜 인터럽트(Ready To Write)가 발생할 것이다. 데이터 흐름 제어가 올바르게 작동하기 위해서, 송신 프로세서는 그것이 DTRDY_α = 0을 관측할 때까지 새로운 데이터를 메일박스 채널로 송신하면 안된다. 유사하게, 수신 프로세서는 메일박스로부터 데이터를 판독하기 전에 DTRDY_α = 1이 될 때까지 대기해야 한다(또는 그것은 이전 데이터를 판독할 수 있다).
인터럽트들을 사용하는 것이 메일박스 데이터 흐름 제어 프로토콜을 관리하는 주된 방법인 것으로 의도되기는 하지만, 소프트웨어를 사용하여 상태 비트들을 폴링(polling)하는 것도 가능하다. 메일박스를 통해 송신된 데이터가 주기적 제어 프로세스 내에서 사용되어야 하는 애플리케이션에서는, 메일박스 데이터 흐름 제어 상태 플래그의 소프트웨어 폴링이 바람직한 접근 방법일 수 있다. 송신 및 수신 프로세서 폴링 소프트웨어는 데이터 흐름 제어의 상태를 결정하기 위해 그것들 각각의 DTRDY_α 플래그를 테스트해야 한다. 송신 및 수신 프로세서들의 관점에서 데이터 흐름 제어 상태 비트들의 의미는 다음과 같다:
ㆍ송신 프로세서:
- DTRDY_α = 0 : 데이터를 송신할 준비가 되어있다(메일박스가 비어 있거나 데이터가 오래됨(stale))
- DTRDY_α = 1 : 데이터를 송신할 준비가 되지 않았다(아직 판독되지 않은 메일박스)
ㆍ수신 프로세서:
- DTRDY_α = 0 : 데이터를 수신할 준비가 되어있다(메일박스가 비어 있거나 데이터가 오래됨)
- DTRDY_α = 1 : 판독할 수 있는 데이터(그러나 아직 판독되지는 않음)
MSIxMBXDn 레지스터들은 POR/BOR 이외의 임의의 디바이스 리셋의 영향을 받지 않으므로, 데이터는 수신기 소프트웨어가 그것을 사용할 수 있도록 보존된다. 수신기 판독이 이미 진행 중인 경우에(즉, 인터럽트 트리거되거나, 또는 DTRDY_α가 폴링되고 설정된 것으로 확인되는 경우에), 리셋 값 대신에 유효한 (오래된 경우의) 데이터를 리턴하는 것이 바람직하다는 가정이 있다. 그러나, 모든 DTRDY_α 흐름 제어 비트들(마스터 및 슬레이브 둘 다)은 마스터(upbm_reset_n) 리셋의 영향을 받는다. 이것은 리셋 종료시 데이터 흐름 프로토콜 블록들을 초기화하는데 필요하다. 마스터가 리셋을 겪으면, 프로토콜 데이터 흐름 제어 MSIxMBXS.DTRDY_α 플래그들의 마스터 및 슬레이브 뷰들(views) 둘 다가 리셋될 것이다. 슬레이브가 마스터 리셋 이벤트의 경우에 계속 실행되도록 슬레이브 리셋이 마스터로부터 분리된다고 가정하면(퓨즈 MSRE = 0), MSIxMBXDn 레지스터로의 마스터 (송신기) 기록 후 즉시 마스터 리셋이 이어질 경우, 슬레이브 (수신기) 쪽 인터럽트 요청은 발생하지 않을 것이다.
슬레이브가 리셋을 겪으면, DTRDY_α 흐름 제어 비트들의 마스터 뷰와 슬레이브 뷰 어느 것도 리셋되지 않을 것이다. MSIxMBXDn 레지스터로의 슬레이브 (송신기) 기록 후 즉시 슬레이브 리셋이 이어지면, 마스터 (수신기) 측 인터럽트 요청이 여전히 정상적으로 발생할 것이다. 마스터 리셋으로 마스터와 슬레이브 DTRDY_α 흐름 제어 비트들 둘 다의 리셋이 또한 가능한 데이터 충돌 조건을 피하기 위해 필요하다. 마스터 및 슬레이브 리셋들이 결합되지 않고(퓨즈 MSRE = 0) 슬레이브 리셋이 슬레이브를 디스에이블하지 않을 때(퓨즈 SSRE = 0)의 슬레이브 MSIxMBXS.DTRDY_α 플래그의 경우에, 슬레이브 DTRDY_α 플래그가 슬레이브 리셋에 의해 리셋되어야 한다면, 가능한 데이터 충돌 조건이 발생할 수 있다.
슬레이브 DTRDY_α 플래그가 슬레이브 리셋에서 리셋되어야 한다면, 마스터가 리셋되어 슬레이브의 플래그가 아닌 DTRDY_α 플래그의 마스터 뷰를 리셋할 수 있다. 이로 인해, (여전히 실행중인) 슬레이브가 슬레이브 DTRDY_α 플래그를 서비스하고 해당 메일박스를 판독할 기회를 가지는 상태가 될 것이며, 그것은 아마도 마스터가 그것에 기록하는 동안이다(마스터 DTRDY_α = 0이기 때문에 그것이 비어 있다고 가정).
수신기에 의한 MSIxMBXDn 레지스터로부터의 판독은 수신기 DTRDY_α = 1이면 단지 데이터 흐름 제어 프로토콜 인터럽트(Ready To Write)를 생성할 것이다. (메일박스로부터 새로운 데이터를 처음 판독한 후의 경우가 될) 수신기 DTRDY_α = 0이면, 수신기에 의한 메일박스의 후속 판독은 (타겟 메일박스의 데이터 콘텐츠를 반환하는 것 외에는) 아무런 영향을 미치지 않을 것이다.
이로 인해 메일박스는 그것을 통해 이동된 마지막 데이터 값의 임시 저장을 위해 수신기에 의해 사용될 수 있다. 그러나 데이터가 메일박스로부터 판독된 후에는, 그것의 콘텐츠가 오래되어서 송신기에 의해 (언제든지) 영향을 받을 수 있다고 고려되어야 한다. 결과적으로, 메일박스 임시 저장을 성공적으로 관리하기 위해, 데이터 수신기는 데이터 송신기가 새로운 데이터로 메일박스의 콘텐츠를 임의로 덮어 쓰지 못하게 하도록 소프트웨어 데이터 전송 프로토콜이 제 위치에 있다고 가정된다. 예를 들어, 수신기가 (또 하나의 메일박스 또는 인터럽트를 통해) 송신기로부터 데이터를 요청해야 한다면, 송신기는 메일박스를 덮어 쓰지 않을 것이다.
임의의 SFR의 경우와 마찬가지로, MSIxMBXDn 레지스터들은 바이트 또는 워드 둘 다로 액세스할 수 있다. 데이터 버퍼들을 사용할 때 바이트 및 워드 크기의 데이터 트랜잭션들을 둘 다 지원하기 위해서는, 송신기 프로토콜 레지스터의 MS 바이트와 워드 기록 중 어느 하나가 해당 DTRDY_α 플래그를 설정할 것이다. 유사하게, (MSI의 다른 쪽에 있는) 수신기 프로토콜 데이터 레지스터의 MS 바이트와 워드 판독 중 어느 하나는 해당 DTRDY_α 플래그를 설정할 것이다.
메일박스 데이터 레지스터들은 디바이스에서 사용 가능한 경우에 DMA를 사용하여 MSI의 마스터 또는 슬레이브 측에서 액세스될 수 있다. 메일박스 데이터 흐름 제어 프로토콜은 DMA 동작과 호환되는 인터럽트들을 생성하여, CPU 개입 없이 개별 메일박스 레지스터들 내의 데이터를 전송할 수 있게 할 것이다. 마스터 및/또는 슬레이브 서브-시스템들이 유휴 모드로 동작할 때에는 메일박스들의 DMA 액세스가 또한 지원된다.
제 1 DMA 데이터 값(또는 블록)이 전송되기 위해서는, 할당된 송신기 DMA 채널이 소프트웨어에 의해 트리거되거나, 또는 소프트웨어로 제 1 데이터 값(또는 데이터의 블록)을 수동으로 기록함으로써 트리거될 수 있다. DMA가 메일박스 프로토콜 데이터 레지스터에 기록(블록 전송의 경우에는 마지막 기록)할 때, 해당 DTRDY_α 플래그가 설정될 것이다. 송신기 DTRDY_α 플래그를 설정하면, 인터페이스의 수신측에서 Ready to Read 인터럽트가 생성될 것이다. 수신기 Ready to Read 인터럽트(메일박스 프로토콜 데이터 레지스터가 송신기에 의해 기록된 후 개시되어 DTRDY_α = 1을 설정함)는 해당 수신기 DMA 채널을 트리거하고, 그것이 타겟 메일박스(또는 블록 전송의 경우의 메일박스들)를 판독하게 할 것이다. 그렇게 하면 그것은 해당 DTRDY_α 플래그를 소거할 것이다. 수신기 DTRDY_α 플래그를 소거하면, 인터페이스의 송신기 측에 송신기 Ready to Write 인터럽트가 생성될 것이다. 이것은 할당된 송신기 DMA 채널을 트리거하여 다음 데이터 값(또는 데이터의 블록)을 기록하고 DTRDY_α 플래그를 자동 설정하여, 시퀀스를 다시 시작할 것이다.
메일박스들은 관련없는 클럭 속도들로 동작하는 프로세서들 간에 데이터 전달자로서 동작하기 때문에, 모든 데이터와 제어 신호들은 클록 경계를 넘어 이동할 때 동기화되어야 한다. 이렇게 하면 데이터가 기록된 시점과 데이터가 수신될 수 있게 되는 시점 사이의 지연이 발생한다. 이것은 메일박스 채널 대기시간이라고 불린다.
동기화 지연은 MSIxMBXDn의 송신기 기록으로부터 해당 수신기 인터럽트 요청의 리딩 에지(leading edge)까지의 1 송신기 클록 + 2 수신기 클록들이다. 데이터는 수신기 인터럽트 요청의 어서트 이전에 수신기에 의해 판독될 수 있게 될 것이다. 수신기 DTRDY_α 플래그를 폴링하는 애플리케이션의 경우에, 지연은 MSIxMBXDn의 송신기 기록으로부터 수신기 DTRDY_α 플래그 업데이트까지의 1 송신기 클록 + 3 수신기 클록들이다.
유사하게, MSIxMBXDn의 수신기 판독으로부터 해당 송신기 인터럽트 요청의 리딩 에지까지의 지연은 1 수신기 클록(수신기 DTRDY_α 플래그를 업데이트) + 2 송신기 클록들일 것이다. 송신기 DTRDY_α 플래그를 폴링하는 애플리케이션의 경우에, 지연은 MSIxMBXDn의 수신기 판독으로부터 해당 송신기 인터럽트 요청의 리딩 에지까지의 1 송신기 클록 + 3 수신기 클록들이다.
프로토콜 핸드셰이크는 완전히 자동이므로, 지나친 데이터 전송 대기 시간(over data transfer latency)에 영향을 미치는 모든 다른 지연들은 소프트웨어 폴링, 인터럽트 또는 DMA 전송 대기 시간의 함수일 것이다.
예를 들어, 도 6을 보면, (컨텍스트 스위칭이 인에이블된) 인터럽트들이 메일박스로부터/메일박스로 데이터를 판독/기록하는데 사용됨을 가정하고, 메일박스에 데이터를 기록하는데 걸리는 시간을 제외하면, 메일박스 채널 대기 시간은 송신기 기록 사이클의 끝으로부터 제 1 수신기 ISR 명령까지의 1 (동기화) 송신기 클록 + 2 (동기화) + 5 (예외 처리) 수신기 클록들일 것이다.
시스템이 DMA 채널을 사용하여 데이터를 이동시키면, 메일박스 채널 대기 시간은 DMA 전송 대기 시간(3 사이클)과 앞서 설명한 동기화 대기 시간으로 이루어진다. 즉, DMA 채널이 송신기와 수신기 둘 다의 메일박스에 할당된다고 가정하면, 송신기와 수신기 DMA 버퍼들 간에 데이터의 워드를 이동시키기 위한 메일박스 채널 대기 시간은 (버스 조정 지연이 발생하지 않는다고 가정하면) 수신기 DMA 채널 요청까지의 3 (DMA 전송) + 1 (동기화) 송신기 클록 + 2 (동기화) 수신기 클록들일 것이다. 데이터는 3 수신기 클록들 후에 수신기 버퍼에 도착할 것이다. 그러나 DMA는, 리턴 신호를 트리거하여 송신기 DTRDY_α 플래그를 소거하고 또 하나의 전송을 시작할 전송의 첫 번째 사이클 동안에 MSIxMBXDn을 판독할 것이다. 따라서 리턴 대기 시간은 다음 송신기 DMA 채널 요청까지 1 (DMA 판독) + 1 (동기화) 수신기 클록 + 2 (동기화) 송신기 클록들일 것이다. 따라서 전송된 워드 당 총 라운드 경로 지연은 6 송신기 클록들 + 4 수신기 클록들이다.
제안된 실시예들은 퓨즈를 통해 데이터 채널의 데이터 흐름 방향을 선택하고 잠글 수 있는 기능, 몇몇 데이터 채널 흐름 제어 (핸드셰이크) 로직 블록들 중 하나를 임의의 메일박스에 할당하는 기능, 및 로직 중복을 피하면서 비동기 클록 도메인들 간에 구현-친화적인 양방향 데이터 채널을 생성하는 기능을 제공한다.
도 7은 추가적인 선택적 FIFO 데이터 파이프들을 도시한다. 듀얼 또는 멀티-코어 마이크로컨트롤러의 일 실시예는 도 7에 도시된 바와 같은 2개의 FIFO들(710, 720)의 세트를 포함할 수도 있고, 하나의 FIFO는 슬레이브로부터의 데이터 판독을 위한 것이고, 다른 하나는 슬레이브로의 데이터 기록을 위한 것이다. 각 FIFO의 존재와 깊이는 파라미터들을 통해 결정된다. FIFO들은 마스터와 슬레이브 프로세서들 간의 데이터 대기열(queues)을 조정하는데 사용된다. 각각의 FIFO 채널 데이터 흐름은 구조 및 동작을 단순화하기 위해 단방향이다; 하나의 FIFO는 전용 판독 데이터 채널이고, 다른 하나는 전용 기록 데이터 채널이다. 고유한 동기화 지연들에도 불구하고, FIFO 설계는 데이터 예약이 필요하지 않도록 하기 위함이다(데이터 예약은 전형적으로 동기화 지연들 또는 동작 속도 차이들의 결과로서의 느린 점유 계산으로 인한 기록 오버런(overrun)들을 수용하기 위해 추가된다.)
FIFO가 비어 있지 않으면(또는 에러 조건을 만나면), 마스터와 슬레이브는 동시에 FIFO에 액세스할 수 있다. 따라서 FIFO는 하나의 프로세서에 의해 판독되기 전에 다른 프로세서에 의해 로딩되어야 하는 메일박스 기반 데이터 파이프보다 우수한 처리량을 제공할 수 있다.
그러나 FIFO 콘텐츠는 순서대로 로딩 및 언로딩되며, 메일박스 데이터 파이프 내의 데이터와 마찬가지로 임의로 액세스될 수 없다. FIFO도 (정의에 따라) 단방향이다. 이로 인해 FIFO는 프로세서들 간에 데이터의 블록들을 전송하기 위한 가장 빠른 수단을 필요로 하는 애플리케이션들에 더 적합하게 된다.
듀얼 또는 멀티-코어 마이크로컨트롤러의 실시예는 또한, 예를 들어 파라미터 MSI_FIFO_PRESENT = 1이면 2 채널 FIFO를 포함할 수 있다. FIFO들은 마스터와 슬레이브 프로세서들 간의 데이터 대기열(queues)을 조정하는데 사용된다. FIFO가 비어 있지 않으면(또는 에러 조건을 만나면), 마스터와 슬레이브는 동시에 FIFO에 액세스할 수 있다. 따라서 FIFO는 하나의 프로세서에 의해 판독되기 전에 다른 프로세서에 의해 로딩되어야 하는 메일박스 기반 데이터 파이프보다 우수한 처리량을 제공할 수 있다. 각각의 FIFO 채널 데이터 흐름은 설계 및 동작을 단순화하기 위해 단방향이다; 도 7에 도시된 바와 같이, 하나의 채널은 전용 판독 데이터 채널이고, 다른 하나는 전용 기록 데이터 채널이다. 일관성을 위해, FIFO들은 항상 마스터 프로세서가 FIFO들을 보는 방법과 관련하여 참조된다.
또한, FIFO 데이터 레지스터들은 레지스터 명칭 내에(within) 어떠한 관련 방향도 갖지 않는다. 그러나 마스터가 이러한 레지스터들을 보는 방식에 근거하여, 마스터 WFDATA 레지스터는 기록 FIFO 데이터 기록 (입력) 레지스터가 될 것이며, 슬레이브 WFDATA 레지스터는 기록 FIFO 데이터 판독 레지스터가 될 것이다. 유사하게, 마스터 RFDATA 레지스터는 판독 FIFO 데이터 판독 (출력) 레지스터가 될 것이고, 슬레이브 RFDATA 레지스터는 판독 FIFO 데이터 기록 레지스터가 될 것이다. 다음 섹션들에서, 데이터 송신기는 FIFO에 데이터를 기록하는 프로세서이다. 반대로, 데이터 수신기는 FIFO로부터 데이터를 판독하는 프로세서이다.
FIFO는 해당 인에이블 제어 비트가 소거될 때마다(기록 FIFO에서는 MSIxFIFOCS.WFEN, 그리고 판독 FIFO에서는 MSIxFIFOCS.RFEN) 디스에이블될 것이다. FIFO 인에이블 제어 비트들은 디바이스 리셋 동안에 소거된다. 정상 동작 조건들에서 FIFO들은 인에이블된 상태로 유지될 것이다. 그러나, FIFO 에러의 경우, 또는 슬레이브 프로세서가 리셋되면(또는 응답을 멈추고 리셋되어야 하면), MSIxFIFOCS.WFEN 및 MSIxFIFOCS.RFEN 제어 비트들은 필요에 따라 FIFO들을 플러시(flush)하고 재초기화하는데 사용될 수 있다. 디스에이블되면 FIFO 콘텐츠는 지워지고(로직 '0'으로 리셋됨), 어드레스 포인터들은 FIFO 빈 상태로 초기화되며, 여기서 포인터들 둘 다는 서로 동일하게 설정된다(이 경우에 모두 0임). FIFO 빈 상태 비트가 또한 설정된다(기록 FIFO에서는 MSIxFIFOCS.WFEMPTY, 그리고 판독 FIFO에서는 MSIxFIFOCS.RFEMPTY). FIFO가 인에이블된 후, 빈 상태 비트는 첫 번째 데이터 값이 FIFO에 기록될 때까지 설정된 상태로 유지될 것이다.
마스터로부터 슬레이브 프로세서로 전달될 데이터는 마스터 프로세서에 의해 기록 FIFO 데이터 기록 레지스터(마스터 MSIxWFDATA[15:0])에 기록된다. 그러면 슬레이브는 기록 FIFO 데이터 판독 레지스터(슬레이브 MSIxWFDATA)로부터 데이터를 판독할 수 있다. 슬레이브로부터 마스터 프로세서로 전달될 데이터는 슬레이브 프로세서에 의해 판독 FIFO 데이터 기록 레지스터(MSIxRFDATA[15:0])에 기록된다. 그런 다음 마스터는 판독 FIFO 데이터 판독 레지스터(MSIxRFDATA)로부터 데이터를 판독할 수 있다.
각각의 데이터 레지스터 액세스가 데이터 채널 FIFO 어드레스 포인터들을 변경하기 때문에, 데이터는 단일 엔티티(즉, 워드 또는 바이트)로서 기록되고 판독되어야 한다. FIFO 데이터 기록 레지스터들(마스터 MSIxWFDATA[15:0] 및 슬레이브 MSIxRFDATA[15:0])은 기록 전용 레지스터들이다. 이러한 레지스터들을 판독하는 것은 모든 0들을 반환하고 FIFO 어드레스 포인터들에는 영향을 미치지 않을 것이다. FIFO 데이터 판독 레지스터들(마스터 MSIxRFDATA[15:0] 및 슬레이브 MSIxWFDATA[15:0])은 판독 전용이다. 이 레지스터들로의 기록은 아무 효과가 없을 것이다. 데이터 송신기가 FIFO 데이터 기록 레지스터(기록 FIFO에서는 MSIxWFDATA, 그리고 판독 FIFO에서는 MSIx-RFDATA)에 기록할 때에는, 데이터가 FIFO 내의 다음 빈(free) 위치에 기록된다. FIFO에 기록된 마지막 데이터는 레지스터에 보관되고, 다음 시스템 클록 에지에서 FIFO FSM에 의해 FIFO 메모리에 로드된다. 이 레지스터의 판독은 모든 0들을 반환할 것이다. 이 레지스터는 (FIFO의 판독 측에 있는) 데이터 수신기 프로세서에서 볼 수 없다.
어드레스된 FIFO 위치가 로딩될 때, 기록 어드레스 포인터는 순환 버퍼 내의 다음의 빈 위치를 가리키도록 조정된다. 남아있는 빈 위치들이 없으면, FIFO 풀(full) 상태 비트가 설정된다(기록 FIFO에서는 MSIxFIFOCS.WFFULL, 그리고 판독 FIFO에서는 MSIx-FIFOCS.RFFULL).
데이터 수신기 프로세서가 FIFO 데이터 판독 레지스터(기록 FIFO에서는 MSIxWFDATA, 그리고 판독 FIFO에서는 MSIxRFDATA)를 판독할 때에는 데이터가 FIFO로부터 판독된다. 판독 사이클은 판독 포인터에 의해 어드레스된 FIFO 메모리 위치로부터의 데이터에 액세스할 것이다.
이 레지스터는 기록이 가능하지 않으며, 또한 그것은 (FIFO의 기록 측에 있는) 데이터 송신기 프로세서에서도 볼 수 없다. 어드레스된 FIFO 위치가 판독된 후에, 판독 어드레스 포인터는 순환 버퍼 내의 다음 유효한 데이터 위치를 가리키도록 조정된다. 판독될 나머지 위치가 없으면, FIFO 빈 상태 비트가 설정된다(기록 FIFO에서는 MSIxFIFOCS.WFEMPTY, 그리고 판독 FIFO에서는 MSIxFIFOCS.RFEMPTY).
FIFO들은 다양한 방법으로 사용될 수 있다. 데이터는 프로세서에 요청되거나 푸시될 수 있다. 데이터 승인은 암시적(implied)이거나, (빈 상태 비트 상태 또는 관련 인터럽트를 사용하여) 직접적이거나, 또는 (프로세서 대 프로세서 인터럽트를 사용하여) 간접적일 수 있다.
예를 들면, 일 실시예에 따르면, FIFO 빈 상태 비트들은 데이터 송신기 프로세서에 대한 인터럽트를 생성하는데 사용된다. FIFO 인터럽트 트리거 선택 비트들(RFITSEL[1:0] 및 WFITSEL[1:0])은 수신 프로세서에 대한 데이터 유효 인터럽트를 생성할 시기를 결정하기 위해 FIFO 어드레스 포인터들과 함께 사용된다. 이러한 인터럽트들은 데이터 전송 프로토콜의 일부로서 사용되기 위한 것이다. 그러나, 애플리케이션에서 필요하지 않은 경우에, 그것들은 인터럽트 컨트롤러 매크로 내에서 디스에이블될 수 있다.
일 실시예에 따르면, FIFO가 비어있는 것으로 간주 될 때, FIFO 빈 상태 플래그가 설정되고 FIFO 빈 인터럽트가 데이터 송신기 프로세서에 대해 생성된다. 인터럽트는 빈 상태 플래그(기록 FIFO에서는 MSIxFIFOCS.WFEMPTY, 그리고 판독 FIFO에서는 MSIxFIFOCS.RFEMPTY)의 로직 0에서 로직 1로의 천이시 생성될 수 있다. FIFO에 데이터를 쓰면 빈 상태 플래그가 소거되고 데이터 유효 인터럽트가 수신기로 전송될 것이다.
송신기 프로세서가 FIFO에 기록할 때, 데이터 유효 인터럽트 펄스는 도 8에서 일반화된 바와 같이, FIFO 포인터들의 콘텐츠와 관련하여 FIFO 인터럽트 트리거 선택 비트들(판독 및 기록 FIFO들에 대해 각각 RFITSEL[1:0] 및 WFITSEL[1:0])의 상태에 따라 생성될 수 있다.
이전에 비어있는 FIFO에 데이터가 기록될 때, 빈 상태 플래그(기록 FIFO에서는 MSIxFIFOCS.WFEMPTY, 그리고 판독 FIFO에서는 MSIxFIFOCS.RFEMPTY)는 소거되고 그리고 FIFO가 다시 비게 될 때까지 소거된 채로 유지된다. 인터럽트는 빈 상태 플래그의 로직 1에서 로직 0으로의 천이시 생성된다.
데이터 기록으로 인해, FIFO가 FIFO 인터럽트 트리거 선택 비트들에 의해 정의된 임계값을 충족시키는 결과가 될 때, 임계값을 만족시키는 FIFO 기록 시에 데이터 유효 인터럽트가 생성된다(즉, 다음 FIFO 어드레스에는 기록하지 않음). 데이터 기록으로 인해 FIFO가 가득차는 결과가 될 때, 전체 상태 플래그(기록 FIFO에서는 MSIxFIFOCS.WFFULL, 그리고 판독 FIFO에서는 MSIx-FIFOCS.RFFULL)도 또한 설정될 것이고, 그리고 FIFO가 더 이상 가득 차 있지 않을 때까지 설정된 상태를 유지할 것이다.
FIFO 전체 상태 비트가 설정된 후(기록 FIFO에서는 MSIxFIFOCS.WFFULL, 판독 FIFO에서는 MSIxFIFOCS.RFFULL), FIFO 점유 로직은 오버플로 조건을 감지하고 오버플로 상태 플래그(기록 FIFO에서는 MSIxFIFOCS.WFOF, 판독 FIFO에서는 MSIxFIFOCS.RFOF)를 설정할 것이다. 데이터 기록은 무시될 것이고, FIFO 기록 포인터는 수정되지 않음으로써 FIFO의 콘텐츠를 유지할 것임에 유의해야 한다.
유사하게, FIFO 빈 상태 비트(기록 FIFO에서는 MSIxFIFOCS.WFEMPTY, 판독 FIFO에서는 MSIxFIFOCS.RFEMPTY)가 설정된 후 데이터 수신기가 FIFO로부터 데이터를 판독하려고 시도하는 경우에, FIFO 점유 로직은 언더플로우 조건을 감지하고 언더플로우 상태 플래그(기록 FIFO에서는 MSIxFIFOCS.WFUF, 판독 FIFO에서는 MSIxFIFOCS.RFUF)를 설정할 것이다. FIFO 판독 포인터는 판독 전에 조정되지 않으므로써(전형적일 수 있음), 결과적으로 가장 최근에 판독된 FIFO 어드레스를 다시 판독할 것임에 유의해야 한다.
마스터 및 슬레이브 프로세서들은 서로 직접 인터럽트할 수 있다. 마스터는 MSIx-CON.MTSIRQ 제어 비트를 어서트함으로써 슬레이브에 인터럽트 요청을 발행할 수 있다. 유사하게, 슬레이브는 MSIxCON.STMIRQ 제어 비트를 어서트함으로써 인터럽트 요청을 마스터에 발행할 수 있다.
인터럽트들은 인터럽트 승인 제어 비트들(마스터에서 슬레이브 인터럽트 요청의 경우 MSIxCON.MTSIACK, 슬레이브에서 마스터 인터럽트 요청의 경우 MSIxCON.STMIACK)을 사용하여 승인(acknowledge)된다.
모든 마스터/슬레이브 인터럽트 제어/상태 비트들은 어느 프로세서에 의해서도 판독될 수 있다. 인터럽트 요청 비트들은 요청 프로세서에 의한 판독/기록이며, 인터럽트 승인 비트들은 MSIxCON 제어 레지스터를 통해 인터럽트된 프로세서에 의한 판독/기록이다. 인터럽트 요청 비트들은 인터럽트된 프로세서에 의해서만 판독되며, 인터럽트 승인 비트들은 MSIxSTAT 상태 레지스터를 통해 요청 프로세서에 의해서만 판독된다.
일 실시예에 따르면, 마스터가 MSIxCON.MTSIRQ 비트를 어서트할 때, 마스터는 슬레이브 클록과 동기화되어 슬레이브 인터럽트가 된다. 슬레이브 관점에서, MTSIRQ 비트는 MSIx-STAT.MTSIRQ에서의 판독 전용 상태 비트이다. 슬레이브는 인터럽트를 서비스할 때 핸들러 내의 어느 포인트에서 MSIxCON.MTSIACK 비트를 설정하여 인터럽트를 승인해야 한다. 마스터 클록 도메인으로 동기화한 후에, 마스터는 MSIxSTAT.MTSIACK = 1을 관측할 것이고, 이어서 MSIxCON.MTSIRQ 비트(의 그것의 뷰(view))를 소거함으로써 요청을 철회(rescind)할 것이다. 핸드셰이크는 MSIxSTAT.MTSIRQ = 0을 관측할 때 슬레이브에 의해 완료된다. 이 시점에서 슬레이브는 MSIxCON.MTSIACK을 소거하여 승인을 철회하고, 그리고 나서 인터럽트 핸들러는 종료될 수 있다.
슬레이브가 MSIxCON.STMIRQ 비트를 어서트할 때, 슬레이브는 마스터 클록과 동기화되어 마스터 인터럽트가 된다. 마스터 관점에서, STMIRQ 비트는 MSIxSTAT.MTSIRQ에서의 판독 전용 비트이다. 마스터는 인터럽트의 서비스가 완료될 때 핸들러의 끝에서 MSIxCON.STMIACK 비트를 설정하여 인터럽트를 승인해야 한다. 슬레이브 클록 도메인으로 동기화한 후에, 슬레이브는 MSIxSTAT.STMIACK = 1을 관측한 다음 MSIxCON.STMIRQ 비트(의 그것의 뷰)를 소거하고 요청을 철회할 것이다. 핸드셰이크는 MSIxSTAT.STMIRQ = 0을 관측할 때 마스터에 의해 완료된다. 그 시점에서 마스터는 MSIxCON.STMIACK을 소거하여 승인을 철회하고, 그리고 인터럽트 핸들러를 소거한다.
도 9는 상술한 바와 같은 메일박스 시스템과 도 1 및 도 2의 통신 인터페이스(130) 내의 FIFO 시스템의 조합을 도시한다. 전술한 바와 같이, 일 실시예에 따르면, FIFO는 디폴트에 의해 디스에이블될 수 있고, 단지 메일박스들만이 활성화될 수 있고, 사용자는 예를 들어 연관된 제어 레지스터에 비트를 설정함으로써 FIFO를 인에이블하도록 디바이스를 프로그램할 수 있다.

Claims (26)

  1. 마스터 코어와 슬레이브 코어를 포함하는 단일 칩 마이크로컨트롤러로서,
    상기 마스터 코어는 마스터 시스템 클록에 의해 클록킹되고, 상기 슬레이브 코어는 슬레이브 시스템 클록에 의해 클록킹되고, 각각의 코어는 마스터 마이크로컨트롤러와 슬레이브 마이크로컨트롤러를 각각 형성하기 위해 복수의 주변 디바이스들과 관련되고,
    상기 마스터 마이크로컨트롤러와 상기 슬레이브 마이크로컨트롤러 사이에 통신 인터페이스를 더 포함하고, 상기 통신 인터페이스는 복수의 구성 가능한 데이터 레지스터들의 각각에 방향을 할당하도록 구성 가능한 흐름 제어 로직과 결합된 상기 복수의 구성 가능한 방향성 데이터 레지스터들을 포함하는, 단일 칩 마이크로컨트롤러.
  2. 제 1 항에 있어서,
    각각의 방향성 데이터 레지스터들을 구성하기 위한 퓨즈들을 더 포함하는 단일 칩 마이크로컨트롤러.
  3. 제 1 항 또는 제 2 항에 있어서,
    각각의 방향성 데이터 레지스터들을 구성하기 위한 구성 레지스터들을 더 포함하는 단일 칩 마이크로컨트롤러.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 복수의 구성 가능한 방향성 데이터 레지스터들에 대해 상기 마스터와 슬레이브 코어 사이에 핸드셰이크 신호들을 제공하도록 구성된 핸드셰이크 로직 블록을 더 포함하는 단일 칩 마이크로컨트롤러.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 통신 인터페이스는 복수의 메일박스들을 정의하도록 추가로 구성 가능하고, 상기 복수의 구성 가능한 데이터 레지스터들의 연속적인 데이터 레지스터들의 구성 가능한 수는 각각의 메일 박스에 할당되는, 단일 칩 마이크로컨트롤러.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    각각의 방향성 데이터 레지스터들을 구성하기 위한 퓨즈들을 더 포함하는 단일 칩 마이크로컨트롤러.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    각각의 방향성 데이터 레지스터들을 구성하기 위한 구성 레지스터들을 더 포함하는 단일 칩 마이크로컨트롤러.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    구성 가능한 데이터 레지스터의 데이터 방향은 상기 단일 칩 마이크로컨트롤러의 프로그래밍 동안에 할당되는, 단일 칩 마이크로컨트롤러.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    메일박스로의 레지스터들의 할당과 상기 복수의 구성 가능한 데이터 레지스터의 각각의 데이터 방향의 할당은 상기 단일 칩 마이크로컨트롤러의 프로그래밍 동안에 프로그램되는, 단일 칩 마이크로컨트롤러.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    각각의 데이터 레지스터는 방향 신호와 핸드셰이크 신호에 의해 제어되는, 단일 칩 마이크로컨트롤러.
  11. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    메일박스의 상기 구성 가능한 레지스터들 중 하나는 제어 레지스터로서 사용되는, 단일 칩 마이크로컨트롤러.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 복수의 구성 가능한 데이터 레지스터들 중 적어도 하나는 상태 레지스터로서 사용되는, 단일 칩 마이크로컨트롤러.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 복수의 구성 가능한 데이터 레지스터들 중 적어도 하나는 명령 레지스터로서 사용되는, 단일 칩 마이크로컨트롤러.
  14. 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 마스터 코어만으로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 기록 경로 및 상기 구성 가능한 데이터 레지스터 중 상기 하나로부터 상기 슬레이브 코어로의 판독 경로, 또는 상기 슬레이브 코어만으로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 기록 경로 및 상기 구성 가능한 데이터 레지스터 중 상기 하나로부터 상기 마스터 코어로의 판독 경로를 정의하기 위한 복수의 멀티플렉서들을 포함하는 단일 칩 마이크로컨트롤러.
  15. 제 14 항에 있어서,
    상기 마스터 또는 슬레이브 코어로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 상기 기록 경로가 각각 설정될 때, 상기 구성 가능한 데이터 레지스터 중 상기 하나로부터 상기 마스터 또는 슬레이브 코어로의 판독 경로가 이용 가능한, 단일 칩 마이크로컨트롤러.
  16. 제 14 항에 있어서,
    상기 마스터 코어로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 상기 기록 경로가 설정될 때, 상기 마스터 클록은 상기 구성 가능한 데이터 레지스터 중 상기 하나를 기록하기 위한 클록을 제공하고, 상기 슬레이브 클록은 상기 구성 가능한 데이터 레지스터 중 상기 하나를 판독하기 위한 클록을 제공하는, 단일 칩 마이크로컨트롤러.
  17. 제 14 항에 있어서,
    상기 슬레이브 코어로부터 상기 구성 가능한 데이터 레지스터 중 하나로의 상기 기록 경로가 설정될 때, 상기 슬레이브 클록은 상기 구성 가능한 데이터 레지스터 중 상기 하나를 기록하기 위한 클록을 제공하고, 상기 마스터 클록은 상기 구성 가능한 데이터 레지스터 중 상기 하나를 판독하기 위한 클록을 제공하는, 단일 칩 마이크로컨트롤러.
  18. 제 1 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 통신 인터페이스 내에 판독 FIFO 메모리 및 기록 FIFO 메모리를 더 포함하고,
    상기 판독 FIFO 메모리는 상기 슬레이브 코어와 결합된 데이터 입력부 및 상기 마스터 코어와 결합된 데이터 출력부를 포함하고, 상기 기록 FIFO 메모리는 상기 마스터 코어와 결합된 데이터 입력부 및 상기 슬레이브 코어와 결합된 데이터 출력부를 포함하는, 단일 칩 마이크로컨트롤러.
  19. 제 18 항에 있어서,
    상기 판독 FIFO 메모리 및 기록 FIFO 메모리는 구성 레지스터를 통해 선택적으로 인에이블되는, 단일 칩 마이크로컨트롤러.
  20. 제 1 항 내지 제 19 항 중 어느 한 항에 있어서,
    복수의 슬레이브 코어들을 더 포함하고,
    상기 통신 인터페이스는 복수의 데이터 레지스터 세트들을 포함하고, 각각의 데이터 레지스터 세트는 복수의 구성 가능한 데이터 레지스터들의 각각에 방향을 할당하도록 구성 가능한 흐름 제어 로직과 결합된 상기 복수의 구성 가능한 방향성 데이터 레지스터들을 포함하는, 단일 칩 마이크로컨트롤러.
  21. 단일 칩 마이크로컨트롤러의 마스터 코어와 슬레이브 코어 사이에 통신을 제공하기 위한 방법으로서,
    - 상기 마스터 코어는 마스터 시스템 클록에 의해 클록킹되고, 상기 슬레이브 코어는 슬레이브 시스템 클록에 의해 클록킹되고, 각각의 코어는 마스터 마이크로컨트롤러와 슬레이브 마이크로컨트롤러를 각각 형성하기 위해 복수의 주변 디바이스들과 관련됨 -
    상기 방법은,
    상기 마스터 마이크로컨트롤러와 상기 슬레이브 마이크로컨트롤러 사이에 통신 인터페이스 제공하는 것,
    각자의 메일박스들을 형성하기 위해 흐름 제어 로직과 결합된 복수의 구성 가능한 방향성 데이터 레지스터들을 구성하는 것,
    상기 복수의 구성 가능한 방향성 데이터 레지스터들의 각각에 대해 상기 마스터 코어로부터의 또는 상기 마스터 코어로의 데이터 방향을 구성하는 것, 및
    상기 복수의 구성 가능한 방향성 데이터 레지스터들을 통해서만 상기 마스터 코어와 상기 슬레이브 코어 사이에 데이터를 교환하는 것을 포함하는, 방법.
  22. 제 21 항에 있어서,
    상기 구성 단계들은 상기 단일 칩 마이크로컨트롤러를 프로그래밍하는 동안에 퓨즈들을 통해 수행되는, 방법.
  23. 제 21 항 또는 제 22 항에 있어서,
    상기 교환 단계는 상기 마스터와 슬레이브 코어 사이의 핸드셰이크 신호들에 의해 수행되는, 방법.
  24. 제 21 항 내지 제 23 항 중 어느 한 항에 있어서,
    상기 복수의 구성 가능한 데이터 레지스터들의 연속적인 데이터 레지스터들의 구성 가능한 수는 각각의 메일 박스에 할당되는, 방법.
  25. 제 24 항에 있어서,
    메일박스의 상기 구성 가능한 레지스터들 중 하나는 제어 레지스터로서 사용되는, 방법.
  26. 제 24 항에 있어서,
    상기 복수의 구성 가능한 데이터 레지스터들 중 적어도 하나는 상태 레지스터 또는 명령 레지스터로서 사용되는, 방법.
KR1020177037091A 2015-06-18 2016-06-17 구성 가능한 메일 박스 데이터 버퍼 장치 KR20180019603A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562181379P 2015-06-18 2015-06-18
US62/181,379 2015-06-18
US15/184,789 US10120815B2 (en) 2015-06-18 2016-06-16 Configurable mailbox data buffer apparatus
US15/184,789 2016-06-16
PCT/US2016/038115 WO2016205675A1 (en) 2015-06-18 2016-06-17 A configurable mailbox data buffer apparatus

Publications (1)

Publication Number Publication Date
KR20180019603A true KR20180019603A (ko) 2018-02-26

Family

ID=56550308

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177037091A KR20180019603A (ko) 2015-06-18 2016-06-17 구성 가능한 메일 박스 데이터 버퍼 장치

Country Status (7)

Country Link
US (1) US10120815B2 (ko)
EP (1) EP3311298A1 (ko)
JP (1) JP2018519587A (ko)
KR (1) KR20180019603A (ko)
CN (1) CN107810492B (ko)
TW (1) TW201710922A (ko)
WO (1) WO2016205675A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002103B2 (en) * 2015-03-13 2018-06-19 Microchip Technology Incorporated Low-pin microcontroller device with multiple independent microcontrollers
US10002102B2 (en) * 2015-03-13 2018-06-19 Microchip Technology Incorporated Low-pin microcontroller device with multiple independent microcontrollers
CN106791152B (zh) * 2016-12-30 2019-08-27 Oppo广东移动通信有限公司 一种通信方法及移动终端
KR20210045009A (ko) * 2019-10-16 2021-04-26 삼성전자주식회사 인터페이싱 장치, 인터페이싱 장치를 포함하는 반도체 장치 및 반도체 장치의 통신 방법
CN112732628A (zh) * 2019-10-29 2021-04-30 Oppo广东移动通信有限公司 核间数据处理方法、系统、片上系统以及电子设备
CN111427821B (zh) * 2020-03-19 2021-10-01 深圳震有科技股份有限公司 双核amp系统共用spi接口的方法、系统及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496880B1 (en) 1999-08-26 2002-12-17 Agere Systems Inc. Shared I/O ports for multi-core designs
US6912716B1 (en) * 1999-11-05 2005-06-28 Agere Systems Inc. Maximized data space in shared memory between processors
US6957352B2 (en) * 2002-03-15 2005-10-18 Intel Corporation Processor temperature control interface
JP2004318628A (ja) * 2003-04-18 2004-11-11 Hitachi Industries Co Ltd 演算処理装置
US20070113229A1 (en) * 2005-11-16 2007-05-17 Alcatel Thread aware distributed software system for a multi-processor
JP2008059282A (ja) * 2006-08-31 2008-03-13 Olympus Corp 分散処理システム、分散処理方法及びプログラム
KR101430687B1 (ko) * 2007-09-28 2014-08-18 삼성전자주식회사 다이렉트 억세스 부팅동작을 갖는 멀티 프로세서 시스템 및그에 따른 다이렉트 억세스 부팅방법
US20130160028A1 (en) 2011-12-14 2013-06-20 John E. Black Method and apparatus for low latency communication and synchronization for multi-thread applications
US9711196B2 (en) * 2012-09-10 2017-07-18 Texas Instruments Incorporated Configuration bit sequencing control of nonvolatile domain and array wakeup and backup
JP2014143284A (ja) * 2013-01-23 2014-08-07 Sony Corp 記憶素子、半導体装置、および書込方法

Also Published As

Publication number Publication date
US10120815B2 (en) 2018-11-06
US20160371200A1 (en) 2016-12-22
WO2016205675A1 (en) 2016-12-22
CN107810492B (zh) 2021-08-24
JP2018519587A (ja) 2018-07-19
EP3311298A1 (en) 2018-04-25
CN107810492A (zh) 2018-03-16
WO2016205675A9 (en) 2017-01-12
TW201710922A (zh) 2017-03-16

Similar Documents

Publication Publication Date Title
US10120815B2 (en) Configurable mailbox data buffer apparatus
US4949301A (en) Improved pointer FIFO controller for converting a standard RAM into a simulated dual FIFO by controlling the RAM&#39;s address inputs
JP4516941B2 (ja) プロセッサとメモリ・フロー・コントローラとの間でコマンド・パラメータを通信するためのシステム、方法、コンピュータ・プログラム、および装置
US6862608B2 (en) System and method for a distributed shared memory
US7433977B2 (en) DMAC to handle transfers of unknown lengths
JP4621604B2 (ja) バス装置、バスシステムおよび情報転送方法
CS287491A3 (en) Dynamic bus bus decision making with permission of joint use of each cycle
US8086766B2 (en) Support for non-locking parallel reception of packets belonging to a single memory reception FIFO
US6892266B2 (en) Multicore DSP device having coupled subsystem memory buses for global DMA access
US20180137082A1 (en) Single-chip multi-processor communication
US20170019142A1 (en) Semiconductor device and system
KR20120040535A (ko) 버스 시스템 및 그것의 동작 방법
US20070156937A1 (en) Data transfer in multiprocessor system
KR100708096B1 (ko) 버스 시스템 및 그 실행 순서 조정방법
CN111290983A (zh) Usb传输设备及传输方法
US7805579B2 (en) Methods and arrangements for multi-buffering data
US10374981B1 (en) Data transfer circuitry given multiple source elements
US9128924B2 (en) Method and apparatus for wireless broadband systems direct data transfer
JPH1040215A (ja) Pciバス・システム
KR102206313B1 (ko) 시스템 인터커넥트 및 시스템 인터커넥트의 동작 방법
WO2007020274A2 (en) System and method for communicating instructions and data between a processor and external devices
KR20060112349A (ko) 에스오씨 버스 시스템 및 버스 데이터 처리방법
CN111052100A (zh) 可位操作的直接存储器访问
KR20120066999A (ko) 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법