KR20170028995A - 시스템 온 칩(soc) 및 시스템을 위한 저전력 디버그 아키텍처 - Google Patents

시스템 온 칩(soc) 및 시스템을 위한 저전력 디버그 아키텍처 Download PDF

Info

Publication number
KR20170028995A
KR20170028995A KR1020177003629A KR20177003629A KR20170028995A KR 20170028995 A KR20170028995 A KR 20170028995A KR 1020177003629 A KR1020177003629 A KR 1020177003629A KR 20177003629 A KR20177003629 A KR 20177003629A KR 20170028995 A KR20170028995 A KR 20170028995A
Authority
KR
South Korea
Prior art keywords
debug
unit
trace
soc
signal
Prior art date
Application number
KR1020177003629A
Other languages
English (en)
Other versions
KR102191815B1 (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 KR20170028995A publication Critical patent/KR20170028995A/ko
Application granted granted Critical
Publication of KR102191815B1 publication Critical patent/KR102191815B1/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/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • 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/0751Error or fault detection not based on redundancy
    • 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/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Abstract

실시예에서, 프로세서/시스템 온 칩(System on Chip: SoC) 등등을 위한 디버그 아키텍처는 하나 이상의 기능적 디버그 신호를 수신하는 중앙 디버그 유닛(중앙 디버그 유닛은 적어도 하나의 펌웨어 소스, 적어도 하나의 소프트웨어 소스 및 적어도 하나의 하드웨어 소스로부터 디버그 정보를 수신하고, 압축된 디버그 정보를 출력하도록 또한 구성됨)과, 압축된 디버그 정보를 수신하고 압축된 디버그 정보를 타임스탬핑하는 시스템 트레이스 모듈과, 타임스탬핑된 압축된 디버그 정보를 수신하고 타임스탬핑된 압축된 디버그 정보를 병렬화하는 병렬 트레이스 인터페이스와, 병렬화된 타임스탬핑된 압축된 디버그 정보를 복수의 출력 경로 중의 하나 상에 출력하는 출력 유닛을 포함한다. 다른 실시예가 기술되고 청구된다.

Description

시스템 온 칩(SOC) 및 시스템을 위한 저전력 디버그 아키텍처{LOW POWER DEBUG ARCHITECTURE FOR SYSTEM-ON-CHIPS (SOCs) AND SYSTEMS}
실시예는 집적 회로 및 그러한 회로를 포함한 시스템을 위한 디버그(debug) 동작에 관련된다.
오늘날의 시스템 온 칩(System on Chip: SoC) 및 다른 집적 회로(Integrated Circuit: IC)는 더 긴 배터리 수명을 얻기 위해 저전력 지침에 따라서 설계된다. 이전의 세대에 비해 훨씬 더 세밀하게(with much higher granularity) 기동하고(wake up) 활동 정지하는(sleep) 디바이스 내에 설계된 여러 저전력 도메인(low power domain)으로 인해 그러한 IC 및 SOC의 디버그가 대단히 힘들다. 현재 이용가능한 디버그 솔루션은 펌웨어 및 저전력 동작의 디버깅(debugging)을 수행하는 데 제한된 기능을 제공한다.
도 1은 실시예에 따른 프로세서(processor)의 일부분의 블록도이다.
도 2는 본 발명의 실시예에 따른 프로세서의 다른 블록도이다.
도 3은 본 발명의 실시예에 따른 트레이스 수집 유닛(trace collection unit)의 블록도이다.
도 4는 본 발명의 실시예에 따른 방법의 흐름도이다.
도 5는 본 발명의 실시예에 따른 시스템의 블록도이다.
도 6은 예시적 시스템(이로써 실시예가 사용될 수 있음)의 블록도이다.
도 7은 다른 예시적 시스템(이로써 실시예가 사용될 수 있음)의 블록도이다.
도 8은 실시예에 따른 시스템 온 칩의 블록도이다.
다양한 실시예에서, 프로세서 및 다른 시스템 온 칩(System on Chip: SoC)(시스템 인 패키지(System in a Package: SiP), 다중 칩 패키지(Multi-Chip Package: MCP)를 포함함)을 위해, 가령 시스템 내에 구현된 바와 같은 이들 디바이스의 매우 다양한 양상, 예를 들어, 무엇보다도, 부트 업(boot up)을 포함하나 이에 한정되지 않는 펌웨어 동작, 저전력 상태(low power state) 진입(entry)/퇴장(exit)을 포함하나 이에 한정되지 않는 저전력 동작이 시험/디버깅될 수 있도록, 전력 인지 저전력 디버그 아키텍처(power-aware low power debug architecture)가 제공된다. 이 디버그 아키텍처는 저전력 태블릿(tablet) 및 스마트폰(smartphone) IC/SoC, 임베딩된(embedded) 디바이스, 예를 들어 사물 인터넷(Internet of Things: IoT) 디바이스, 착용가능물(wearable) 및 기타 등등, 그리고 클라이언트(client)/서버(server) 애플리케이션에서 사용되는 저전력 디바이스의 디버그를 위해 사용될 수 있다. 그러므로 실시예는 시스템의 전체 동작 범위의 효과적인 디버그를 제공하기 위해 초기 부트 디버그(early boot debug), 저전력 조건(low power condition) 및 저전력 진입/퇴장 전환(transition) 동안 하드웨어/소프트웨어/펌웨어 가관측성(observability)을 제공한다. 상이한 실시예에서, 다양한 플랫폼(platform) 동작 조건을 시험하기 위해, 디버그 정보가 선택적으로 수집될 수 있는 지점(point)을 트리거링하도록(trigger) 펌웨어, 운영 체제(operating system) 또는 다른 소프트웨어 중 임의의 것 내에 디버그 트리거(debug trigger)가 포함될 수 있다.
더 나아가, 고급 IC/SoC가 훨씬 더 까다로운 전력 소모 요구사항을 가지게 됨에 따라, 실시예는 그러한 프로세서를 가지는 많은 수의 출하된(shipped) 제품 내에서 디버그 로직(debug logic)의 전력 소모가 방지될 수 있도록 그러한 로직을 선택적으로 활성화하고(enable) 비활성화하기(disable) 위한 기법을 제공한다. 그러나, 실시예는 이들 제품 중 하나가 디버그/고장(failure) 분석을 위해 현장으로부터 반환된(returned) 경우 선택적인 활성화(selective enable)를 또한 가능케 할 수 있음을 이해해야 한다.
다양한 실시예에서, 전력 인지 저전력 디버그 방안은 상시-온(Always-ON: AON) 도메인(domain)에서 동작하는 로직의 초기 부트 디버그를 가능하게 한다. 실시예에서, 중앙 디버그 유닛(central debug unit)은, 디버그 동작을 위한 주 제어기(main controller)인바, 최소의(minimal) 로직으로써 구성될 수 있고 AON 도메인 또는 독립적인 디버그 전력 도메인 내에 유지될 수 있어 전력 투입 단계(power up stage) 초기에 그리고 저전력 전환 동안에 활성인 로직을 디버깅하는 것을 가능하게 하는데, 이는 흔히 프로세서 내에서 디버깅하기가 가장 어려운 회로일 수 있다.
이리하여, 디버그 동작은 디버그 경로(debug path) 및 디버그 로직이 AON 또는 디버그 전력 도메인 내에 유지됨에 따라 저전력 전환 동안뿐만 아니라, 초기 부트에서 시작하여 수행될 수 있다. 즉, 만일 소정의 설계 내에서, 디버그 로직의 포함이 (가령, 설계 사양에 따른) 프로세서 또는 플랫폼의 전력 소모 목표가 초과되게 하는 경우, 디버그 로직은 별개의 디버그 전력 도메인 내에 놓일 수 있다. 이 독립적인 디버그 전력 도메인은 프로세서의 코어(core) 및 다른 기능적(functional) 유닛을 포함할 수 있는 하나 이상의 제어가능 전력 도메인(controllable power domain) 및 AON 전력 도메인과는 별개로 유지될 수 있다. 그러면 디버그 전력 도메인은, 이 디버그 전력 도메인 내에서 손실되는 누설 전류(leakage current)로 인한 손실 전력(lost power)을 비롯하여 전력을 절감하기 위해 출하 전에 (가령, 구성 퓨즈(configuration fuse) 또는 다른 구성 값(configuration value)의 세트 중의 하나 이상을 퓨징하는 것(fusing)을 통하여) 영구적으로 전력 오프되도록(powered off) 제조 동안에 구성될 수 있다. 반환 자료 인가(Return Material Authorization: RMA) 디버그를 위해 또는 다른 이유(가령, 현장 시험(field testing))를 위해 반환 부분에 전력이 인가될 필요가 있는 경우에, 가령 테스트 액세스 포트(Test Access Port: TAP) 제어기를 통하여, 퓨즈 오버라이드(fuse override)가 제공될 수 있다.
이제 도 1을 참조하면, 실시예에 따른 SoC와 같은 프로세서의 일부분의 블록도가 도시된다. 도시된 SoC(100)의 부분은 DFx(design for X) 회로에 주로 관련되는데, 이는 테스트를 위한 설계, 유효성을 위한 설계, 디버그를 위한 설계 및 기타 등등을 포함하는 다양한 목적으로 사용될 수 있다(DFx 내의 X는 테스트를 위한 설계(Design for Test)를 가리키기 위해 "T", 디버그를 위한 설계(Design for Debug)를 가리키기 위해 "D", 유효성을 위한 설계(Design for Validation)를 가리키기 위해 "V" 및 기타 등등에 의해 대체될 수 있음). 이 특정한 설계는 디버그를 위한 설계를 위한 것인데, 이 로직이 주로 디버그 목적으로 사용되기 때문이다. 일반적으로, 그러한 회로는 프로세서 또는 다른 디버그 호스트(debug host)의 하나 이상의 기능적 유닛으로부터 입력을 수신하고 디버그 호스트의 내부 또는 외부의 전달을 위해 원하는 포맷(format)으로 그러한 정보를 적절히 처리하는 데에 사용될 수 있다. 그러한 DFx 회로는 프로세서 설계, 개발 및 디버그의 과정 동안에 사용될 수 있고, 또한 휴대가능 컴퓨팅 디바이스(portable computing device), 가령 스마트폰, 태블릿, 패블릿(phablet), 또는 임의의 다른 휴대가능 또는 다른 컴퓨팅 디바이스와 같은 플랫폼 내에 프로세서를 포함시키는 동안에 사용될 수 있다. 물론, DFx 회로는 또한 플랫폼 제조후(post-platform manufacture) 테스트 및 디버그 동작을 위해 사용될 수 있다.
도시된 실시예에서, SoC(100)는 하나 이상의 코어(1300 내지 130n)를 포함하는 몇 개의 기능적 회로를 포함할 수 있다. 실시예에서, 그러한 코어는 가령 소정의 인텔 아키텍처(Intel® Architecture: IA) 설계의 이종(heterogeneous) 또는 동종(homogeneous) 코어의 세트일 수 있다. 물론 다른 실시예에서, ARM 아키텍처에 기반한 코어와 같은 다른 제조자의 코어가 대신 존재할 수 있다. 그리고 다른 실시예에서, 인텔(Intel®) 기반 코어 및 ARM 기반 코어 또는 다른 로직의 조합이 존재할 수 있다.
일반적으로, 도 1에 도시된 회로의 나머지는 프로세서의 DFx 회로에 관련된다. 보여진 바와 같이, DFx 유닛(120)은 하드웨어(hardware), 펌웨어(firmware) 및/또는 소프트웨어(software)의 상이한 모음을 포함하는 다양한 온칩 소스(on-chip source)로부터 입력을 수신하도록 구성된다. DFx 유닛(120)은 상이한 소스로부터 수신된 다양한 입력을 수집하고 선택된 디버그 신호를 제1 내부 상호연결(internal interconnect)(138)을 통하여 송출하도록 구성된 중앙 디버그 유닛(Central Debug Unit: CDU)(125)을 포함한다. 동작 동안에, 하드웨어(HW), 소프트웨어(SW) 및 펌웨어(FW) 디버그 트레이스를 포함하는 디버그 신호가 CDU(125)로 발신된다. 본 문서에서 사용되는 바와 같이, "트레이스"(trace)는 원하는 온칩(on-chip) 위치로부터 획득된 신호 또는 다른 정보의 스트리밍 세트(streaming set)를 나타내며, 시스템 활동을 관측하려고 소정의 사용자, 예를 들어 애플리케이션 개발자, 애플리케이션 프로그램, 또는 외부 장비가 보기 위해 저장되어 나중에 인출되거나 실시간으로 볼 수 있는 활동에 관한 정보를 일반적으로 제공할 수 있다. 프로세서의 다양한 기능적 유닛으로부터 수신된 내부 디버그 신호는 개별 블록 내의 블록 레벨(block level) 선택기, 관심 있는 디버그 블록 간의 비코어 로직(uncore logic)과 같은 중간 블록 내의 중간 레벨(mid-level) 선택기, 그리고 CDU(125) 내의 최종(final) 선택기를 사용하여 취합될(collated) 수 있음에 유의한다. 저전력 디버그에 관한 신호는 블록 내의 AON 도메인 내에 두어지고 AON 신호로서 발신되어 저전력 디버그를 가능하게 할 수 있다. 대안적으로, 위에서 기술된 바와 같이, 이들 신호는 또한 (제조 테스트/디버그 후에 퓨즈 오프되거나(fused off) 아니면 대안 수단에 의해 제조에서 비활성화될 것일 수 있는) 디버그 도메인 내에 두어질 수 있다.
실시예에서, 중앙 디버그 유닛(125)의 적어도 일부분이 AON 전력 도메인 내에서 유지될 수 있는데 필요한 로직만이 이 도메인에 의해 전력공급을 받아, 디버그 로직에 의한 전력 소모를 최소화한다. 실시예에서, CDU(125)는 중앙화된(centralized) 패킷화기(packetizer), 트리거 로직(trigger logic) 및 압축 로직(compression logic)을 포함한다. 물론, 다른 실시예에서 추가적인 로직이 CDU(125) 내에 존재할 수 있음을 이해해야 한다. 실시예에서, CDU(125)로부터 출력된 이들 디버그 신호는 선택 로직(selection logic)(160) 및 트레이스 병합 유닛(trace merge unit)(140)을 포함하는 여러 목적지에, 도시된 바와 같이, 제공될 수 있는 최소로 처리된(minimally processed) 디버그 신호의 세트일 수 있다.
또한 도시된 바와 같이, 트레이스 병합 유닛(140)은, 실시예에서 실시간 명령어 트레이스(Real-Time Instruction Trace: RTIT) 신호(그리고/또는 실시간 데이터 트레이스 신호)의 형태 또는 인텔(Intel®) 프로세서 트레이스(Processor Trace: PT) 트레이스 또는 다른 트레이스 기술과 같은 디버그 신호의 사유(proprietary) 형태를 취할 수 있는 유입하는(incoming) 기능적 디버그 신호를 또한 수신한다. 이를 위하여, 트레이스 병합 유닛(140)은 내부 디버그 신호 및 기능적 디버그 신호 또는 다른 코어 디버그 신호 간의 중재를 수행하여서 유입 신호의 이들 상이한 경로 간을 중재하고 선택된 신호를 트레이스 병합 유닛(140)의 나머지 부분에 제공하도록 구성된 중재 로직(arbitration logic)(145)을 포함한다.
일반적으로, 트레이스 병합 유닛(140)은 타임스탬프 정보(time stamp information)를 추가함으로써 CDU 출력을 또한 처리하도록 구성된다. 다음으로, 트레이스 병합 유닛(140)은 이 타임스탬핑된(time stamped) 디버그 트레이스 정보를 하나 이상의 프로토콜과 호환가능한 방식으로 스트리밍한다(stream). 예컨대, 실시예에서 트레이스 병합 유닛(140)은 모바일 산업 프로세서 인터페이스 연합(Mobile Industry Processor Interface (MIPI) Alliance) 시스템 트레이스 프로토콜(System Trace Protocol: STP)과 호환가능할 수 있다. 다른 실시예에서, 트레이스 병합 유닛(140)은 트레이스 래퍼 프로토콜(trace wrapper protocol), ARM 임베딩된 트레이스 매크로셀(Embedded Trace Macrocell: ETM) 또는 다른 프로토콜을 구현하는 ARM 트레이스 퍼넬(ARM trace funnel)과 호환가능할 수 있다. 물론, RTIT 또는 인텔(Intel®) PT와 같은 다른 프로토콜이 사용될 수 있다. 트레이스 병합 유닛(140)을 통하여 내부 디버그 신호를 제공함으로써, 그러한 내부 디버그 신호는 타임스탬핑되고 소정의 프로토콜, 가령 MIPI STP 프로토콜로 발신된다. 다음으로, 이들 처리되고 타임스탬핑된 신호는 프로세서로부터 출력되고 수신되며 로직 분석기(logic analyzer), 트레이스 포트 분석기(Trace Port Analyzer: TPA), 또는 다른 도구(발송되는 타임스탬핑된 디버그 스트림을 해독함(decipher))와 같은 소정의 디버그 도구(debug tool)에 의해 사용될 수 있다. 그러한 도구에서, 이들 신호는 디버그를 수행하기 위해 해독되고 시각화될(visualized) 수 있다. 더 나아가, 트레이스를 타임스탬핑하는 것(time stamping)은 신호 간의 시간-상관(time-correlation)을 가능하게 하여서, 디버그의 편의성을 제공한다.
이들 처리된 디버그 신호는 상호연결(interconnect)(148)을 통하여 병렬 트레이스 인터페이스(Parallel Trace Interface: PTI) 로직(150)에 제공되는데, 이는 그 신호를 또한 처리할 수 있다. 실시예에서, PTI 로직(150)은 수신된 디버그 정보를 병렬화하도록(parallelize) 구성된다. 병렬화의 폭(width)은 출력을 위해 선택된 핀(pin) 또는 다른 출력 경로(output path)의 개수에 따라서 제어될 수 있음(가령, 1, 2, 4, 8 또는 16)에 유의한다. 처리된 신호는 상호연결(155)을 통하여 선택 로직(160)에 제공된다. 일반적으로, 선택 로직(160)은 상호연결(155)을 통하여 수신된 처리된 신호나 아니면 상호연결(138)을 통하여 수신된 더욱 최소로 처리된 디버그 신호를 선택하고, 선택된 신호를 상호연결(165)을 통하여 출력 유닛(170)에 출력하도록 구성된다. 일반적으로, 출력 유닛(170)은 출력 경로를 온다이(on-die) 상호연결을 통하여 출력 연결의 하나 이상의 세트(이는 실시예에서 SoC의 전용 출력 핀, 입출력(Input/Output: I/O) 핀, 그리고/또는 온칩 정적 랜덤 액세스 메모리(on-chip static random access memory)일 수 있는 시스템 메모리에 커플링된(coupled) 핀 또는 다른 상호연결에 대응할 수 있음)에 제공한다. 실시예에서, 이들 출력 연결은 출력 핀(1800 내지 180n)의 제1 세트 및 출력 핀(1900 내지 190n)의 제2 세트를 포함할 수 있다. 실시예에서, 제1 출력 핀(180)은 범용 IO(General Purpose IO: GPIO) 핀일 수 있고 제2 출력 핀(190)은 PTI 핀과 같은 다른 유형의 핀 연결의 것일 수 있다. 실시예에서, 어떤 출력 경로는, 개방 섀시(open-chassis)의 디버그 외에도 폼 팩터 디버그(Form Factor Debug: FFD) 또는 폐쇄 섀시 디버그(closed-chassis debug)를 가능하게 하는 폐쇄 섀시 시스템의 마이크로 시큐어 디지털(Secure Digital: SD) 핀에, 가령 PTI 핀을 통하여, 커플링될 수 있다.
몇몇 실시예에서, 병렬화 대신에, 트레이스 병합 유닛(140)으로부터의 처리된 디버그 신호는 고속 직렬 스트림(high-speed serial stream)을 통하여 목적지에 발신될 수 있다. 이 경우에, 트레이스 데이터는 CDU(125)에 의해 출력된 트레이스 데이터 선택 신호(Trace Data Sel signal)에 응답하여 PTI 로직(150)의 출력으로부터든 또는 트레이스 병합 유닛(140)으로부터든 선택 유닛(110) 내에서 선택될 수 있다. 실시예에서, 선택 로직(110)을 위한 디폴트(default)에 의한 선택은 디스플레이 제어기(display controller)(105)의 출력을 선택하는 것이고, 디버그에 기반하여, 그 선택은 디버그 트레이스 데이터를 선택하도록 변경된다. 이 선택된 출력은 디스플레이 로직(112)에 제공되는데, 이는 병렬 트레이스 데이터를 직렬 스트림으로 변환하고 프로토콜 정보를 추가하여 고속 직렬 I/O 인터페이스(114)를 구동한다. 도 1에서 이 특정한 고수준 뷰(high level view)로써 도시되나, 본 발명의 범주는 이 점에 한정되지 않음을 이해해야 한다.
이제 도 2를 참조하면, 프로세서(100)의 추가 세부사항이 도시된다. 더욱 구체적으로, 도 2는 추가적인 SoC 회로의 맥락에서 도 1에 전술된 바와 같은 디버그 회로를 포함하는 SoC의 전반적인 고수준 뷰를 제공한다. 도 2는, 실시예에서 SoC의 주 중앙 처리 유닛(Central Processing Unit: CPU)일 수 있고 실시예에서 하나 이상의 명령어 세트 아키텍처의 명령어를 실행하도록 구성된 고급 비순차 실행 코어(advanced out-of-order execution core)일 수 있는 코어(106)를 도시한다. 다음으로, 코어(106)는 노스 유닛(North unit)(108)에 커플링되는데, 이는 실시예에서 다양한 인터페이스 및 다른 제어 회로, 예를 들어 메모리 제어기 및/또는 다른 인터페이스 회로를 포함할 수 있다. 보여진 바와 같이, 노스 유닛(108)은 DFx 유닛(120)에 커플링된다.
추가로, 웨스트 유닛(West unit)(111)이 또한 DFx 유닛(120)에 커플링된다. 다양한 실시예에서, 웨스트 유닛(111)은 하나 이상의 처리 유닛, 예를 들어 하나 이상의 코프로세서(coprocessor), 그래픽 프로세서(graphics processor), 고정 기능 유닛(fixed function unit) 또는 기타 등등을 포함한다. 더 나아가, 사우스 유닛(South unit)(115)은 추가적인 또는 상이한 기능적 유닛, 인터페이스 유닛 또는 기타 등등을 포함할 수 있고, 다음으로 또한 DFx 유닛(120)에 커플링된다. 트레이스 수집 및 통신에 관한 추가적인 세부사항이 사우스 유닛(115) 내에서 보여짐에 유의한다. 더욱 구체적으로, 다양한 트레이스가 사우스 유닛(115) 내의 트레이스 수집 유닛(118)에 제공된다.
도시된 실시예에서, 메시지 트레이스는 소프트웨어 트레이스, 펌웨어 트레이스 및 실시예에서 AON 트레이스를 포함할 수 있는 하드웨어 트레이스를 포함할 수 있는데, SoC가 위치된 소정의 플랫폼이 저전력 모드(low power mode) 내에 있는 경우라도, 이들 트레이스는 전력 온된(powered on) 회로에 관련된다는 점에서 그러하다. 예컨대, 스마트폰, 태블릿, 사물 인터넷(Internet of Things: IoT) 디바이스 또는 기타 등등과 같은 모바일 플랫폼의 맥락에서, 플랫폼은 전력 공급을 받지만 사용 중이지 않되(가령, 그것의 디스플레이는 오프(off)되고 어떤 사용자 상호작용(user interaction)도 일어나지 않음), SoC의 어떤 회로는 가령 셀룰러 시스템(cellular system)과 같은 무선 통신 시스템의 기지국(base station)으로의 연결성(connectivity)을 유지하도록 상시 온(always on)인 채로 있다.
실시예에서, 트레이스 수집 유닛(118)은 조인트 테스트 액션 그룹(Joint Test Action Group: JTAG) 유닛(119)(이는 가령 오프칩(off-chip)(그리고 로직 분석기와 같은 오프플랫폼(off-platform) 소스)로부터, 가령 다음으로 JTAG 유닛(119)에 커플링된 SoC의 JTAG 인터페이스를 통하여, 제어 신호를 수신함)을 통하여 수신된 신호에 의해 제어될 수 있다. 다른 실시예에서, 제어 신호는 임의의 다른 메모리 맵핑된 입출력(Memory Mapped Input/Output: MMIO) 액세스 메커니즘으로부터 (가령, 디버그 버틀러(debug butler), 직렬 배선 디버그(serial wire debug), I2C, 또는 기타 등등을 통하여) 수신될 수 있다. 따라서, 트레이스 수집 유닛(118) 내에 수집된 다양한 트레이스 신호는, 본 문서에 기술된 바와 같이 처리하기 위해, DFx 유닛(120)에 그리고 더욱 구체적으로 도 1의 CDU(125)에 대응할 수 있는 디버그 로직에 제공된다. 도 2에 도시된 디버그 회로의 나머지는 도 1에 대해 위에서 논의된 것에 일반적으로 대응할 수 있음에 유의한다. 도 2 실시예에서 이런 고수준으로 도시되나, 본 발명의 범주는 이 점에 한정되지 않음을 이해해야 한다.
이제 도 3을 참조하면, 본 발명의 실시예에 따른 트레이스 수집 유닛의 추가 세부사항이 도시된다. 트레이스 수집 유닛(200)은 도 2의 트레이스 수집 유닛(118)에 일반적으로 대응할 수 있음에 유의한다. 다수의 그러한 트레이스 수집 유닛이 가령 프로세서의 상이한 클러스터(cluster) 또는 유닛 내에 위치될 수 있음을 이해해야 한다. 보여진 바와 같이, 트레이스 수집 유닛(200)은 소프트웨어 메시지(210), 펌웨어 메시지(220), 내부 신호 다중화기(multiplexer)(또는 스위칭되는(switched) 전력 도메인) 소스(230) 및 상시 온(또는 스위칭되지 않는(unswitched) 전력 도메인) 소스(240)를 포함하는 복수의 소스로부터 유입 트레이스 정보를 수신하도록 구성된다. 선택 유닛(245), 가령 다중화기가 소스(230) 및 소스(240) 간에 선택할 수 있음에 유의한다.
이들 소스로부터의 다양한 트레이스 정보는 중개 저장(intervening storage)을 위해 대응하는 트레이스 버퍼(215, 225, 235)에 제공될 수 있다. 마지막으로, 선택 로직(250), 가령 다른 다중화기는 출력 경로(260), 가령 중앙 디버그 유닛 또는 다른 목적지에 커플링되는 내부 상호연결을 통한 출력을 위해 대응하는 트레이스를 선택하도록 구성 입력(configuration input)을 통하여 수신된 구성 신호에 응답하여 제어될 수 있다. 도 3에서 이 한정된 회로로써 도시되나, 본 발명의 범주는 이 점에 한정되지 않음을 이해해야 한다.
실시예에서, 하드웨어 트레이스는, 내부 신호가 다중화기 입력을 통하여 가관측성을 위해 다중화기 트리(multiplexer tree)에 연결된 내부 디버그 신호 다중화기 아키텍처를 통해서든, 또는 패브릭 트레이스 후크(Fabric Trace Hook: FTH)를 통해서든, 클러스터 레벨(cluster level) 내에서 수집될 수 있다. 그러한 하드웨어 트레이스는 프로토콜 레벨에 있거나 저전력 또는 전환 디버그에 관한 것일 수 있음에 유의한다. 이들 HW 트레이스는 AON 영역으로부터 소싱되거나(sourced) 그렇지 않을 수 있지만, 여하 간에 신호는 AON 영역 내의 내부 디버그 다중화기에 발신되는데, 이는 (세이브 및 복원(save and restore)으로도 알려진) 저장 및 리플레이(store and replay)의 필요성을 방지할 수 있다. 저장 및 리플레이는 대신에 전력이 (전력 절감 목적으로) 오프로 되기 전에 머신(machine)의 상태가 세이브되어야 하고 머신에 전력이 도로 투입된 후 상태가 복원되는 경우에 사용된다.
실시예에서, 소프트웨어 트레이스는, 가령 다중화기 선택을 사용하여, 동적으로 소프트웨어 마스터(software master)를 선택하기 위해 클러스터 내에서 유연하게(flexibly) 취급될 수 있다. 몇몇 경우에, 만일 디버그를 위해 필요하면, 여러 소프트웨어 마스터가 인터리빙될(interleaved) 수 있다. 위에서 논의된 바와 같이, 실시예는 펌웨어(FW) 트레이스의 취급을 또한 가능케 하는데, 여기에서 그러한 트레이스는 AON 로직이 디버그를 위해 이용가능한바 실시간으로 스트리밍될 수 있다.
실시예를 사용하여, 저전력 진입/퇴장 또는 상이한 전력 상태 간의 전환에 관련된 디버그 정보가 획득되고 출력될 수 있다. 이와 같이, 실시예는 SoC 또는 다른 IC의 출력 포트에서 관측가능하도록 될 HW, SW, FW 및 내부 신호와 같은 이벤트뿐만 아니라 모든 종류의 트레이스의 가관측성을 가능케 한다.
환언하면, 실시예는 정규 런타임(run time) 디버그뿐만 아니라, 초기 디버그, 저전력 진입/퇴장 전환을 비롯하여 그러나 이에 한정되지 않고서, 항상 하드웨어(트랜잭션 레벨(transaction level) 및 신호 레벨(signal level)), 소프트웨어 및 펌웨어 트레이스의 가관측성을 제공하고, 또한 신호 레벨 가관측성 및 전환 레벨(transition level) 가관측성을 제공한다. 더 나아가, 실시예는 기능적 유닛 디버그 신호 외에도, 내부 디버그 스트림을 처리하기 위해 STM 블록을 재사용함으로써 내부 디버그 HW, SW 및 FW 트레이스의 타임스탬핑(time stamping)을 가능케 한다.
이와 같이, 실시예는, 효과적인 디버그를 위한 출력 대역폭을 수용하고자 디버그 데이터를 트리거링(triggering), 필터링(filtering), 패킷화(packetizing), 압축하는(compressing) 기능과 함께, 모든 유형의 디버그 소스(가령, 하드웨어, 소프트웨어 및 펌웨어)의 완전한 공통적, 효율적이고 스케일가능한(scalable) 디버그 기능을 가능하게 한다. 또한, 실시예에 따른 디버그 아키텍처는 일부 또는 모든 디버그 로직을 별개의 디버그 전력 평면(debug power plane) 상에 둠으로써 생산 부문에서 전력을 절감할 수 있는데, 여기에서 이 평면으로의 전력은 오프로 될 수 있되, 가령 컴포넌트 레벨(component level)에서 전력을 절감하기 위해 디버그 로직을 전력 오프하는 퓨즈(fuse) 또는 어떤 다른 수단을 통해서인데, 이는 결국 오버라이드 기능(override capability)으로써 플랫폼 전력도 절감하여 그것으로 하여금 반환된 부분의 디버그를 위해 전력공급을 받을 수 있게 하는 것이다.
추가로, (가령, S0ix와 같은 ACPI 시스템 저전력 상태 동안에) 저전력 디버그를 수행하는 데에 실시예가 사용될 수 있으므로, 로직을 AON 또는 디버그 전력 도메인 중 하나 내에 둠으로써 디스플레이 포트(Display Port), PCIe, USB 또는 Type-C 커넥터(connector)를 포함하는 고속 직렬 트레이스 포트와 같은 다른 위치에 출력 경로가 커플링될 수 있다. 몇몇 경우에, 트레이스 정보는 폐쇄 섀시 디버그를 위해 USB 프로토콜에 따라 직접 연결 인터페이스(Direct Connect Interface: DCI) 또는 임베딩된 DFx 인터페이스를 통하여 또한 통신될 수 있다. 그러므로 실시예는, 무엇보다도, 저전력 모바일 SoC 및 클라이언트/서버 IC 및 SoC를 포함하는 많은 상이한 종류의 IC의 디버그를 위해 사용될 수 있다.
이제 도 4를 참조하면, 본 발명의 실시예에 따른 방법의 흐름도가 도시된다. 더욱 구체적으로, 도 4의 방법(300)은 펌웨어 실행 동안 SoC의 디버그 로직을 사용하여 수행되는 디버그 동작에 관련된다. 도 4에 도시된 특정한 구현은 부트전(pre-boot) 펌웨어 동작에 관한 것이나, 본 발명의 범주는 그러한 환경에 한정되지 않고 펌웨어 기반 디버그는 SoC를 포함하는 플랫폼의 정상적인 시스템 동작 동안에 동일하게 수행될 수 있음을 이해해야 한다.
보여진 바와 같이, 방법(300)은 SoC의 AON 부분 상에 전력공급을 함(블록(310))으로써 시작한다. 동작 중 이 시점에서, 플랫폼 및 SoC는 온전히 기능적이지는 않기 때문에, SoC의 제한된 부분만, 다시 말해 AON 전력 도메인이 전력 온된다. 그러므로 디버그 회로의 부분이 AON 전력 도메인 내에 위치된 실시예에서, 이들 부분도 또한 전력 온된다. 디버그 회로가 대신 그 자신의 디버그 전력 도메인 내에 포함된 다른 실시예에서, 이 디버그 전력 도메인은 또한 전력 온될 수 있다.
제어는 다음에 블록(320)으로 넘어가는데 여기서 디버그 회로는 펌웨어 및 하드웨어 트레이스 정보를 수집하도록 구성될 수 있다. 그러한 구성은, 다중 레벨(multi-level) 다중화기 아키텍처의 상이한 레벨과 같은 다양한 선택기로 하여금 그러한 하드웨어 및 펌웨어 트레이스 정보를 제공하도록 구성되게 하기 위해, SoC의 테스트 인터페이스를 통하여, 가령 JTAG 인터페이스를 통하여 수행될 수 있다.
다음에, 제어는 블록(330)으로 넘어가는데 여기서 SoC 동작은, 기본 입출력 시스템(Basic Input/Output System: BIOS)의 상이한 모듈과 같은, 가령 통합된 확장가능 펌웨어 인터페이스(Unified Extensible Firmware Interface: UEFI) 펌웨어에 따른, 플랫폼 펌웨어의 적어도 일부분이 실행되는 부트전 환경에서 시작한다. 그러한 동작 동안에, 펌웨어 및 하드웨어 트레이스 정보는 디버그 회로 내에서 처리된다(블록(340)). 그러한 처리에 응답하여, 처리된 정보는 선택된 출력 경로를 통하여 SoC로부터 스트리밍될 수 있다(블록(350)). 예컨대, 프로토타입(prototype) 형태로 플랫폼을 개발하는 동안과 같은 몇몇 상황에서, 트레이스 정보가 GPIO 핀의 세트(또는 그러한 핀의 일부분)를 통하여 외부로 스트리밍되거나, 나중의 추출 및 디버그를 위해 메모리에 발신되거나 디버그 목적으로 대안적인 핀을 통하여 발신될 수 있도록 개방 섀시 배치(open chassis arrangement)가 존재할 수 있다. 대신에 플랫폼 설계가 더 진척되고 온전히 기능적인 플랫폼이 존재하는 경우, 폐쇄 섀시 디버그 동작이 일어날 수 있고, 트레이스 정보는 다른 출력 경로를 통하여, 예를 들어 하나 이상의 마이크로 SD 핀 또는 다른 핀, 예를 들어 최종 제품 상에서 이용가능한 HDMI, USB 또는 대안적인 핀의 세트를 통하여, 외부로 스트리밍될 수 있다.
여전히 도 4를 참조하면, 플랫폼 디버그 동안에, 스트리밍된 트레이스 정보에 기반하여, 에러(error)가 검출되는지가 판정될 수 있다(마름모(360)). 만일 그렇지 않은 경우, 플랫폼은 부트 환경(boot environment)으로 전환할 수 있다(블록(365)). 펌웨어 트레이스 정보를 획득하는 대신, (어떤 하드웨어 트레이스 정보 외에도) 소프트웨어 트레이스 정보가 획득될 수 있도록, (가령, 소정의 OS에 따른) 부트 환경으로 옮길 시에 디버그 회로의 추가적인 구성이 일어날 수 있음에 유의한다.
만일 대신에 하나 이상의 에러가 부트전 환경 동안에 검출되는 경우, 제어는 블록(370)으로 넘어가는데 여기서 에러 검출 이벤트(error detection event)가 타임스탬핑될 수 있다. 실시예에서, 그러한 타임스탬프는, 타임스탬프를 포함하는 포맷으로 수신될 수 있는 수신된 스트리밍 트레이스 정보의 타임스탬프 정보를 사용하여 부분적으로 유발될 수 있다. 마지막으로 블록(380)에서, 가령 플랫폼이 커플링된 트레이스 분석 도구의 사용자에게, 타임스탬프 에러 검출 이벤트가 보고될 수 있다. 도 4의 실시예에서 이 고수준으로 도시되나, 본 발명의 범주는 이 점에 한정되지 않음을 이해해야 한다.
이제 도 5를 참조하면, 본 발명의 실시예에 따른 시스템의 블록도가 도시된다. 도 5의 실시예에서, 시스템(900)은, 각각 독립적인 동작 전압 및 동작 주파수에서 동작하도록 제어될 수 있는 여러 도메인을 포함하는 SoC일 수 있다. 구체적인 예시적인 예로서, 시스템(900)은 인텔 아키텍처 코어(Intel® Architecture Core™) 기반 SoC, 예를 들어 i3, i5, i7, 또는 인텔 사(Intel Corporation)로부터 입수가능한 다른 그러한 프로세서일 수 있다. 그러나, 다른 저전력 SoC 또는 프로세서, 예를 들어 캘리포니아주 서니베일(Sunnyvale)의 어드밴스트 마이크로 디바이스 사(Advanced Micro Devices, Inc.: AMD)로부터 입수가능한 것, ARM 홀딩스 사(ARM Holdings, Ltd.) 또는 이의 실시권자(licensee)로부터의 ARM 기반 설계 또는 캘리포니아주 서니베일의 MIPS 테크놀로지스 사(MIPS Technologies, Inc.) 또는 그의 실시권자 또는 사용권자(adopter)로부터의 MIPS 기반 설계가 애플(Apple) A7 프로세서, 퀄컴(Qualcomm) 스냅드래곤(Snapdragon) 프로세서, 또는 텍사스 인스트루먼츠(Texas Instruments) OMAP 프로세서와 같은 다른 실시예에서 대신 존재할 수 있다. 그러한 SoC는 스마트폰, 태블릿 컴퓨터, 패블릿 컴퓨터, 울트라북(Ultrabook™) 컴퓨터, IoT 디바이스, 착용가능물, 또는 다른 휴대가능 컴퓨팅 디바이스와 같은 저전력 시스템에서 사용될 수 있다.
도 5에 도시된 고수준 뷰에서, SoC(900)는 복수의 코어 유닛(9100-910n)을 포함한다. 각각의 코어 유닛은 하나 이상의 프로세서 코어(processor core), 하나 이상의 캐시 메모리(cache memory) 및 다른 회로를 포함할 수 있다. 각각의 코어 유닛(910)은 하나 이상의 명령어 세트(가령, (더 새로운 버전과 함께 추가된 몇몇 확장을 갖는) x86 명령어 세트), MIPS 명령어 세트, (NEON과 같은 선택적인 추가적 확장을 갖는) ARM 명령어 세트 또는 다른 명령어 세트 또는 이의 조합을 지원할 수 있다. 코어 유닛 중 일부는 (가령, 상이한 설계의) 이종 리소스일 수 있다. 추가로, 각각의 그러한 코어는 실시예에서 공유된 레벨(L2) 캐시 메모리일 수 있는 캐시 메모리(도시되지 않음)에 커플링될 수 있다. 비휘발성 스토리지(non-volatile storage)(930)는 다양한 프로그램 및 다른 데이터를 저장하는 데에 사용될 수 있다. 예컨대, 이 스토리지는 마이크로코드(microcode), 부트 정보, 예를 들어 BIOS, 다른 시스템 소프트웨어 또는 기타 등등의 적어도 일부를 저장하는 데에 사용될 수 있다.
각각의 코어 유닛(910)은 SoC의 추가적인 회로로의 상호연결을 가능하게 하는 버스 인터페이스 유닛(bus interface unit)과 같은 인터페이스를 또한 포함할 수 있다. 실시예에서, 각각의 코어 유닛(910)은, 다음으로 메모리 제어기(935)에 커플링되는 주요 캐시 일관성 온다이 상호연결(primary cache coherent on-die interconnect)로서 작용할 수 있는 일관성 패브릭(coherent fabric)에 커플링된다. 다음으로, 메모리 제어기(935)는 DRAM(도 5에서 예시의 편의를 위해 도시되지 않음)과 같은 메모리와의 통신을 제어한다.
코어 유닛 외에도, 가능하게는 그래픽 프로세서 상에서의 일반 동작(이른바 GPGPU 동작)을 실행할 뿐만 아니라 그래픽 처리를 수행하는 하나 이상의 그래픽 처리 유닛(Graphics Processing Unit: GPU)을 포함할 수 있는 적어도 하나의 그래픽 유닛(graphics unit)(920)을 포함하여, 추가적인 처리 엔진이 프로세서 내에 존재한다. 추가로, 적어도 하나의 이미지 신호 프로세서(image signal processor)(925)가 존재할 수 있다. 신호 프로세서(925)는 하나 이상의 포착 디바이스(capture device)(SoC의 내부이든 또는 오프칩(off-chip)이든)로부터 수신된 유입 이미지 데이터를 처리하도록 구성될 수 있다.
다른 가속기(accelerator)가 또한 존재할 수 있다. 도 5의 예시에서, 비디오 코더(video coder)(950)는 비디오 정보의 인코딩(encoding) 및 디코딩(decoding)을 포함하는 코딩 동작, 가령 고선명 비디오 콘텐트(high definition video content)를 위한 하드웨어 가속 지원을 제공하는 것을 수행할 수 있다. 디스플레이 제어기(955)는 또한 시스템의 내부 및 외부 디스플레이에 대한 지원을 제공하는 것을 포함하는 디스플레이 동작을 가속하기 위해 제공될 수 있다. 추가로, 디버그 유닛(945)이 존재할 수 있고 이는 본 문서에서 기술된 바와 같은 저전력 디버그 아키텍처를 포함할 수 있다. 유닛 각각은 그것의 전력 소모가, 다양한 전력 관리 기법을 수행하는 제어 로직을 포함할 수 있는 전력 관리기(power manager)(940)를 통하여 제어되게 할 수 있다.
몇몇 실시예에서, SoC(900)는 다양한 주변기기 디바이스가 커플링될 수 있는 일관성 패브릭에 커플링된 비일관성 패브릭(non-coherent fabric)을 더 포함할 수 있다. 하나 이상의 인터페이스(960a 내지 960d)가 하나 이상의 오프칩 디바이스와의 통신을 가능하게 한다. 그러한 통신은 다른 유형의 통신 프로토콜보다도 PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI와 같은 다양한 통신 프로토콜에 따른 것일 수 있다. 도 5의 실시예에서 이런 고수준으로 도시되나, 본 발명의 범주는 이 점에 한정되지 않음을 이해해야 한다.
이제 도 6을 참조하면, 예시적 시스템(이로써 실시예가 사용될 수 있음)의 블록도가 도시된다. 보여진 바와 같이, 시스템(1200)은 스마트폰 또는 다른 무선 통신기(wireless communicator)일 수 있다. 기저대역 프로세서(baseband processor)(1205)는 시스템으로부터 송신되거나 시스템에 의해 수신될 통신 신호에 관해서 다양한 신호 처리를 수행하도록 구성된다. 다음으로, 기저대역 프로세서(1205)는 애플리케이션 프로세서(application processor)(1210)에 커플링되는데, 이는 많은 잘 알려진 소셜 미디어(social media) 및 멀티미디어(multimedia) 앱과 같은 사용자 애플리케이션 외에도, OS 및 다른 시스템 소프트웨어를 실행하는 시스템의 주된 SoC일 수 있다. 애플리케이션 프로세서(1210)는 디바이스를 위한 다양한 다른 컴퓨팅 동작을 수행하도록 또한 구성될 수 있고, 본 문서에 기술된 바와 같은 저전력 디버그 아키텍처를 포함할 수 있다.
다음으로, 애플리케이션 프로세서(1210)는 사용자 인터페이스(user interface)/디스플레이(1220), 가령 터치 스크린 디스플레이(touch screen display)에 커플링될 수 있다. 추가로, 애플리케이션 프로세서(1210)는 비휘발성 메모리, 즉 플래시 메모리(flash memory)(1230) 및 시스템 메모리, 즉 동적 랜덤 액세스 메모리(Dynamic Random Access Memory: DRAM)(1235)를 포함하는 메모리 시스템에 커플링될 수 있다. 또한 도시된 바와 같이, 애플리케이션 프로세서(1210)는 비디오 및/또는 정지 이미지를 기록할 수 있는 하나 이상의 이미지 포착 디바이스와 같은 포착 디바이스(1240)에 또한 커플링된다.
여전히 도 6을 참조하면, 가입자 신원 모듈(subscriber identity module) 그리고 가능하게는 보안 스토리지(secure storage) 및 암호프로세서(cryptoprocerssor)를 포함하는 범용 집적 회로 카드(Universal Integrated Circuit Card: UICC)(1240)가 또한 애플리케이션 프로세서(1210)에 커플링된다. 시스템(1200)은 애플리케이션 프로세서(1210)에 커플링될 수 있는 보안 프로세서(security processor)(1250)를 더 포함할 수 있다. 가속도계(accelerometer) 및 다른 환경적 정보와 같은 다양한 감지된 정보(sensed information)의 입력을 가능하게 하기 위해 애플리케이션 프로세서(1210)에 복수의 센서(1225)가 커플링될 수 있다. 오디오 출력 디바이스(1295)는, 가령 음성 통신, 재생되는 또는 스트리밍 오디오 데이터 및 기타 등등의 형태로, 소리를 출력하기 위해 인터페이스를 제공할 수 있다.
또한 예시되는 바와 같이, 근접장 통신(Near Field Communication: NFC) 비접촉(contactless) 인터페이스(1260)가 제공되는데 그것은 NFC 안테나(1265)를 통하여 NFC 근접장 내에서 통신한다. 도 6에서 별개의 안테나가 도시되나, 몇몇 구현에서 다양한 무선 기능을 가능하게 하기 위해 하나의 안테나 또는 안테나의 상이한 세트가 제공될 수 있음을 이해해야 한다.
전력 관리 집적 회로(Power Management Integrated Circuit: PMIC)(1215)는 플랫폼 레벨 전력 관리를 수행하기 위해 애플리케이션 프로세서(1210)에 커플링된다. 이를 위하여, PMIC(1215)는 원하는 바와 같이 어떤 저전력 상태에 진입하기 위해 전력 관리 요청을 애플리케이션 프로세서(1210)에 발행할(issue) 수 있다. 나아가, 플랫폼 제약에 기반하여, PMIC(1215)는 시스템(1200)의 다른 컴포넌트의 전력 레벨을 또한 제어할 수 있다.
통신이 송신되고 수신될 수 있게 하기 위하여, 다양한 회로가 기저대역 프로세서(1205) 및 안테나(1290) 사이에 커플링될 수 있다. 구체적으로, 무선 주파수(Radio Frequency: RF) 송수신기(1270) 및 무선 로컬 영역 네트워크(Wireless Local Area Network: WLAN) 송수신기(1275)가 존재할 수 있다. 일반적으로, RF 송수신기(1270)는 3G 또는 4G 무선 통신 프로토콜과 같은 소정의 무선 통신 프로토콜에 따라, 예를 들어 코드 분할 다중 액세스(Code Division Multiple Access: CDMA), 모바일 통신용 전역 시스템(Global System for Mobile communication: GSM), 롱텀 에볼루션(Long Term Evolution: LTE) 또는 다른 프로토콜에 따라 무선 데이터 및 호(call)를 수신하고 송신하는 데에 사용될 수 있다. 추가로 GPS 센서(1280)가 존재할 수 있다. 무선 신호, 가령 AM/FM 및 다른 신호의 수신 또는 송신과 같은 다른 무선 통신이 또한 제공될 수 있다. 추가로, WLAN 송수신기(1275)를 통하여, 로컬 무선 통신, 예를 들어 블루투스(Bluetooth™) 표준 또는 IEEE 802.11 a/b/g/n과 같은 IEEE 802.11 표준에 따른 것이 또한 실현될 수 있다.
도 7을 이제 참조하면, 다른 예시적 시스템(이로써 실시예가 사용될 수 있음)의 블록도가 도시된다. 도 7의 예시에서, 시스템(1300)은 태블릿 컴퓨터, 2:1 태블릿, 패블릿 또는 다른 컨버터블(convertible) 또는 독립형(standalone) 태블릿 시스템과 같은 모바일 저전력 시스템일 수 있다. 예시된 바와 같이, SoC(1310)가 존재하며 디바이스를 위한 애플리케이션 프로세서로서 동작하도록 구성될 수 있다. SoC(1310)는 본 문서에 기술된 바와 같은 저전력 디버그 아키텍처를 포함할 수 있다.
다양한 디바이스가 SoC(1310)에 커플링될 수 있다. 도시된 예시에서, 메모리 서브시스템(memory subsystem)은 SoC(1310)에 커플링된 플래시 메모리(1340) 및 DRAM(1345)를 포함한다. 추가로, 터치 패널(1320)의 디스플레이 상의 가상 키보드(virtual keyboard)의 제공을 포함하여, 터치를 통한 사용자 입력 및 디스플레이 기능을 제공하기 위해 SoC(1310)에 터치 패널(1320)이 커플링된다. 유선 네트워크 연결성을 제공하기 위하여, SoC(1310)는 이더넷 인터페이스(Ethernet interface)(1330)에 커플링된다. 다양한 주변기기 디바이스와의 인터페이스 접속(interfacing)을 가능하게 하기 위해 SoC(1330)에 주변기기 허브(peripheral hub)(1325)가 커플링되는데, 예를 들어 다양한 포트 또는 다른 커넥터 중 임의의 것에 의해 시스템(1300)에 커플링될 수 있다.
SoC(1310) 내의 내부 전력 관리 회로 및 기능에 더하여, 가령 AC 어댑터(1395)를 통하여 AC 전력이나 배터리(1390)에 의해 시스템에 전력공급이 되는지에 기반하여, 플랫폼 기반 전력 관리를 제공하기 위해 SoC(1310)에 PMIC(1380)가 커플링된다. 이 전력 소스(power source) 기반 전력 관리에 더하여, PMIC(1380)는 환경적 및 사용 조건에 기반하여 플랫폼 전력 관리 활동을 또한 수행할 수 있다. 더 나아가, PMIC(1380)는 SoC(1310) 내의 다양한 전력 관리 행동을 야기하기 위해 SoC(1310)에 제어 및 상태 정보를 통신할 수 있다.
여전히 도 7을 참조하면, 무선 기능을 가능케 하기 위하여, WLAN 유닛(1350)이 SoC(1310)에 그리고 다음으로는 안테나(1355)에 커플링된다. 다양한 구현에서, WLAN 유닛(1350)은, IEEE 802.11 프로토콜, 블루투스(Bluetooth™) 프로토콜 또는 임의의 다른 무선 프로토콜을 포함하는 하나 이상의 무선 프로토콜에 따른 통신을 가능케 할 수 있다.
또한 예시된 바와 같이, 복수의 센서(1360)가 SoC(1310)에 커플링될 수 있다. 이 센서들은 다양한 가속도계, 환경적 및 다른 센서(사용자 제스처(user gesture) 센서를 포함함)를 포함할 수 있다. 마지막으로, 오디오 출력 디바이스(1370)에 인터페이스를 제공하기 위해 SoC(1310)에 오디오 코덱(audio codec)(1365)이 커플링된다. 물론, 도 7에서 이 특정한 구현과 함께 도시되나, 많은 변형 및 대안이 가능함을 이해해야 한다.
다음으로 도 8로 넘어가면, 실시예에 따른 SoC 설계의 실시예가 묘사된다. 구체적인 예시적 예로서, SoC(2000)가 사용자 장비(User Equipment: UE) 내에 포함된다. 하나의 실시예에서, UE는 최종 사용자(end user)에 의해 사용될 임의의 디바이스, 예를 들어 착용가능물, 핸드헬드(hand-held) 전화, 스마트폰, 태블릿, 울트라씬 노트북(ultra-thin notebook), 노트북 IoT 디바이스, 또는 임의의 다른 유사한 디바이스를 나타낸다. 흔히 UE는 기지국 또는 노드(node)에 연결되는데, 이는 잠재적으로는 본질상 GSM 네트워크 내의 이동국(Mobile Station: MS)에 대응한다.
여기서, SoC(2000)는 2개의 코어(2006 및 2007)를 포함한다. 위의 논의와 유사하게, 코어(2006 및 2007)는 명령어 세트 아키텍처(Instruction Set Architecture), 예를 들어 인텔 아키텍처 코어(Intel® Architecture Core™) 기반 프로세서, 어드밴스트 마이크로 디바이시스 사(Advanced Micro Devices, Inc.: AMD) 프로세서, MIPS 기반 프로세서, ARM 기반 프로세서 설계, 또는 이의 고객(customer), 또 그들의 실시권자 또는 채택자에도 부합할 수 있다. 코어(2006 및 2007)는 시스템(200)의 다른 부분과 통신하기 위해 버스 인터페이스 유닛(2009) 및 L2 캐시(2010)와 연관된 캐시 제어(cache control)(2008)에 커플링된다. 상호연결(2010)은 온칩 상호연결을 포함한다.
상호연결(2010)은 본 문서에 기술된 바와 같은 저전력 아키텍처를 가질 수 있는, 디버그 유닛(2030)과 같은 다른 컴포넌트로의 통신 채널을 제공한다. 보여진 바와 같이 디버그 유닛(2030)은 복수의 오프칩 연결과 인터페이스 접속할 수 있다. SOC(2000)를 초기화하고 부팅하기 위해 코어(2006 및 2007)에 의한 실행을 위한 부트 코드를 유지하는 부트 ROM(2035), 외부 메모리(가령 DRAM(2060))와 인터페이스 접속하는 SDRAM 제어기(2040), 비휘발성 메모리(가령, 플래시(2065))와 인터페이스 접속하는 플래시 제어기(2045), 주변기기와 인터페이스 접속하는 주변기기 제어기(2050)(가령, 직렬 주변기기 인터페이스(Serial Peripheral Interface), MIPI 또는 HDMI/DP 인터페이스 중 하나를 통하여 입력(가령 터치 활성화된 입력(touch enabled input))을 디스플레이하고 수신하는 비디오 코덱(2020) 및 비디오 인터페이스(2025), 그래픽 관련 계산을 수행하는 GPU(2015), 기타 등등에 상호연결(2010)이 또한 커플링된다.
추가로, 시스템은 통신을 위한 주변기기, 예를 들어 블루투스 모듈(2070), 3G 모뎀(2075), GPS(2080) 및 와이파이(WiFi)(2085)를 예시한다. 전력 제어기(2055)가 시스템 내에 또한 포함된다.
다음의 예는 추가의 실시예에 관련된다.
하나의 예에서, 장치는, 적어도 하나의 하드웨어 소스(hardware source), 적어도 하나의 펌웨어 소스(firmware source) 및 적어도 하나의 소프트웨어 소스(software source)를 포함하는 복수의 소스로부터 디버그 신호를 수신하는 중앙 디버그 유닛(central debug unit)과, 위 중앙 디버그 유닛으로부터 위 디버그 신호를 수신하고 중재 로직(arbitration logic)(이는 위 복수의 소스 중 하나 이상으로부터의 위 디버그 신호 및 복수의 하드웨어 유닛으로부터의 기능적(functional) 디버그 신호 간에 선택함)을 가지는 트레이스 병합 유닛(trace merge unit)(위 트레이스 병합 유닛은 위 선택된 디버그 신호 또는 기능적 디버그 신호를 타임스탬핑함(time stamp))과, 위 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 수신하고 위 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 병렬화하는 병렬 트레이스 인터페이스(parallel trace interface)와, 위 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 수신하고 위 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 직렬화하는 직렬 트레이스 인터페이스(serial trace interface)와, 위 중앙 디버그 유닛으로부터의 위 디버그 신호 및 위 병렬 트레이스 인터페이스로부터의 위 병렬화된 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 수신하고 출력 경로 상의 출력을 위해 위 디버그 신호 및 위 병렬화된 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호 중 하나를 선택하는 선택 유닛(selection unit)을 포함하되, 위 출력 경로는 복수의 출력 경로로부터 선택되는 것이다.
일례에서, 위 장치는 SOC를 포함하고 위 복수의 출력 경로는 범용 입출력(general purpose input/output) 핀의 세트, 마이크로 시큐어 디지털(micro secure digital) 핀의 세트, 메모리 상호연결의 세트 및 적어도 하나의 범용 직렬 버스(universal serial bus) 핀 중 하나 이상을 포함한다. 위 선택 유닛은 위 SoC가 폐쇄 섀시(closed chassis)를 가지는 휴대가능 디바이스(portable device) 내에 구성된 경우 마이크로 시큐어 디지털 핀의 위 세트에 대응하는 출력 경로 상에 위 선택된 디버그 신호를 출력하도록 구성될 수 있다.
일례에서, 위 장치는 분산된 선택 유닛(distributed selection unit)을 더 포함하되, 위 분산된 선택 유닛은 위 장치를 포함하는 SoC의 제1 기능적 유닛 내에 위치된 제1 선택 유닛과, 위 SoC의 비코어 로직(uncore logic) 내에 위치된 제2 선택 유닛(위 제2 선택 유닛은 위 제1 선택 유닛을 포함하는 복수의 제1 선택 유닛으로부터 출력을 수신함)과, 위 제2 선택 유닛을 포함하는 복수의 제2 선택 유닛으로부터 출력을 수신하고, 선택된 디버그 신호를 위 중앙 디버그 유닛에 출력하는 제3 선택 유닛을 가진다.
일례에서, 위 장치는 트레이스 수집 유닛(trace collection unit)을 더 포함하되, 위 트레이스 수집 유닛은 위 SoC의 테스트 인터페이스(test interface)를 통하여 트레이스 제어 신호를 수신하고, 위 트레이스 제어 신호에 응답하여, 위 트레이스 수집 유닛으로부터 위 중앙 디버그 유닛으로의 출력을 위해 하드웨어 트레이스 정보, 소프트웨어 트레이스 정보 및 펌웨어 트레이스 정보 중 하나를 선택하도록 구성된다.
일례에서, 그 펌웨어는 위 SoC를 위한 부트 코드(boot code)를 포함한다.
일례에서, 위 장치는 위 중앙 디버그 유닛의 제1 부분을 포함하는 제1 전력 도메인(power domain)과, 위 중앙 디버그 유닛의 제2 부분을 포함하는 제2 전력 도메인을 더 포함하되, 위 SoC가 저전력 모드(low power mode)에서 동작할 동안에 위 제1 전력 도메인은 전력 온된(powered on) 채로 있고 위 제2 전력 도메인은 전력 오프되는(powered off) 것이다.
일례에서, 위 중앙 디버그 유닛의 위 제1 부분은 위 저전력 모드와 연관된 디버그 신호를 수신하고 처리한다.
일례에서, 위 SoC를 포함하는 휴대가능 디바이스의 사용자 동작(user operation) 동안 위 중앙 디버그 유닛의 적어도 위 제1 부분을 비활성화하도록(disable) 구성된 퓨즈 로직(fuse logic)을 더 포함하되, 위 퓨즈 로직은 위 휴대가능 디바이스 내에의 위 SoC의 포함 전에 구성된다. 위 퓨즈 로직은 위 휴대가능 디바이스의 디버그 동작(debug operation) 동안 위 중앙 디버그 유닛의 위 제1 부분을 활성화하기(enable) 위해 오버라이팅되도록(overwritten) 구성될 수 있다.
일례에서, 위 병렬화된 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호는 MIPI 연합(MIPI Alliance) 시스템 트레이스 프로토콜과 호환가능하다.
일례에서, 위 SoC는 사용자 장비 터치 활성화된 디바이스 내에 포함된다.
다른 예에서, 시스템은, 디스플레이 및 메모리를 포함하고, 위의 예 중 하나 이상의 예의 장치를 포함한다.
다른 예에서, 적어도 하나의 컴퓨터 판독가능 매체(computer readable medium)는 명령어를 포함하는데, 위 명령어는 실행되는 경우 시스템으로 하여금, 펌웨어 트레이스 정보 및 하드웨어 트레이스 정보를 수집하도록 프로세서의 디버그 회로(debug circuit)를 구성하고(위 디버그 회로는 위 프로세서를 포함하는 플랫폼(platform)이 켜져(on) 있는 경우 전력 온될 제1 전력 도메인 내에 위치된 제1 부분과, 위 플랫폼이 저전력 상태(low power state) 내에 있는 경우 전력 오프될 제2 전력 도메인 내에 위치된 제2 부분을 가짐), 위 플랫폼의 부트전 환경(pre-boot environment) 내에서, 위 디버그 회로 내에서 위 펌웨어 트레이스 정보 및 위 하드웨어 트레이스 정보를 처리하며, 위 처리된 펌웨어 트레이스 정보 및 위 처리된 하드웨어 트레이스 정보를 위 프로세서로부터 위 플랫폼에 커플링된(coupled) 분석 도구(analysis tool)로 위 프로세서의 선택된 출력 경로를 통하여 스트리밍할 수 있게 한다.
일례에서, 위 적어도 하나의 컴퓨터 판독가능 매체는, 실행되는 경우 위 시스템으로 하여금, 위 처리된 펌웨어 트레이스 정보 및 위 처리된 하드웨어 트레이스 정보 중 적어도 하나 내의 정보에 기반하여 에러(error)를 검출하는 것에 응답하여 에러 검출 이벤트(error detection event)를 타임스탬핑할 수 있게 하는 명령어를 더 포함한다.
일례에서, 위 적어도 하나의 컴퓨터 판독가능 매체는, 실행되는 경우 위 부트전 환경 내에서 위 디버그 회로의 위 제1 부분을 활성화하고, 위 부트전 환경 내에서 위 디버그 회로의 위 제2 부분을 비활성화하는 명령어를 더 포함한다.
일례에서, 위 펌웨어 트레이스 정보를 처리하는 것은 위 펌웨어 트레이스 정보를 필터링하는 것, 패킷화하는 것 및 압축하는 것 중 하나 이상을 포함한다.
다른 예에서, SoC는, 명령어를 실행하는 적어도 하나의 코어(core)(위 적어도 하나의 코어는 위 적어도 하나의 코어의 동작에 관한 제1 기능적 디버그 신호를 제공하는 제1 디버그 로직(debug logic)을 포함함)와, 위 적어도 하나의 코어에 커플링되어 비-코어(non-core) 동작을 수행하는 비코어 로직(위 비코어 로직은 위 비코어 로직의 동작에 관한 제2 기능적 디버그 신호를 제공하는 제2 디버그 로직을 포함함)과, 위 적어도 하나의 코어 및 위 비코어 로직에 커플링되어 위 제1 및 제2 기능적 디버그 신호를 수신하는 중앙 디버그 유닛(위 중앙 디버그 유닛은 적어도 하나의 펌웨어 소스 및 적어도 하나의 소프트웨어 소스로부터 디버그 정보를 수신하고 압축된 디버그 정보를 출력하도록 또한 구성됨)과, 위 압축된 디버그 정보를 수신하고 위 압축된 디버그 정보를 타임스탬핑하는 트레이스 병합 유닛과, 위 타임스탬핑된 압축된 디버그 정보를 복수의 출력 경로 중 하나의 출력 경로 상에 출력하는 출력 유닛을 포함하되, 위 하나의 출력 경로는 테스트 인터페이스를 통하여 위 SoC에 제공된 구성(configuration)에 따라 선택되는 것이다.
일례에서, 위 복수의 출력 경로는 범용 입출력 핀의 세트, 마이크로 시큐어 디지털 핀의 세트, 메모리 상호연결의 세트 및 적어도 하나의 직렬 핀 중 하나 이상을 포함한다.
일례에서, 위 SoC는 위 SoC를 포함하는 플랫폼인 켜져 있는 경우 전력 온 된채로 있는 제1 전력 도메인 및 위 플랫폼이 저전력 상태 내에 있는 경우 전력 오프될 제2 전력 도메인을 포함하되, 위 중앙 디버그 유닛은 위 제1 전력 도메인 내에 포함된 제1 부분 및 위 제2 전력 도메인 내에 포함된 제2 부분을 포함한다.
일례에서, 위 SoC는 위 SoC를 포함하는 플랫폼의 사용자 동작 동안 위 중앙 디버그 유닛, 위 트레이스 병합 유닛 및 위 출력 유닛을 비활성화하도록 구성된 퓨즈 로직을 더 포함하되, 위 퓨즈 로직은 위 플랫폼의 디버그 동작 동안 위 중앙 디버그 유닛, 위 트레이스 병합 유닛 및 위 출력 유닛 중 적어도 일부분을 활성화하기 위해 오버라이팅되는 것이다.
일례에서, 위 중앙 디버그 유닛은 트리거 로직(trigger logic)과, 필터 로직(filter logic)과, 패킷화 로직(packetization logic)과, 압축 로직(compression logic) 중 적어도 하나를 포함한다.
일례에서, 병렬 트레이스 인터페이스가 위 타임스탬핑된 압축된 디버그 정보를 수신하고 위 타임스탬핑된 압축된 디버그 정보를 병렬화하도록 구성된다.
일례에서, 로직이 위 병렬화된 타임스탬핑된 압축된 디버그 정보를 직렬화하고 위 직렬화된 타임스탬핑된 압축된 디버그 정보를 직렬 출력 경로를 통하여 출력하도록 구성된다. 위 로직은 위 직렬 출력 경로를 통하여 위 트레이스 병합 유닛으로부터 위 타임스탬핑된 압축된 디버그 정보를 출력할 수 있다.
위의 예의 다양한 조합이 가능함을 이해해야 한다.
실시예는 많은 상이한 유형의 시스템에서 사용될 수 있다. 예컨대, 하나의 실시예에서 통신 디바이스가 본 문서에 기술된 다양한 방법 및 기법을 수행하도록 마련될(arranged) 수 있다. 물론, 본 발명의 범주는 통신 디바이스에 한정되지 않고, 대신에 다른 실시예는 명령어를 처리하기 위한 다른 유형의 장치, 또는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여 그 디바이스로 하여금 본 문서에 기술된 방법 및 기법 중 하나 이상을 행하게 하는 명령어를 포함하는 하나 이상의 머신 판독가능(machine readable) 매체에 지향될(directed) 수 있다.
실시예는 코드(code)로 구현될 수 있고, 명령어를 수행하도록 시스템을 프로그래밍하는(program) 데에 사용될 수 있는 명령어가 저장된 비일시적(non-transitory) 저장 매체 상에 저장될 수 있다. 저장 매체는 플로피 디스크(floppy disk), 광학 디스크(optical disk), 솔리드 스테이트 드라이브(Solid State Drive: SSD), 콤팩트 디스크 판독 전용 메모리(Compact Disk Read-Only Memory: CD-ROM), 콤팩트 디스크 재기입가능(Compact Disk ReWritable: CD-RW), 그리고 자기-광학 디스크(magneto-optical disk)를 포함하는 임의의 유형의 디스크, 반도체 디바이스, 예를 들어 판독 전용 메모리(Read-Only Memory: ROM), 랜덤 액세스 메모리(Random Access Memory: RAM), 예를 들어 동적 랜덤 액세스 메모리(Dynamic Random Access Memory: DRAM), 정적 랜덤 액세스 메모리(Static Random Access Memory: SRAM), 소거가능 프로그램가능 판독 전용 메모리(Erasable Programmable Read-Only Memory: EPROM), 플래시 메모리, 전기적 소거가능 프로그램가능 판독 전용 메모리(Electrically Erasable Programmable Read-Only Memory: EEPROM), 자기 또는 광학 카드, 또는 전자적 명령어를 저장하기에 적합한 임의의 다른 유형의 매체를 포함할 수 있으나, 이에 한정되지 않는다.
본 발명은 한정된 수의 실시예에 관해서 기술되었으나, 당업자는 이로부터의 다수의 수정 및 변형을 인식할 것이다. 부기된 청구항은 이 본 발명의 진정한 사상 및 범주 내에 속하는 모든 그러한 수정 및 변형을 포함한다.

Claims (25)

  1. 장치로서,
    적어도 하나의 하드웨어 소스(hardware source), 적어도 하나의 펌웨어 소스(firmware source) 및 적어도 하나의 소프트웨어 소스(software source)를 포함하는 복수의 소스로부터 디버그 신호를 수신하는 중앙 디버그 유닛(central debug unit)과,
    상기 중앙 디버그 유닛으로부터 상기 디버그 신호를 수신하고 중재 로직(arbitration logic)을 가지는 트레이스 병합 유닛(trace merge unit) - 상기 중재 로직은 상기 복수의 소스 중 하나 이상으로부터의 상기 디버그 신호 및 복수의 하드웨어 유닛으로부터의 기능적(functional) 디버그 신호 간에 선택하고, 상기 트레이스 병합 유닛은 상기 선택된 디버그 신호 또는 기능적 디버그 신호를 타임스탬핑함(time stamp) - 과,
    상기 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 수신하고 상기 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 병렬화하는 병렬 트레이스 인터페이스(parallel trace interface)와,
    상기 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 수신하고 상기 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 직렬화하는 직렬 트레이스 인터페이스(serial trace interface)와,
    상기 중앙 디버그 유닛으로부터의 상기 디버그 신호 및 상기 병렬 트레이스 인터페이스로부터의 상기 병렬화된 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호를 수신하고 출력 경로 상의 출력 - 상기 출력 경로는 복수의 출력 경로로부터 선택되는 것임 - 을 위해 상기 디버그 신호 및 상기 병렬화된 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호 중 하나를 선택하는 선택 유닛(selection unit)
    을 포함하는
    장치.
  2. 제1항에 있어서,
    상기 장치는 시스템 온 칩(System on Chip: SoC)을 포함하고,
    상기 복수의 출력 경로는
    범용 입출력(general purpose input/output) 핀의 세트,
    마이크로 시큐어 디지털(micro secure digital) 핀의 세트,
    메모리 상호연결의 세트 및
    적어도 하나의 범용 직렬 버스 핀 (universal serial bus pin )중
    하나 이상을 포함하는
    장치.
  3. 제2항에 있어서,
    상기 선택 유닛은 상기 SoC가 폐쇄 섀시(closed chassis)를 가지는 휴대가능 디바이스(portable device) 내에 구성된 경우 마이크로 시큐어 디지털 핀의 상기 세트에 대응하는 출력 경로 상에 상기 선택된 디버그 신호를 출력하도록 구성된
    장치.
  4. 제1항에 있어서,
    분산된 선택 유닛(distributed selection unit)을 더 포함하되, 상기 분산된 선택 유닛은
    상기 장치를 포함하는 시스템 온 칩(System on Chip: SoC)의 제1 기능적 유닛 내에 위치된 제1 선택 유닛과,
    상기 SoC의 비코어 로직(uncore logic) 내에 위치된 제2 선택 유닛 - 상기 제2 선택 유닛은 상기 제1 선택 유닛을 포함하는 복수의 제1 선택 유닛으로부터 출력을 수신함 - 과,
    상기 제2 선택 유닛을 포함하는 복수의 제2 선택 유닛으로부터 출력을 수신하고, 선택된 디버그 신호를 상기 중앙 디버그 유닛에 출력하는 제3 선택 유닛
    을 포함하는
    장치.
  5. 제2항에 있어서,
    트레이스 수집 유닛(trace collection unit)을 더 포함하되, 상기 트레이스 수집 유닛은 상기 SoC의 테스트 인터페이스(test interface)를 통하여 트레이스 제어 신호를 수신하고, 상기 트레이스 제어 신호에 응답하여 상기 트레이스 수집 유닛으로부터 상기 중앙 디버그 유닛으로의 출력을 위해 하드웨어 트레이스 정보, 소프트웨어 트레이스 정보 및 펌웨어 트레이스 정보 중 하나를 선택하도록 구성된
    장치.
  6. 제2항에 있어서,
    펌웨어는 상기 SoC를 위한 부트 코드(boot code)를 포함하는
    장치.
  7. 제2항에 있어서,
    상기 중앙 디버그 유닛의 제1 부분을 포함하는 제1 전력 도메인(power domain)과, 상기 중앙 디버그 유닛의 제2 부분을 포함하는 제2 전력 도메인을 더 포함하되, 상기 SoC가 저전력 모드(low power mode)에서 동작하여야 할 동안에 상기 제1 전력 도메인은 전력 온된(powered on) 채로 있고 상기 제2 전력 도메인은 전력 오프되는(powered off) 것인
    장치.
  8. 제7항에 있어서,
    상기 중앙 디버그 유닛의 상기 제1 부분은 상기 저전력 모드와 연관된 디버그 신호를 수신하고 처리하는
    장치.
  9. 제7항에 있어서,
    상기 SoC를 포함하는 휴대가능 디바이스의 사용자 동작(user operation) 동안 상기 중앙 디버그 유닛의 적어도 상기 제1 부분을 비활성화하도록(disable) 구성된 퓨즈 로직(fuse logic)을 더 포함하되, 상기 퓨즈 로직은 상기 휴대가능 디바이스 내에의 상기 SoC의 포함 전에 구성된
    장치.
  10. 제9항에 있어서,
    상기 퓨즈 로직은 상기 휴대가능 디바이스의 디버그 동작(debug operation) 동안 상기 중앙 디버그 유닛의 상기 제1 부분을 활성화하기(enable) 위해 오버라이팅되도록(overwritten) 구성된
    장치.
  11. 제1항에 있어서,
    상기 병렬화된 타임스탬핑된 선택된 디버그 신호 또는 기능적 디버그 신호는 모바일 산업 프로세서 인터페이스 연합(Mobile Industry Processor Interface (MIPI) Alliance) 시스템 트레이스 프로토콜과 호환가능한
    장치.
  12. 방법으로서,
    펌웨어 트레이스 정보 및 하드웨어 트레이스 정보를 수집하도록 프로세서의 디버그 회로(debug circuit)를 구성하는 단계 - 상기 디버그 회로는 상기 프로세서를 포함하는 플랫폼(platform)이 켜져(on) 있는 경우 전력 온될 제1 전력 도메인 내에 위치된 제1 부분과, 상기 플랫폼이 저전력 상태(low power state) 내에 있는 경우 전력 오프될 제2 전력 도메인 내에 위치된 제2 부분을 가짐 - 와,
    상기 플랫폼의 부트전(pre-boot) 환경 내에서, 상기 디버그 회로 내에서 상기 펌웨어 트레이스 정보 및 상기 하드웨어 트레이스 정보를 처리하는 단계와,
    상기 처리된 펌웨어 트레이스 정보 및 상기 처리된 하드웨어 트레이스 정보를 상기 프로세서로부터 상기 플랫폼에 커플링된(coupled) 분석 도구(analysis tool)로 상기 프로세서의 선택된 출력 경로를 통하여 스트리밍하는 단계
    를 포함하는
    방법.
  13. 제12항에 있어서,
    상기 처리된 펌웨어 트레이스 정보 및 상기 처리된 하드웨어 트레이스 정보 중 적어도 하나 내의 정보에 기반하여 에러(error)를 검출하는 것에 응답하여 에러 검출 이벤트(error detection event)를 타임스탬핑하는 단계를 더 포함하는
    방법.
  14. 제12항에 있어서,
    상기 부트전 환경 내에서 상기 디버그 회로의 상기 제1 부분을 활성화하는 단계와, 상기 부트전 환경 내에서 상기 디버그 회로의 상기 제2 부분을 비활성화하는 단계를 더 포함하는
    방법.
  15. 제12항에 있어서,
    상기 펌웨어 트레이스 정보를 처리하는 것은 상기 펌웨어 트레이스 정보를 필터링하는 것, 패킷화하는 것 및 압축하는 것 중 하나 이상을 포함하는
    방법.
  16. 제12항 내지 제15항 중 어느 한 항의 방법을 수행하는 수단을 포함하는
    장치.
  17. 실행되는 경우 제12항 내지 제15항 중 어느 한 항의 방법을 구현하는 머신 판독가능(machine-readable) 명령어를 포함하는
    머신 판독가능 저장 매체.
  18. 시스템 온 칩(System on Chip: SoC)으로서,
    명령어를 실행하는 적어도 하나의 코어(core) - 상기 적어도 하나의 코어는 상기 적어도 하나의 코어의 동작에 관한 제1 기능적 디버그 신호를 제공하는 제1 디버그 로직(debug logic)을 포함함 - 와,
    상기 적어도 하나의 코어에 커플링되어 비-코어(non-core) 동작을 수행하는 비코어 로직 - 상기 비코어 로직은 상기 비코어 로직의 동작에 관한 제2 기능적 디버그 신호를 제공하는 제2 디버그 로직을 포함함 - 과,
    상기 적어도 하나의 코어 및 상기 비코어 로직에 커플링되어 상기 제1 및 제2 기능적 디버그 신호를 수신하는 중앙 디버그 유닛 - 상기 중앙 디버그 유닛은 적어도 하나의 펌웨어 소스 및 적어도 하나의 소프트웨어 소스로부터 디버그 정보를 수신하고 압축된 디버그 정보를 출력하도록 또한 구성됨 - 과,
    상기 압축된 디버그 정보를 수신하고 상기 압축된 디버그 정보를 타임스탬핑하는 트레이스 병합 유닛과,
    상기 타임스탬핑된 압축된 디버그 정보를 복수의 출력 경로 중 하나의 출력 경로 상에 출력 - 상기 하나의 출력 경로는 테스트 인터페이스를 통하여 상기 SoC에 제공된 구성에 따라 선택되는 것임 - 하는 출력 유닛을 포함하되는
    SoC.
  19. 제18항에 있어서,
    상기 복수의 출력 경로는 범용 입출력 핀의 세트, 마이크로 시큐어 디지털 핀의 세트, 메모리 상호연결의 세트 및 적어도 하나의 직렬 핀 중에서 하나 이상을 포함하는
    SoC.
  20. 제18항에 있어서,
    상기 SoC는 상기 SoC를 포함하는 플랫폼인 켜져 있는 경우 전력 온 된 채로 있는 제1 전력 도메인 및 상기 플랫폼이 저전력 상태 내에 있는 경우 전력 오프될 제2 전력 도메인을 포함하되, 상기 중앙 디버그 유닛은 상기 제1 전력 도메인 내에 포함된 제1 부분 및 상기 제2 전력 도메인 내에 포함된 제2 부분을 포함하는
    SoC.
  21. 제18항에 있어서,
    상기 SoC를 포함하는 플랫폼의 사용자 동작 동안 상기 중앙 디버그 유닛, 상기 트레이스 병합 유닛 및 상기 출력 유닛을 비활성화하도록 구성된 퓨즈 로직을 더 포함하되, 상기 퓨즈 로직은 상기 플랫폼의 디버그 동작 동안 상기 중앙 디버그 유닛, 상기 트레이스 병합 유닛 및 상기 출력 유닛 중 적어도 일부분을 활성화하기 위해 오버라이팅되는 것인
    SoC.
  22. 제18항에 있어서,
    상기 중앙 디버그 유닛은
    디버그 동작을 트리거링(triggering)하는 트리거 수단과,
    상기 제1 기능적 디버그 신호를 필터링하는 필터 수단과,
    상기 필터링된 제1 기능적 디버그 신호를 패킷화하는 패킷화 수단과,
    상기 패킷화된 필터링된 제1 기능적 디버그 신호를 압축하는 압축 수단 중
    적어도 하나를 포함하는
    SoC.
  23. 제18항에 있어서,
    상기 타임스탬핑된 압축된 디버그 정보를 수신하고 상기 타임스탬핑된 압축된 디버그 정보를 병렬화하는 병렬 트레이스 인터페이스를 더 포함하는
    SoC.
  24. 제23항에 있어서,
    상기 병렬화된 타임스탬핑된 압축된 디버그 정보를 직렬화하고 상기 직렬화된 타임스탬핑된 압축된 디버그 정보를 직렬 출력 경로를 통하여 출력하는 수단을 더 포함하는
    SoC.
  25. 제24항에 있어서,
    상기 수단은 상기 직렬 출력 경로를 통하여 상기 트레이스 병합 유닛으로부터 상기 타임스탬핑된 압축된 디버그 정보를 출력하는
    SoC.
KR1020177003629A 2014-09-12 2015-08-13 시스템 온 칩(soc) 및 시스템을 위한 저전력 디버그 아키텍처 KR102191815B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/484,427 2014-09-12
US14/484,427 US9753836B2 (en) 2014-09-12 2014-09-12 Low power debug architecture for system-on-chips (SoCs) and systems
PCT/US2015/044958 WO2016039924A1 (en) 2014-09-12 2015-08-13 LOW POWER DEBUG ARCHITECTURE FOR SYSTEM-ON-CHIPS (SOCs) AND SYSTEMS

Publications (2)

Publication Number Publication Date
KR20170028995A true KR20170028995A (ko) 2017-03-14
KR102191815B1 KR102191815B1 (ko) 2020-12-16

Family

ID=55454856

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177003629A KR102191815B1 (ko) 2014-09-12 2015-08-13 시스템 온 칩(soc) 및 시스템을 위한 저전력 디버그 아키텍처

Country Status (7)

Country Link
US (1) US9753836B2 (ko)
EP (1) EP3191965A4 (ko)
JP (1) JP6490803B2 (ko)
KR (1) KR102191815B1 (ko)
CN (2) CN111522745A (ko)
BR (1) BR112017002547A2 (ko)
WO (1) WO2016039924A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016178183A1 (en) * 2015-05-06 2016-11-10 Marvell World Trade Ltd. Apparatus and method for remotely testing memory-mapped devices of a system-on-chip via an ethernet interface
US9697013B2 (en) * 2015-06-10 2017-07-04 Dell Products, L.P. Systems and methods for providing technical support and exporting diagnostic data
GB2541216B (en) 2015-08-12 2021-03-17 Ultrasoc Technologies Ltd Reconfiguring debug circuitry
US10054636B2 (en) * 2015-10-23 2018-08-21 Intel IP Corporation Device, system and method to support communication of test, debug or trace information with an external input/output interface
US9832006B1 (en) 2016-05-24 2017-11-28 Intel Corporation Method, apparatus and system for deskewing parallel interface links
US10372661B1 (en) 2017-02-28 2019-08-06 American Megatrends International, Llc Firmware debug trace capture using serial peripheral interface
US10824530B2 (en) * 2017-06-21 2020-11-03 Intel Corporation System, apparatus and method for non-intrusive platform telemetry reporting using an all-in-one connector
CN107273256A (zh) * 2017-06-22 2017-10-20 湖南国科微电子股份有限公司 一种Soc芯片的调试方法及系统
CN107704346B (zh) * 2017-08-08 2021-07-27 湖南国科微电子股份有限公司 Soc芯片调试方法及调试系统
US10606677B2 (en) * 2017-08-28 2020-03-31 American Megatrends International, Llc Method of retrieving debugging data in UEFI and computer system thereof
US10860332B2 (en) 2017-09-25 2020-12-08 Qualcomm Incorporated Multicore framework for use in pre-boot environment of a system-on-chip
US10962593B2 (en) 2018-04-03 2021-03-30 Samsung Electronics Co., Ltd. System on chip and operating method thereof
US10627881B2 (en) * 2018-04-12 2020-04-21 Qualcomm Incorporated Back power protection (BPP) in a system on a chip (SOC) with critical signaling scheme
KR102165747B1 (ko) * 2018-12-28 2020-10-14 성균관대학교산학협력단 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법
EP3891909A1 (en) * 2019-02-19 2021-10-13 Siemens Industry Software Inc. Radio equipment test device
US10901871B2 (en) 2019-03-05 2021-01-26 Intel Corporation System, apparatus and method for dynamic multi-source tracing in a system
CN110149490A (zh) * 2019-06-14 2019-08-20 北京滴普科技有限公司 一种视频信号图像处理方法及系统
US20200285559A1 (en) * 2020-05-20 2020-09-10 Intel Corporation System, apparatus and method for dynamic tracing in a system having one or more virtualization environments
CN111949431B (zh) * 2020-08-27 2022-07-05 英业达科技有限公司 片上系统产品的致命错误提供方法与致命错误识别方法
CN112052132B (zh) * 2020-09-11 2022-09-06 厦门紫光展锐科技有限公司 通过sdio接口调试外挂芯片的方法、装置、设备和介质
US11620176B2 (en) * 2021-07-15 2023-04-04 Beijing Tenafe Electronic Technology Co., Ltd. Visualization system for debug or performance analysis of SOC systems
US11544210B1 (en) 2021-07-15 2023-01-03 Beijing Tenafe Electronic Technology Co., Ltd. Collection of runtime information for debug and analysis
US11630502B2 (en) 2021-07-30 2023-04-18 Advanced Micro Devices, Inc. Hierarchical state save and restore for device with varying power states
US11829312B2 (en) 2021-12-31 2023-11-28 Snap Inc. Debug access of eyewear having multiple socs
CN115221070B (zh) * 2022-08-02 2023-06-20 无锡众星微系统技术有限公司 基于NVMe盘的片上系统诊断方法
CN116502576B (zh) * 2023-06-26 2023-10-20 北京象帝先计算技术有限公司 指令流跟踪验证方法及调试系统
CN117149694B (zh) * 2023-10-24 2024-02-23 南京芯驰半导体科技有限公司 基于多核异构的接口控制方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594782B1 (en) * 1998-12-28 2003-07-15 Fujitsu Limited Information processing apparatus
US20030140263A1 (en) * 1999-11-16 2003-07-24 Arends John H. Bus arbitration in low power system
US20150278068A1 (en) * 2014-03-26 2015-10-01 Robert C. Swanson Initialization trace of a computing device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7260745B1 (en) 1999-10-01 2007-08-21 Stmicroelectronics Ltd. Detection of information on an interconnect
US6859897B2 (en) * 2000-03-02 2005-02-22 Texas Instruments Incorporated Range based detection of memory access
US7003698B2 (en) 2002-06-29 2006-02-21 Intel Corporation Method and apparatus for transport of debug events between computer system components
JP2005301640A (ja) * 2004-04-12 2005-10-27 Hitachi Ltd スイッチ装置、記憶制御システム及びトレースデータ取得方法
US7610482B1 (en) * 2006-06-28 2009-10-27 Qlogic, Corporation Method and system for managing boot trace information in host bus adapters
US8990633B2 (en) 2009-04-21 2015-03-24 Freescale Semiconductor, Inc. Tracing support for interconnect fabric
US8190931B2 (en) * 2009-04-30 2012-05-29 Texas Instruments Incorporated Power management events profiling
EP2362297B1 (en) 2010-02-25 2014-05-14 Telefonaktiebolaget L M Ericsson (publ) Technique for selecting a frequency of operation in a processor system
US20110239196A1 (en) * 2010-03-29 2011-09-29 Laurent Ichard Micro-Task Pipeline Visualization
US8826079B2 (en) * 2011-12-16 2014-09-02 Arm Limited Data processing apparatus and method for identifying debug events
US8924796B2 (en) * 2012-03-22 2014-12-30 Intel Mobile Communications GmbH System and method for processing trace information
GB2500441B (en) * 2012-07-09 2014-03-05 Ultrasoc Technologies Ltd Data prioritisation in a debug architecture
GB2500074B (en) * 2012-07-09 2014-08-20 Ultrasoc Technologies Ltd Debug architecture
US9009541B2 (en) * 2012-08-20 2015-04-14 Apple Inc. Efficient trace capture buffer management
US9459985B2 (en) * 2014-03-28 2016-10-04 Intel Corporation Bios tracing using a hardware probe

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594782B1 (en) * 1998-12-28 2003-07-15 Fujitsu Limited Information processing apparatus
US20030140263A1 (en) * 1999-11-16 2003-07-24 Arends John H. Bus arbitration in low power system
US20150278068A1 (en) * 2014-03-26 2015-10-01 Robert C. Swanson Initialization trace of a computing device

Also Published As

Publication number Publication date
EP3191965A1 (en) 2017-07-19
BR112017002547A2 (pt) 2017-12-05
CN111522745A (zh) 2020-08-11
US20160077905A1 (en) 2016-03-17
CN106575249A (zh) 2017-04-19
CN106575249B (zh) 2020-05-26
KR102191815B1 (ko) 2020-12-16
US9753836B2 (en) 2017-09-05
WO2016039924A1 (en) 2016-03-17
JP6490803B2 (ja) 2019-03-27
EP3191965A4 (en) 2019-01-09
JP2017530464A (ja) 2017-10-12

Similar Documents

Publication Publication Date Title
KR102191815B1 (ko) 시스템 온 칩(soc) 및 시스템을 위한 저전력 디버그 아키텍처
EP3272072B1 (en) Method, apparatus and system for dynamic bandwidth management in systems
CN107003955B (zh) 用于在根复合体中集成设备的方法、装置和系统
US9684578B2 (en) Embedded universal serial bus (USB) debug (EUD) for multi-interfaced debugging in electronic systems
US9639447B2 (en) Trace data export to remote memory using remotely generated reads
US9684583B2 (en) Trace data export to remote memory using memory mapped write transactions
US10824530B2 (en) System, apparatus and method for non-intrusive platform telemetry reporting using an all-in-one connector
US20170286254A1 (en) Method and apparatus for using target or unit under test (uut) as debugger
US20110239196A1 (en) Micro-Task Pipeline Visualization
US10678623B2 (en) Error reporting and handling using a common error handler
US9372768B2 (en) Debug interface
US20160378636A1 (en) Software-Initiated Trace Integrated with Hardware Trace
US10430236B2 (en) Electronic device and method for resuming process thereof
CN107608923B (zh) 测试的处理方法及相关产品
US11257560B2 (en) Test architecture for die to die interconnect for three dimensional integrated circuits
WO2022126532A1 (zh) 数据处理方法及装置
Barde et al. SEPIA: A framework for optimizing energy consumption in Android devices
JP2007264822A (ja) マイクロプロセッサシステム

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant