KR20170110072A - 멀티-코어 마이크로컨트롤러에서 크로스-코어 브레이크포인트들을 생성하기 위한 시스템 및 방법 - Google Patents

멀티-코어 마이크로컨트롤러에서 크로스-코어 브레이크포인트들을 생성하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20170110072A
KR20170110072A KR1020177016979A KR20177016979A KR20170110072A KR 20170110072 A KR20170110072 A KR 20170110072A KR 1020177016979 A KR1020177016979 A KR 1020177016979A KR 20177016979 A KR20177016979 A KR 20177016979A KR 20170110072 A KR20170110072 A KR 20170110072A
Authority
KR
South Korea
Prior art keywords
breakpoint
processor core
logic
core
cross
Prior art date
Application number
KR1020177016979A
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 KR20170110072A publication Critical patent/KR20170110072A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/2851Testing of integrated circuits [IC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2231Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test interrupt circuits
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

복수의 프로세싱 코어들을 구비한 집적회로 디바이스를 위한 디버깅 방법에서, 디버깅 브레이크포인트는 집적회로 디바이스의 제1 프로세서 코어에서 활성화된다. 활성화 시, 디버깅 브레이크포인트는 제1 프로세서 코어의 명령들의 실행을 중지시키고 그리고 디버깅 브레이크포인트는 집적회로 디바이스의 제2 프로세서 코어에 통신된다.

Description

멀티-코어 마이크로컨트롤러에서 크로스-코어 브레이크포인트들을 생성하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR GENERATING CROSS-CORE BREAKPOINTS IN A MULTI-CORE MICROCONTROLLER}
본 출원은 2015년 2월 5일자로 출원된 동일 출원인에 의한 미국 가출원 번호 62/112,552호에 대한 우선이익을 주장하며, 상기 미국 가출원은 모든 목적을 위해 본 명세서에 참고 문헌으로 통합된다.
본 발명은 프로세서들에 관한 것으로, 특히, 멀티-코어 프로세서, 특히 비대칭 멀티-코어 프로세서에서 크로스-코어 브레이크포인트를 생성하기 위한 시스템 및 방법에 관한 것이다.
프로세서 브레이크포인트는, 디버깅 목적으로 시행되는, 일시 중지(pause)로도 알려진 프로그램의 중지 지점이다. 프로세서 브레이크포인트는 전형적으로 특정 메모리 위치가 액세스될 때 트리거된다. 인터럽트 동안에, 메모리, 레지스터 등의 환경(environment)을 검사하여 프로그램이 예상대로 기능을 수행하고 있는 지의 여부를 결정한다. 메모리 위치는 프로그램 메모리에 있을 수 있고, 또한 프로세서에 의해 페치될 때 브레이크포인트를 트리거하고 실행을 중지시킬 수 있는 특정 명령을 포함할 수 있다. 이러한 유형의 브레이크포인트들은 프로그램 카운터를 각각의 메모리 주소와 비교하면 충족할 수 있다. 하지만, 메모리 위치는 또한 데이터 메모리에 있을 수 있으며, 기록 동작 및 판독 동작 중 어느 하나 또는 둘 다는 브레이크포인트를 트리거하고 명령들의 추가 실행을 중지시킬 수 있다.
대부분의 멀티 프로세서 디바이스는 대칭 프로세서 코어들을 사용한다. 정의에 의하면, 상기 코어들은 상호 교환 가능하며, 메모리, 주변장치들 및 소프트웨어 태스크들을 공유한다. 사용 가능한 프로세서가 자유롭게 되는대로 시스템 소프트웨어에 사용 가능한 프로세서가 할당된다. 따라서 디버깅은 특정 코어에 국한된다. 따라서 또 하나의 코어가 동시에 무엇을 수행하고 있는지를 결정할 필요가 없다.
하지만, 비대칭 프로세서 코어들을 구비한 멀티 프로세서 디바이스들에서는, 비대칭 코어들이 서로 다른 메모리 및 주변장치 세트들을 구비하며, 또한 서로 다른 속도로 동작하고 서로 다른 소프트웨어 프로그램들을 실행할 수 있다. 이 경우, 하나의 프로세서의 기능은 이로써 또 하나의 프로세서에 영향을 미칠 수 있다.
그러므로 특정 프로세서의 브레이크포인트 이벤트를 다른 프로세서들이 수행하고 있는 것과 연관시킬 필요가 있다.
이하에서 더 상세히 설명되듯이, 실시예들은 멀티-코어 프로세싱 디바이스에서 프로세서 브레이크포인트들을 다른 프로세서 코어들에 통신하는 것을 제공한다. 실시예들은 특히 멀티-코어 프로세싱 디바이스에 사용하기에 적합할 수 있다.
일 실시예에 따르면, 복수의 프로세싱 코어들을 포함하는 집적회로 디바이스를 위한 디버깅 방법은: 상기 집적회로 디바이스 내의 제1 프로세서 코어에서 디버깅 브레이크포인트를 활성화하는 것 - 상기 디버깅 브레이크포인트는 상기 제1 프로세서 코어의 명령들의 실행을 중지함 -; 및 상기 디버깅 브레이크포인트를 상기 집적회로 디바이스 내의 제2 프로세서 코어에 통신하는 것을 포함할 수 있다.
추가 실시예에 따르면, 상기 디버깅 방법은 브레이크포인트 레지스터에 있는 하나 이상의 크로스 브레이크포인트 인에이블 비트들을 설정하고, 이로써 상기 디버깅 브레이크포인트를 통신하는 단계를 인에이블링하는 것을 더 포함할 수 있다.추가 실시예에 따르면, 상기 디버깅 브레이크포인트를 통신하는 것은 상기 제2 프로세서 코어에서 브레이크포인트를 어서트하는 것을 포함할 수 있고, 상기 브레이크포인트는 상기 제2 프로세서 코어의 명령들의 실행을 중지한다. 추가 실시예에 따르면, 상기 디버깅 방법은 브레이크포인트 레지스터에 있는 하나 이상의 크로스 브레이크포인트 인터럽트 인에이블 비트들을 설정하고 이로써 상기 디버깅 브레이크포인트를 통신하는 단계를 인에이블링하는 것을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 디버깅 브레이크포인트를 통신하는 것은 상기 제2 프로세서 코어와 관련된 인터럽트 컨트롤러에서 브레이크포인트 인터럽트를 어서트하는 것을 포함할 수 있다. 추가 실시예에 따르면, 상기 제2 프로세서 코어는 상기 브레이크포인트 인터럽트의 수신시 인터럽트 서비스 루틴을 실행할 수 있다. 추가 실시예에 따르면, 상기 인터럽트 서비스 루틴은 상기 디버깅 브레이크포인트와 관련된 데이터를 생성할 수 있다. 추가 실시예에 따르면, 상기 데이터는 호스트 시스템에 통신될 수 있다. 추가 실시예에 따르면, 상기 제1 프로세서 코어는 제1 시스템 클록에 의해 클록킹될 수 있고, 상기 제2 프로세서 코어는 상기 제1 시스템 클록과는 다른 제2 시스템 클록에 의해 클록킹될 수 있다. 추가 실시예에 따르면, 상기 디버깅 브레이크포인트를 통신하는 것은 상기 디버깅 브레이크포인트를 상기 제2 시스템 클록에 동기화시키는 것을 포함할 수 있다. 추가 실시예에 따르면, 상기 디버깅 브레이크포인트는 복수의 프로그램 가능한 브레이크포인트들로부터 생성될 수 있다. 추가 실시예에 따르면, 상기 프로그램 가능한 브레이크포인트들은 명령 브레이크포인트들 및 데이터 브레이크포인트들을 포함할 수 있다. 추가 실시예에 따르면, 상기 제1 프로세서 코어는 마스터 코어일 수 있고 상기 제2 프로세서 코어는 슬레이브 코어일 수 있다. 추가 실시예에 따르면, 상기 제1 프로세서 코어는 슬레이브 코어일 수 있고 상기 제2 프로세서 코어는 마스터 코어일 수 있다.
또 하나의 실시예에 따르면, 복수의 프로세서 코어들을 포함하는 집적회로 디바이스는: 제1 프로세서 코어 브레이크포인트를 활성화하기 위한 제1 에뮬레이터 로직을 포함하는 제1 프로세서 코어; 상기 제1 프로세서 코어에 통신 가능하게 결합되고 제2 에뮬레이터 로직을 포함하는 제2 프로세서 코어; 및 상기 제1 프로세서 코어에 있는 상기 제1 에뮬레이터 로직에 의해 활성화된 브레이크포인트를 상기 제2 프로세서 코어에 통신하도록 구성된 상기 제1 에뮬레이터 로직 내의 제1 크로스 브레이크포인트 로직을 포함할 수 있다.
추가 실시예에 따르면, 상기 제1 크로스 브레이크포인트 로직은 상기 브레이크포인트를 상기 제2 프로세서 코어의 상기 제2 에뮬레이터 로직에 통신할 수 있고, 이로써 상기 제2 프로세서 코어의 명령들의 실행을 중지시킬 수 있다. 추가 실시예에 따르면, 상기 집적회로 디바이스는 상기 제1 크로스 브레이크포인트 로직이 상기 브레이크포인트를 상기 제2 에뮬레이터 로직에 통신할 수 있게 하도록 동작 가능한 하나 이상의 크로스 브레이크포인트 인에이블 비트들을 포함하는 브레이크포인트 레지스터를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 제2 에뮬레이터 로직은 상기 제2 프로세서 코어에 있는 상기 제2 에뮬레이터 로직에 의해 활성화된 브레이크포인트를 상기 제1 프로세서 코어에 통신하도록 구성된 제2 크로스 브레이크포인트 로직을 포함할 수 있다. 추가 실시예에 따르면, 상기 크로스 브레이크포인트 로직은 상기 브레이크포인트를 상기 제2 프로세서 코어와 관련된 인터럽트 입력부에 인터럽트 요청으로서 통신할 수 있다. 추가 실시예에 따르면, 상기 집적회로 디바이스는 상기 크로스 브레이크포인트 로직이 상기 인터럽트 요청을 상기 제2 프로세서 코어와 관련된 상기 인터럽트 입력부에 통신할 수 있게 하도록 동작 가능한 하나 이상의 크로스 브레이크포인트 인터럽트 인에이블 비트들을 포함하는 브레이크포인트 레지스터를 더 포함할 수 있다. 추가 실시예에 따르면, 각각의 에뮬레이터 로직은 한 세트의 외부 핀들과 결합된 인터페이스를 포함할 수 있다. 추가 실시예에 따르면, 제1 세트의 주변장치들은 상기 집적회로 디바이스 내에 집적되고 상기 제1 프로세서 코어와 결합될 수 있어 이로써 제1 마이크로컨트롤러를 형성할 수 있고, 그리고 제2 세트의 주변장치들은 상기 집적회로 디바이스 내에 집적되고 상기 제2 프로세서 코어와 결합될 수 있어 이로써 제2 마이크로컨트롤러를 형성할 수 있다. 추가 실시예에 따르면, 상기 제1 마이크로컨트롤러는 마스터로서 동작할 수 있고 상기 제2 마이크로컨트롤러는 슬레이브로서 동작할 수 있다. 추가 실시예에 따르면, 상기 제1 프로세서 코어는 제1 시스템 클록에 의해 클록킹될 수 있고, 상기 제2 프로세서 코어는 상기 제1 시스템 클록과는 다른 제2 시스템 클록에 의해 클록킹될 수 있다. 추가 실시예에 따르면, 상기 집적회로 디바이스는 상기 크로스 브레이크포인트 로직을 상기 제2 프로세서 코어와 인터페이싱하는 클록 크로싱 회로망을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 클록 크로싱 회로망은 상기 크로스 브레이크포인트 로직과 상기 제2 프로세서 코어와 관련된 인터럽트 컨트롤러 사이에 결합될 수 있다. 추가 실시예에 따르면, 상기 제1 세트의 주변장치들 및 상기 제2 세트의 주변장치들 중 적어도 한 세트의 주변장치들은 직렬 통신 주변장치를 포함할 수 있다. 추가 실시예에 따르면, 상기 제1 에뮬레이터 로직 및 제2 에뮬레이터 로직 중 적어도 하나의 로직은 복수의 프로그램 가능한 브레이크포인트들을 구성하도록 동작 가능하다. 추가 실시예에 따르면, 상기 프로그램 가능한 브레이크포인트들은 명령 브레이크포인트들 및 데이터 브레이크포인트들을 포함할 수 있다.
첨부되고 본 명세서의 일부를 형성하는 도면들은 본 개시의 특정 측면들을 묘사하기 위해 포함된다. 도면들에 도시된 특징들은 반드시 실척으로 도시된 것은 아님을 유의해야 한다. 본 개시 및 그 장점들은 첨부 도면들과 결합된 이하의 설명을 참조하면 보다 완전하게 이해될 수 있을 것이며, 도면들에서 같은 참조 번호들은 동일한 특징들을 가리킨다.
도 1은 실시예들에 따른 예시적인 멀티-코어 프로세싱 디바이스를 도시하는 도면이다.
도 2는 실시예들에 따른 예시적인 브레이크포인트 레지스터를 도시하는 도면이다.
도 3은 실시예들에 따른 예시적인 브레이크포인트 제어 로직을 도시한다.
도 4는 실시예들에 따른 예시적인 브레이크포인트 인터럽트 제어 로직을 도시한다.
도 5는 실시예들에 따른 예시적인 브레이크포인트 상태 레지스터를 도시하는 도면이다.
도 6은 실시예들에 따른 예시적인 클록 크로싱 회로를 도시한다.
도 7은 실시예들에 따른 멀티코어 프로세싱 디바이스를 디버깅하기 위한 예시적인 시스템을 도시한다.
도 8은 도 7의 실시예에 사용되는 바와 같은 예시적인 동기장치 펄스 생성기를 도시한다.
도 9는 2개의 에뮬레이터와 하나의 타깃 보드를 구비한 개발(development) 시스템을 도시한다.
도 10은 듀얼 코어 마이크로컨트롤러와, 그것의 각각의 단일 기능 및 멀티-기능 핀들을 포함하는 집적회로용 하우징을 도시한다.
본 개시 및 다양한 특징들 및 이들의 유리한 세부 사항들은 첨부된 도면에 도시되고 그리고 이하의 상세한 설명에서 설명되는 예시적인 실시예들을 참조하여 보다 상세히 설명된다.
이제 도면으로 돌아가서 특히, 도 1에 주목하면, 다양한 실시예들에 따른 예시적인 비대칭 멀티코어 프로세싱 디바이스(즉, 마이크로프로세서 또는 마이크로컨트롤러)를 도시하는 도면이 도시되어 있고 그리고 개괄적으로 참조 번호(100)에 의해 식별된다. 본 출원과 관련하여, 용어 "비대칭"은 2개 이상의 코어들이 독립적으로 동작하고 있음을 설명하기 위해 사용된다. 프로세서 코어들은 동일할 수 있지만 서로 다른 메모리들로부터 동작할 수 있고, 또한 프로세서 코어들이 마이크로컨트롤러로 구현되어 있는 경우에는 서로 다른 주변 디바이스들을 이용하여 동작할 수 있다. 다른 실시예들에 따르면, 서로 다른 2개의 코어가 구현될 수 있거나, 또는 서로 다른 시스템 클록들로 동작하는 2개의 동일한 코어들이 구현될 수 있다. 하지만, 본 출원의 원리들은 이러한 구현들에 제한되지 않으며, 또한 동일한 시스템 클록으로 동작하지만 각각의 코어가 다른 코어와 독립적으로 동작하는 2개의 동일한 코어들을 구비한 구현들에도 사용될 수 있다.
도 1에 도시된 실시예에서, 프로세싱 디바이스(100)는 제1 코어(102) 및 제2 코어(104)를 포함할 수 있다. 일부 실시예들에서, 제1 코어(102)는 예를 들어 제1 마이크로프로세서 코어(중앙 처리 유닛)일 수 있고, 반면에 제2 코어(104)는 제2 마이크로프로세서 코어 또는 DSP(디지털 신호 프로세서)일 수 있다. 2개의 코어들의 다른 구성도 가능하다. 이하에서 더 상세히 설명되듯이, 제1 코어(102) 및 제2 코어(104)는 각각 코어들 내에 집적된 에뮬레이터 로직(106, 108)을 포함하거나 상기 에뮬레이터 로직(106, 108)과 통신 가능하게 결합될 수 있다. 아래에서 더 상세히 설명되듯이, 에뮬레이터 로직(106, 108)은 각각 크로스 브레이크 로직(cross break logic)(114, 116)을 더 포함할 수 있다. 각각의 코어(102 및 104)는 각각 또한 인터럽트 컨트롤러(120 및 122)를 포함한다. 마지막으로, 각각의 코어(102, 104)는 한 세트의 제어 및 상태 레지스터들(110, 112)과 각각 관련될 수 있다. 코어들의 아키텍처에 따라, 이들 레지스터는 코어들 내에 집적되거나 또는 도 1에 도시된 바와 같이 코어들(102, 112)의 외부에 배치될 수 있다. 특히, 일부 실시예들은 브레이크포인트를 하나의 프로세서 코어로부터 또 하나의 프로세서 코어로 브레이크포인트 요청들 및/또는 인터럽트 인에이블 요청들로서 전파하고 브레이크포인트가 수신되었음을 표시하는 상태 비트들을 설정하기 위해 상태 레지스터들(110, 112)을 제공한다. 또한, 일부 실시예들에서, 프로세싱 디바이스(100)는 각각의 대응하는 코어에서 인터럽트를 어서트하기 위해 상술한 바와 같은 프로그램 가능한 인터럽트 컨트롤러들(120, 122)을 포함할 수 있다. 또한, 2개의 코어들(102 및 104) 간의 통신을 제공하는 마스터-슬레이브 인터페이스(107)가 도 1에 도시되어 있다. 도시된 구성은 단지 예시적이다. 다른 구성들도 가능하다. 예를 들어, 일부 프로세싱 디바이스들은 2개보다 많은 코어, 및 관련된 제어 및 상태 레지스트리를 사용할 수 있다.
2개의 코어는 도 2에 도시된 바와 같이, 집적회로 디바이스(150) 내에 마스터/슬레이브 코어 구성으로 배치될 수 있는데, 예를 들어, 제1 마이크로프로세서 코어는 마스터 코어로서 구현될 수 있는 반면, 제2 마이크로프로세서 또는 DSP 코어는 슬레이브 코어로서 구현될 수 있다. 이러한 구성으로 인해, 마스터는 특정 기능들을 제어할 수 있다. 복수의 코어들을 구비한 집적회로(IC) 디바이스는 2개의 마이크로컨트롤러를 구현하도록 추가로 설계될 수 있다. 일부 실시예들에 따르면, 도 2에 도시된 바와 같이, 각 코어에 대한 I/O 포트, 메모리뿐만 아니라 DMA, PMD와 같은 각각의 독립적인 주변 디바이스들이 IC 내에 집적되어 단일 IC 디바이스 내에 2개의 개별 마이크로컨트롤러를 형성한다. 상기 IC는 마스터 및 슬레이브 디바이스에 대해 구성 가능한(configurable) 공유 자원들을 더 포함할 수 있다. 예를 들어, 마스터에는 ECC 및 16K RAM을 갖는 64-128K 바이트들의 프로그램 플래시 메모리가 제공될 수 있다. 일 실시예에 따르면, 슬레이브에는 ECC를 가지며 휘발성의 4K 데이터 메모리 RAM일 수 있는 24K 바이트들의 프로그램 RAM(PRAM)이 구비될 수 있다. 다른 구성들도 가능하다. 메시지 박스들과 FIFO(MSI)가 마스터 코어와 슬레이브 코어 간의 통신에 사용될 수 있다. 다른 하드웨어 기능들도 구현될 수 있다.
도 2에 도시된 일 실시예에 따르면, 슬레이브 프로세서 서브시스템은 프로그램 RAM 기반 애플리케이션 가속기이다. 슬레이브 코어의 프로그래밍은 마스터 프로세서의 플래시 메모리에 존재할 것이다. 시스템 시동 후 어느 정도 시간이 되면, 사용자 제어하에 있는 마스터 프로세서는 슬레이브의 프로그래밍 이미지를 플래시 메모리로부터 슬레이브의 프로그램 RAM으로 전송한다. 슬레이브의 초기화가 완료되면, 마스터는 슬레이브를 인에이블한다. 슬레이브 코드가 슬레이브 프로세서에 의해 실행되며 슬레이브 프로세서의 첫 번째 태스크는 슬레이브 프로세서의 주변장치들을 초기화하는 것이다. 일단 마스터 프로세서 및 슬레이브 프로세서가 동작하고 있으면, 이들은 MSI 모듈(107)을 통해 서로 정보, 명령 및 상태를 통신할 수 있다. MSI 모듈(107)은 다수의 레지스터들(메일 박스들)을 제공하는데, 이 레지스터들에 의해 프로세서들 간에 정보가 공유될 수 있다. 정보가 전송될 준비가 되면, 다른 프로세서의 주의를 끌기 위해 신호기들(semaphores)(플래그들)로 사용되는 인터럽트 로직은 MSI 레지스터들과 관련되어 있다. 이러한 비대칭 듀얼 코어 아키텍처에는 많은 사용 모델이 있다: 고객에 의해 생성되는 기능들(customer generated functions)은 소규모의 집약적인 계산부들(필터들, PID); 중간 크기의 태스크들(BLDC 제어); 또는 대규모의 프로그램들(BLDC 자동 튜닝(Auto tuning))을 포함할 수 있다. 슬레이브 프로세서 코어의 목적은 "애플리케이션 가속기"로서의 역할을 하는 것이다. 사용자는 가속화되어야 하는 애플리케이션 코드의 작은 부분을 결정한다. 많은 모터 제어 및 전력 제어 애플리케이션들에서, 전체 애플리케이션 프로그램 중 매우 작은 서브세트(수 K 바이트)가 너무 자주 실행되어 프로세서 시간의 대부분(아마도 80%)을 소모한다. 애플리케이션 가속기는 애플리케이션 소프트웨어를 2개의 블록(작은 제어 루프, 및 더 큰 일반 애플리케이션(통신, 안전 검사, 사용자 인터페이스들 등))으로 나누는 데 도움을 준다. 종종 제어 소프트웨어는 범용 및 통신 소프트웨어를 개발하는 사람들과는 다른 그룹의 사람들에 의해 개발된다. 2개의 프로세서를 구비하면, "하드 실시간" 제어 소프트웨어와 크지만 덜 긴급을 요하는(time-critical) 애플리케이션 부분들의 시스템 통합에 유용하다. 슬레이브 프로세서의 프로그램 메모리는 RAM 기반이지만, 다른 실시예들은 슬레이브 프로세서(들)를 위해 플래시 메모리(내부 또는 외부)를 구현할 수도 있다. 슬레이브 플래시 메모리의 사용은 비용이 많이 들지만 매우 높은 수준의 보안을 제공할 수 있다.
일 실시예에 따르면, 도 2에 도시된 바와 같은 마스터 코어는 100MHz 시스템 클록으로 클록킹되는 dsPIC 프로세서 코어로 구현될 수 있다. 이러한 코어의 기본 아키텍처는 본 기술 분야에 잘 알려져 있으며, 본 출원의 양수인인 마이크로칩 테크놀로지(Microchip Technology Inc.)로부터 입수 가능하다. 제2 코어는 120MHz로 동작하는 dsPIC 프로세서로서 구현될 수도 있다. 제2 코어(슬레이브)가 제1 코어보다 빠르게 동작한다는 사실은, 제2 코어는 고속 휘발성 랜덤 액세스 메모리에 의해 제공되는 프로그램 메모리에 의해 구현되지만 제1 코어는 비휘발성 플래시 메모리에서 동작하는 것에 근거한다. 그러나 다른 구성들도 가능하다. 이러한 코어들의 각각은 도 2에 도시된 바와 같이 자체의 주변장치들을 가지는 반면, 발진기들, 리셋 로직, 브라운-아웃 리셋 모듈, 전압 조정기들, JTAG 등과 같은 소정의 특징부들은 공유될 수 있다. 또한, 외부 핀들은 각각의 멀티플렉스 제어 로직(도시되지 않음)을 통해 공유될 수도 있다. 핀들의 소유(ownership)는 구성 가능할 수 있다.
이제 도 3을 보면, 예시적인 브레이크포인트 레지스터의 다이어그램이 도시되어 있다. 프로세싱 디바이스의 각 코어는 자체의 브레이크포인트 레지스터와 관련될 수 있다. 브레이크포인트 레지스터(200)는 크로스 브레이크포인트 인에이블(CBE) 비트(202) 및 크로스 브레이크포인트 인터럽트 인에이블(CBIE) 비트(204)를 포함한다. 전형적으로, 브레이크포인트 레지스터가 각각의 브레이크포인트에 제공된다. 아래에서 더 상세히 설명되듯이, 각각의 다른 코어에 전파될 브레이크포인트가 발견(encounter)될 때에는, 코어는 크로스 브레이크포인트 인에이블 비트(202) 또는 크로스 브레이크포인트 인터럽트 인에이블 비트(204)를 포함하는, 대응하는 상태 레지스터를 업데이트할 것이다. 크로스 브레이크포인트 인에이블 비트(202)는 동시 모드에서 사용되며, 동시 모드에서는 복수의 코어들이 동시에 디버깅될 수 있다. 크로스 브레이크포인트 인터럽트 인에이블 비트(204)는 의사 동시 모드(Quasi-Simultaneous mode)에서 사용되며, 의사 동시 모드에서는 하나의 코어가 디버깅되지만 다른 코어는 코드를 실행한다. 이 경우, 제1 코어가 코드 실행을 재개하는 동안 다른 코어가 디버깅되게 하기 위해 인터럽트가 트리거된다.
특히 일 실시예에 따르면, CBE 비트로 인해, 하나의 프로세서 코어의 디버그 모듈로부터의 브레이크 신호가 다른 프로세서의 디버그 모듈에 전파될 수 있다. 이것으로 인해, 하나의 프로세서의 브레이크 조건이 또한 거의 동시에 다른 프로세서를 중단(break)시킬 수 있다. 반면에 CBIE 비트로 인해, 하나의 프로세서 코어의 디버그 모듈로부터의 브레이크 신호가 다른 프로세서 코어의 인터럽트 컨트롤러로 전파될 수 있다. 이것으로 인해, 하나의 프로세서의 브레이크 조건이 거의 동시에 다른 프로세서를 인터럽트할 수 있다. 이런 특징은 다른 프로세서가 제어 루프에 있지만 고객이 상기 다른 프로세서를 중지하고 싶지 않은 경우에 제어 애플리케이션들에 유용하다. 브레이크 인터럽트는 다른 프로세서의 브레이크 이벤트 시에 정보의 수집을 가능케 한다. 각각의 상태 비트들이 브레이크 이벤트 요청이 다른 프로세서로부터 수신되었음을 나타내기 위해 사용될 수 있다.
도 4에는 대응하는 크로스 브레이크포인트 요청 로직(300)이 도시되어 있다. 이러한 로직은 도 1의 로직(114, 115)의 일 실시예일 수 있다. 크로스 브레이크포인트 인에이블 로직은 복수의 프로세서의 동시 디버깅을 가능케 하는 모드에서 사용될 수 있다. 도시된 실시예에서, 로직은 OR 게이트(302) 및 게이트들(304a ... 304k)을 포함한다. 전형적으로, 이러한 하나의 AND 게이트가 각각의 브레이크포인트에 제공된다. 동작시, 각각의 AND 게이트에의 하나의 입력은 대응하는 브레이크포인트 상태 표시기, 즉 상태 플래그이다. 다른 입력은 대응하는 브레이크포인트가 활성화될 때 설정되는 브레이크포인트 레지스터(200)(도 3)로부터의 크로스 브레이크포인트 인에이블 비트(202)이다. 따라서 동작시, 브레이크포인트가 활성화될 때 코어는 대응하는 크로스 브레이크포인트 활성화 비트를 설정한다. 이것은 로직(300)의 출력이 크로스 브레이크포인트 요청을 어서트하게 하며, 크로스 브레이크포인트 요청은 다른 코어의 에뮬레이터 로직의 브레이크포인트의 입력부(미도시됨)에서 수신된다. 다른 동등한 로직이 사용될 수 있음에 유의해야 한다.
유사하게, 도 5에는 크로스 브레이크포인트 인터럽트 인에이블 로직(400)이 도시되어 있다. 이러한 로직은 도 1의 로직(114, 115)의 일 실시예일 수 있다. 이러한 크로스 브레이크포인트 인터럽트 인에이블 로직은 의사 동시 디버깅 모드에서 사용될 수 있는데, 상기 의사 동시 디버깅 모드에서는 복수의 프로세서 중 하나의 프로세서가 디버깅되고 나머지 프로세서들은 애플리케이션 코드를 실행한다. 도시된 실시예에서, 로직은 OR 게이트(402) 및 게이트들(404a-404k)을 포함한다. 전형적으로, 하나의 AND 게이트가 각 브레이크포인트에 제공된다. 동작시, 각각의 AND 게이트로의 하나의 입력은 대응하는 브레이크포인트 상태 표시기, 즉 상태 플래그이다. 다른 입력은 대응하는 브레이크포인트가 활성화될 때 설정되는 브레이크포인트 레지스터(200)(도 3)로부터의 크로스 브레이크포인트 인터럽트 인에이블 비트(204)이다. 따라서 동작시, 브레이크포인트가 활성화될 때 코어는 대응하는 크로스 브레이크포인트 인터럽트 활성화 비트를 설정한다. 이것은 로직(400)의 출력이 크로스 브레이크포인트 인터럽트 요청을 어서트하게 하며, 크로스 브레이크포인트 인터럽트 요청은 다른 코어의 인터럽트 로직(107)의 입력부에서 수신된다. 다시, 임의의 적합한 등가 로직이 사용될 수 있다.
의사 동시 모드의 구현시, 프로세싱 디바이스들 인터럽트 컨트롤러는 대응하는 코어에서 인터럽트들을 어서트하고 코어의 인터럽트 상태 레지스터를 설정하는데 사용된다. 예시적인 인터럽트 상태 레지스터(500)가 도 6에 도시되어 있다. 각 프로세서 코어의 브레이크포인트 상태 레지스터(500)는 적절한 브레이크포인트 인터럽트에 대응하는 하나 이상의 인터럽트 상태 플래그를 포함하여, 인터럽트 요청이 수신될 때 설정된다.
도 7은 각각의 프로세싱 코어에 대한 브레이크포인트 인터페이스(650)의 예를 도시한다. 도시된 바와 같이, 다양한 브레이크포인트들이 생성되어 OR게이트(670)를 사용하여 결합될 수 있다. 예를 들어, 브레이크포인트 로직(660)이 제공되어 사용자 브레이크포인트를 생성할 수 있다. 예를 들어 워치독 주변장치, 절전 기능부 또는 클록 스위칭 유닛과 같은 다른 주변장치 디바이스들은 개별의 브레이크포인트들을 생성할 수 있다. 내부 또는 외부 이벤트 시에 브레이크포인트를 생성하는 다른 유닛들이 구현될 수 있다. 동기화기 펄스 생성기(600)는 다른 코어로부터의 신호를 포워딩하는데 사용된다. 이러한 동기화기 펄스 생성기(600)는 도 8에 도시된 인터럽트 요청을 위한 대응하는 클록 크로싱 회로망에 의해 구현될 수 있다. 특히, 회로망(600)은 플립플롭들(602, 604, 606)을 포함한다. 플립플롭들(604, 606)은 수신하는 프로세서 코어의 클록에 의해 클록킹된다. 플립플롭(602)의 클록 입력은 요청 프로세서 코어의 크로스 브레이크포인트 인터럽트(즉, 크로스 브레이크포인트 인터럽트 인에이블 로직(400)의 출력)로부터 제공된다. 회로망(600)의 출력은 플립플롭(602)의 리셋(RESET) 입력부로 피드백되어, 수신하는 프로세서의 인터럽트 컨트롤러(107)(도 1)에 출력되며, 또한 상태 레지스터(500)의 인터럽트 상태 플래그(502)를 설정하는데 사용된다.
따라서, 다양한 실시예들로, 사용자는 멀티-코어 프로세싱 디바이스, 특히 서로 다른, 특히 독립적인 시스템 클록들로 동작하는 2개의 코어들을 구비한 비대칭 멀티-코어 프로세싱 디바이스를 디버깅할 수 있다. 본 명세서의 시스템들 및 방법들과 관련하여 사용될 수 있는 예시적인 디버깅 환경(700)이 도 9에 도시되어 있다. 도시된 바와 같이, 환경(700)은 대응하는 회로 내(in circuit) 에뮬레이터들(ICE)(704, 706)로 이어지는 인터페이스들(710, 712)를 포함하는 타겟 보드(703) 상에, 타겟 멀티-코어 IC 디바이스(702)를 포함한다. 하나보다 많은 프로세서의 동시 디버깅이 요구되는 실시예들에서는, ICE가 각 프로세서에 제공된다. 따라서, 도시된 실시예에서, 2개까지의 프로세싱 코어들이 동시에 디버깅될 수 있다. ICE들(704, 706)은 본 출원의 양수인인 마이크로칩 테크놀로지에 의해 제조되고 배포된 리얼(REAL) ICE 에뮬레이터들로서 구현될 수 있지만 다른 유형들도 가능하다. 각각의 ICE(704, 706)는 또한 본 출원의 양수인으로부터 입수 가능한 MPLABX 환경과 같은 통합 개발 환경(IDE)을 실행하는 컴퓨터(708), 예를 들어 개인용 컴퓨터, 랩탑 컴퓨터, 워크스테이션 또는 다른 디바이스에 결합된다.
도 10은 단지 28개의 핀들 및 2개의 프로세싱 코어들을 구비한 집적회로 디바이스에서의 가능한 핀 아웃을 도시한다. 3개 세트의 외부 핀들(PGECx 및 PGEDx 및 선택적으로 SMCLRx)은 제1 및/또는 제2 프로세싱 코어에 직렬 프로그래밍 인터페이스를 제공한다. 이들 직렬 인터페이스는 별도의 클록 및 데이터 신호 라인들을 구비한 동기식 인터페이스들이다. 에뮬레이션 시스템은 회로 내 디버거 역량(capability)을 제공한다. ICD 역량은 고객용 기능 핀들의 사용을 필요로 한다. 도 9는 전형적인 ICD 연결을 보여준다. 프로세서 코어들은 고객 타겟 보드 상의 IC(702)에 있다. IC(702)는 한 번에 하나의 프로세서의 디버그를 지원하기 위해 PGCx 및 PGDx 핀을 전용으로 제공해야 한다. 2개의 프로세서의 동시 디버깅을 지원하려면, 고객용 보드는 도 10에 도시된 바와 같이, 2개의 PGCx 핀과 2개의 PGDx 핀을 전용으로 제공해야 하며, 또한 슬레이이브 코어용의 또 하나의 핀(SMCLRx)을 리얼 ICE들에의 인터페이스로서 전용으로 제공해야 한다. 마스터 및 슬레이브 ICD들 둘 다는 그들의 각각의 PGC/D 핀들의 쌍들과 슬레이브용의 관련 SMCLRx 핀을 선택하기 위해서 FICD 및 SLVICD1 레지스터들 (각각)에 플래시 메모리의 자체 구성 비트들(BKBUG 및 ICS[1:0])을 가진다. 디바이스 파워 온 리셋 및 브라운 아웃 리셋(POR/BOR)은 마스터를 리셋하고, 제어 레지스터의 SLVEN 비트가 마스터에 의해 다시 설정될 때까지 슬레이브를 리셋 상태로 되게 할 것이다. 디바이스 MCLR은 실시예에 따라서는 마스터를 리셋하지만 슬레이브에는 영향을 미치지 않을 것이다. 슬레이브 SMCLR은 SLVEN 비트가 마스터에 의해 다시 설정될 때까지 슬레이브를 리셋 상태로 되게 할 것이다. 마스터 런 타임 리셋들은 슬레이브에는 영향을 미치지 않을 것이다. 슬레이브 런타임 리셋들은 슬레이브를 리셋하지만 슬레이브를 중지시키지 않을 것이다.
상술한 바와 같이, 일부 실시예들에서, 다수의 디버깅 모드들이 이용 가능할 수 있다. 이들 모드는 마스터 코어 전용 모드; 슬레이브 코어 전용 모드; 동시 디버깅 모드; 및 의사 동시 디버깅 모드를 포함할 수 있다.
마스터 코어 전용 모드에서는, 디버깅이 기존의 dsPIC 또는 PIC MCU 또는 기타 마이크로컨트롤러를 디버깅하는 것과 유사하다. 이러한 모드에서는, 전형적으로, 단일 ICE 회로 에뮬레이터(704)는 IDE를 실행하는 호스트 컴퓨터(708) 및 타겟 보드(703)에 결합된다.
슬레이브 코어 전용 모드에서는, 디버깅이 기존 dsPIC 또는 MCU와 동일하다. 다시, 단일 ICE 에뮬레이터(706)가 제공되어 IDE를 실행하는 컴퓨터(708) 및 타겟 보드에 결합된다.
동시 모드에서는, 멀티-코어 디바이스(702) 내의 마스터 코어(102) 및 슬레이브 코어(104) 둘 다가 동시에 디버깅하는 것이 구현된다. 크로스 코어 브레이크포인트들은 크로스 브레이크포인트 및 인에이블 비트의 어서션에 응답하여 상술한 바와 같이, 동시에 코어들 둘 다를 중지(중단)한다. 이 경우의 디버깅 환경은 ICE(704, 706)(각각의 프로세서 코어 당 하나) 둘 다를 포함하고, 둘 다는 호스트 컴퓨터(708)상에서 실행되는 IDE에 다시 결합된다.
의사 동시(Quasi-Simultaneous) 마스터 및 슬레이브 디버그 모드는 마스터 또는 슬레이브 중 하나를 디버그하고 다른 프로세서가 애플리케이션 코드를 계속 실행하게 하도록 하는 기능을 수행한다. 이 경우, 크로스-코어 브레이크포인트는 크로스 브레이크포인트 인터럽트 인에이블 설정에 응답하여 다른 코어에 대한 인터럽트를 생성하지만, 해당 상태 레지스터에 생성한다. 디버깅 환경은 하나 또는 두 개의 ICE를 포함할 수 있다. 예를 들어, 다른 코어에 공급되는 브레이크포인트 인터럽트를 생성하는 프로세서 코어는 ICE(704)과 연결될 수 있는 반면, 다른 코어는 ICE에 연결될 필요가 없을 수 있다. 대신, 다른 코어는 각각의 인터럽트 서비스 루틴에서 생성된 정보를 수신하기 위해 직렬 또는 병렬 인터페이스를 통해 호스트와 결합될 수 있다. 또 하나의 실시예에 따르면, 다른 코어는 또한 디버그 인터럽트 서비스 루틴에서 생성된 정보를 수신할 수 있는, 트레이스 인터페이스를 포함하는 ICE(706)와 결합될 수 있다.

Claims (29)

  1. 복수의 프로세싱 코어들을 포함하는 집적회로 디바이스를 위한 디버깅 방법으로서,
    상기 집적회로 디바이스 내의 제1 프로세서 코어에서 디버깅 브레이크포인트를 활성화하는 것 - 상기 디버깅 브레이크포인트는 상기 제1 프로세서 코어의 명령들의 실행을 중지함 -; 및
    상기 디버깅 브레이크포인트를 상기 집적회로 디바이스 내의 제2 프로세서 코어에 통신하는 것을 포함하는 방법.
  2. 제1항에 있어서,
    브레이크포인트 레지스터에 있는 하나 이상의 크로스 브레이크포인트 인에이블 비트들을 설정하고, 이로써 상기 디버깅 브레이크포인트를 통신하는 단계를 인에이블링하는 것을 더 포함하는 디버깅 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 디버깅 브레이크포인트를 통신하는 것은 상기 제2 프로세서 코어에서 브레이크포인트를 어서트하는 것을 포함하고, 상기 브레이크포인트는 상기 제2 프로세서 코어의 명령들의 실행을 중지하는, 디버깅 방법.
  4. 제1항에 있어서,
    브레이크포인트 레지스터에 있는 하나 이상의 크로스 브레이크포인트 인터럽트 인에이블 비트들을 설정하고 이로써 상기 디버깅 브레이크포인트를 통신하는 단계를 인에이블링하는 것을 더 포함하는 디버깅 방법.
  5. 제2항에 있어서,
    상기 디버깅 브레이크포인트를 통신하는 것은 상기 제2 프로세서 코어와 관련된 인터럽트 컨트롤러에서 브레이크포인트 인터럽트를 어서트하는 것을 포함하는, 디버깅 방법.
  6. 제5항에 있어서,
    상기 제2 프로세서 코어는 상기 브레이크포인트 인터럽트의 수신시 인터럽트 서비스 루틴을 실행하는, 디버깅 방법.
  7. 제6항에 있어서,
    상기 인터럽트 서비스 루틴은 상기 디버깅 브레이크포인트와 관련된 데이터를 생성하는, 디버깅 방법.
  8. 제7항에 있어서,
    상기 데이터는 호스트 시스템에 통신되는, 디버깅 방법.
  9. 제1항에 있어서,
    상기 제1 프로세서 코어는 제1 시스템 클록에 의해 클록킹되고, 상기 제2 프로세서 코어는 상기 제1 시스템 클록과는 다른 제2 시스템 클록에 의해 클록킹되는, 디버깅 방법.
  10. 제9항에 있어서,
    상기 디버깅 브레이크포인트를 통신하는 것은 상기 디버깅 브레이크포인트를 상기 제2 시스템 클록에 동기화시키는 것을 포함하는, 디버깅 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 디버깅 브레이크포인트는 복수의 프로그램 가능한 브레이크포인트들로부터 생성되는, 디버깅 방법.
  12. 제11항에 있어서,
    상기 프로그램 가능한 브레이크포인트들은 명령 브레이크포인트들 및 데이터 브레이크포인트들을 포함하는, 디버깅 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 제1 프로세서 코어는 마스터 코어이고 상기 제2 프로세서 코어는 슬레이브 코어인, 디버깅 방법.
  14. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 제1 프로세서 코어는 슬레이브 코어이고 상기 제2 프로세서 코어는 마스터 코어인, 디버깅 방법.
  15. 복수의 프로세서 코어들을 포함하는 집적회로 디바이스로서,
    제1 프로세서 코어 브레이크포인트를 활성화하기 위한 제1 에뮬레이터 로직을 포함하는 제1 프로세서 코어;
    상기 제1 프로세서 코어에 통신 가능하게 결합되고 제2 에뮬레이터 로직을 포함하는 제2 프로세서 코어; 및
    상기 제1 프로세서 코어에 있는 상기 제1 에뮬레이터 로직에 의해 활성화된 브레이크포인트를 상기 제2 프로세서 코어에 통신하도록 구성된 상기 제1 에뮬레이터 로직 내의 제1 크로스 브레이크포인트 로직을 포함하는, 집적회로 디바이스.
  16. 제15항에 있어서,
    상기 제1 크로스 브레이크포인트 로직은 상기 브레이크포인트를 상기 제2 프로세서 코어의 상기 제2 에뮬레이터 로직에 통신하고, 이로써 상기 제2 프로세서 코어의 명령들의 실행을 중지시키는, 집적회로 디바이스.
  17. 제15항 또는 제16항에 있어서,
    상기 제1 크로스 브레이크포인트 로직이 상기 브레이크포인트를 상기 제2 에뮬레이터 로직에 통신할 수 있게 하도록 동작 가능한 하나 이상의 크로스 브레이크포인트 인에이블 비트들을 포함하는 브레이크포인트 레지스터를 더 포함하는 집적회로 디바이스.
  18. 제15항 내지 제17항 중 어느 한 항에 있어서,
    상기 제2 에뮬레이터 로직은 상기 제2 프로세서 코어에 있는 상기 제2 에뮬레이터 로직에 의해 활성화된 브레이크포인트를 상기 제1 프로세서 코어에 통신하도록 구성된 제2 크로스 브레이크포인트 로직을 포함하는, 집적회로 디바이스.
  19. 제15항 내지 제18항 중 어느 한 항에 있어서,
    상기 크로스 브레이크포인트 로직은 상기 브레이크포인트를 상기 제2 프로세서 코어와 관련된 인터럽트 입력부에 인터럽트 요청으로서 통신하는, 집적회로 디바이스.
  20. 제15항 내지 제19항 중 어느 한 항에 있어서,
    상기 크로스 브레이크포인트 로직이 상기 인터럽트 요청을 상기 제2 프로세서 코어와 관련된 상기 인터럽트 입력부에 통신할 수 있게 하도록 동작 가능한 하나 이상의 크로스 브레이크포인트 인터럽트 인에이블 비트들을 포함하는 브레이크포인트 레지스터를 더 포함하는 집적회로 디바이스.
  21. 제15항 내지 제20항 중 어느 한 항에 있어서,
    각각의 에뮬레이터 로직은 한 세트의 외부 핀들과 결합된 인터페이스를 포함하는, 집적회로 디바이스.
  22. 제15항 내지 제21항 중 어느 한 항에 있어서,
    제1 세트의 주변장치들은 상기 집적회로 디바이스 내에 집적되고 상기 제1 프로세서 코어와 결합되어 제1 마이크로컨트롤러를 형성하고, 그리고 제2 세트의 주변장치들은 상기 집적회로 디바이스 내에 집적되고 상기 제2 프로세서 코어와 결합되어 제2 마이크로컨트롤러를 형성하는, 집적회로 디바이스.
  23. 제21항에 있어서,
    상기 제1 마이크로컨트롤러는 마스터로서 동작하고 상기 제2 마이크로컨트롤러는 슬레이브로서 동작하는, 집적회로 디바이스.
  24. 제15항 내지 제23항 중 어느 한 항에 있어서,
    상기 제1 프로세서 코어는 제1 시스템 클록에 의해 클록킹되고, 상기 제2 프로세서 코어는 상기 제1 시스템 클록과는 다른 제2 시스템 클록에 의해 클록킹되는, 집적회로 디바이스.
  25. 제15항 내지 제24항 중 어느 한 항에 있어서,
    상기 크로스 브레이크포인트 로직을 상기 제2 프로세서 코어와 인터페이싱하는 클록 크로싱 회로망을 더 포함하는 집적회로 디바이스.
  26. 제25항에 있어서,
    상기 클록 크로싱 회로망은 상기 크로스 브레이크포인트 로직과 상기 제2 프로세서 코어와 관련된 인터럽트 컨트롤러 사이에 결합되는, 집적회로 디바이스.
  27. 제22항에 있어서,
    상기 제1 세트의 주변장치들 및 상기 제2 세트의 주변장치들 중 적어도 한 세트의 주변장치들은 직렬 통신 주변장치를 포함하는, 집적회로 디바이스.
  28. 제15항 내지 제27항 중 어느 한 항에 있어서,
    상기 제1 에뮬레이터 로직 및 제2 에뮬레이터 로직 중 적어도 하나의 로직은 복수의 프로그램 가능한 브레이크포인트들을 구성하도록 동작 가능한, 집적회로 디바이스.
  29. 제28항에 있어서,
    상기 프로그램 가능한 브레이크포인트들은 명령 브레이크포인트들 및 데이터 브레이크포인트들을 포함하는, 집적회로 디바이스.
KR1020177016979A 2015-02-05 2016-02-03 멀티-코어 마이크로컨트롤러에서 크로스-코어 브레이크포인트들을 생성하기 위한 시스템 및 방법 KR20170110072A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562112552P 2015-02-05 2015-02-05
US62/112,552 2015-02-05
US15/012,287 US10102050B2 (en) 2015-02-05 2016-02-01 System and method for generating cross-core breakpoints in a multi-core microcontroller
US15/012,287 2016-02-01
PCT/US2016/016293 WO2016126774A1 (en) 2015-02-05 2016-02-03 System and method for generating cross-core breakpoints in a multi-core microcontroller

Publications (1)

Publication Number Publication Date
KR20170110072A true KR20170110072A (ko) 2017-10-10

Family

ID=55451561

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177016979A KR20170110072A (ko) 2015-02-05 2016-02-03 멀티-코어 마이크로컨트롤러에서 크로스-코어 브레이크포인트들을 생성하기 위한 시스템 및 방법

Country Status (6)

Country Link
US (1) US10102050B2 (ko)
EP (1) EP3254199B1 (ko)
KR (1) KR20170110072A (ko)
CN (1) CN107111546B (ko)
TW (1) TW201633129A (ko)
WO (1) WO2016126774A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294780B2 (en) 2019-07-30 2022-04-05 SK Hynix Inc. Memory controller and operating method thereof

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921982B2 (en) * 2014-06-05 2018-03-20 Microchip Technology Incorporated Device and method to assign device pin ownership for multi-processor core devices
US9921988B2 (en) * 2014-06-05 2018-03-20 Microchip Technology Incorporated Device and method to assign device pin functionality for multi-processor core devices
CN105354136B (zh) * 2015-09-25 2018-06-15 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105224454B (zh) * 2015-09-25 2018-06-05 华为技术有限公司 一种调试方法、多核处理器和调试设备
US10552270B2 (en) 2016-12-22 2020-02-04 Intel Corporation Systems and methods for in-field core failover
JP2018128767A (ja) * 2017-02-07 2018-08-16 ルネサスエレクトロニクス株式会社 デバッグシステム及び半導体装置
CN108415842B (zh) * 2018-03-21 2021-01-29 杭州中天微系统有限公司 多核处理器
JP6981920B2 (ja) * 2018-05-25 2021-12-17 ルネサスエレクトロニクス株式会社 半導体装置、およびデバッグ方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640542A (en) * 1993-10-29 1997-06-17 Intel Corporation On-chip in-circuit-emulator memory mapping and breakpoint register modules
US6205560B1 (en) * 1996-02-27 2001-03-20 Via-Cyrix, Inc. Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
US6598178B1 (en) * 1999-06-01 2003-07-22 Agere Systems Inc. Peripheral breakpoint signaler
DE10116861A1 (de) * 2001-04-04 2002-10-31 Infineon Technologies Ag Programmgesteuerte Einheit
US6859892B2 (en) * 2001-04-25 2005-02-22 Hewlett-Packard Development Company, L.P. Synchronous breakpoint system and method
US7131114B2 (en) 2001-07-16 2006-10-31 Texas Instruments Incorporated Debugger breakpoint management in a multicore DSP device having shared program memory
US7058855B2 (en) * 2002-07-24 2006-06-06 Infineon Technologies Ag Emulation interface system
US7689867B2 (en) * 2005-06-09 2010-03-30 Intel Corporation Multiprocessor breakpoint
JP4222370B2 (ja) 2006-01-11 2009-02-12 セイコーエプソン株式会社 デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
US20070226740A1 (en) * 2006-02-28 2007-09-27 Xiao-Feng Li Method and apparatus for global breakpoint for parallel debugging on multiprocessor systems
CN101154212B (zh) * 2006-09-29 2012-01-25 上海海尔集成电路有限公司 一种8位兼容c51指令集微控制器
US8161311B2 (en) * 2007-08-23 2012-04-17 Stratus Technologies Bermuda Ltd Apparatus and method for redundant and spread spectrum clocking
US20090113211A1 (en) * 2007-10-31 2009-04-30 Chun-Hung Liu Processing unit including a wireless module and method thereof
US20100049956A1 (en) * 2008-08-20 2010-02-25 Moyer William C Debug instruction for use in a multi-threaded data processing system
WO2010035315A1 (ja) * 2008-09-24 2010-04-01 富士通株式会社 マルチコアcpuにおける消費電力制御方法,消費電力制御プログラム及び情報処理システム
US7913118B2 (en) * 2008-10-15 2011-03-22 Andes Technology Corporation In-circuit debugging system and related method
US8108730B2 (en) * 2010-01-21 2012-01-31 Arm Limited Debugging a multiprocessor system that switches between a locked mode and a split mode
US8806446B2 (en) * 2010-03-22 2014-08-12 Analog Devices, Inc. Methods and apparatus for debugging programs in shared memory
US20120226839A1 (en) * 2011-03-02 2012-09-06 Texas Instruments Incorporated Method and System for Monitoring and Debugging Access to a Bus Slave Using One or More Throughput Counters
WO2013061369A1 (en) 2011-10-26 2013-05-02 Hitachi, Ltd. Information system and control method of the same
US10120785B2 (en) * 2016-10-21 2018-11-06 Rosemount Aerospace Inc. Automatic generation of data coupling and control coupling test conditions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294780B2 (en) 2019-07-30 2022-04-05 SK Hynix Inc. Memory controller and operating method thereof

Also Published As

Publication number Publication date
EP3254199B1 (en) 2020-12-30
CN107111546B (zh) 2021-05-07
WO2016126774A1 (en) 2016-08-11
TW201633129A (zh) 2016-09-16
CN107111546A (zh) 2017-08-29
EP3254199A1 (en) 2017-12-13
US10102050B2 (en) 2018-10-16
US20160231376A1 (en) 2016-08-11

Similar Documents

Publication Publication Date Title
EP3254199B1 (en) System and method for generating cross-core breakpoints in a multi-core microcontroller
EP2787444B1 (en) Central processing unit, information processing apparatus, and intra-virtual-core register value acquisition method
US20170227603A1 (en) Scheduling of scenario models for execution within different computer threads and scheduling of memory regions for use with the scenario models
US7010722B2 (en) Embedded symmetric multiprocessor system debug
US20180357089A1 (en) Dynamic halt polling control
US9946823B2 (en) Dynamic control of design clock generation in emulation
Forin et al. Giano: The two-headed system simulator
EP2672388B1 (en) Multi-processor parallel simulation method, system and scheduler
JP5336228B2 (ja) 複数のクロックドメインにおいて決定性を促進するテクニック
Asokan Designing multiprocessor systems in platform studio
Shannon et al. Performance monitoring for multicore embedded computing systems on FPGAs
Boger Rhealstone benchmarking of FreeRTOS and the Xilinx Zynq extensible processing platform
Ko et al. Hardware-in-the-loop simulation for CPU/GPU heterogeneous platforms
US9581643B1 (en) Methods and circuits for testing partial circuit designs
Powell Performance of the Xilinx Zynq System-on-Chip interconnect with asymmetric multiprocessing
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
Macías et al. Open platform for mixed-criticality applications
JP2006146412A (ja) マルチコアプロセッサ及びデバッグ方法
US9721048B1 (en) Multiprocessing subsystem with FIFO/buffer modes for flexible input/output processing in an emulation system
Stollon et al. Infineon multicore debug solution
Michelotti Development of a real-time application based on Xenomai
Zhang et al. Design of device driver in VxWorks
You et al. Red Baron: Near/post-silicon SoC cache coherence stress tester
Staroletov Towards Model Checking Linux Interrupts Behavior for SMP Systems
Díaz et al. Virtual Platform of FPGA based MPSoC for Power Electronics Applications: OS simulation