KR20160096035A - 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들 - Google Patents

독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들 Download PDF

Info

Publication number
KR20160096035A
KR20160096035A KR1020160013351A KR20160013351A KR20160096035A KR 20160096035 A KR20160096035 A KR 20160096035A KR 1020160013351 A KR1020160013351 A KR 1020160013351A KR 20160013351 A KR20160013351 A KR 20160013351A KR 20160096035 A KR20160096035 A KR 20160096035A
Authority
KR
South Korea
Prior art keywords
processor
error information
independently operable
error
signal
Prior art date
Application number
KR1020160013351A
Other languages
English (en)
Other versions
KR101782246B1 (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 KR20160096035A publication Critical patent/KR20160096035A/ko
Application granted granted Critical
Publication of KR101782246B1 publication Critical patent/KR101782246B1/ko

Links

Images

Classifications

    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/0715Error 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 system implementing multitasking
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • 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/0712Error 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 virtual computing platform, e.g. logically partitioned 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/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/0721Error 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 within a central processing unit [CPU]
    • G06F11/0724Error 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 within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • 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/14Error detection or correction of the data by redundancy in operation
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • 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/221Detection 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 buses, lines or interfaces, e.g. stuck-at or open line faults
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)

Abstract

2 개(또는 그 이상)의 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들이 기재되어 있다. 본 개시 내용은, 치명적 에러의 경우에 에러 정보를 보존하고, 독립적으로 동작가능한 프로세서들 간에 리셋 상태들을 조정하며, 일정 범위의 잠재적인 치명적 에러들에 걸쳐 에러 정보 복구를 위한 일관성 있는 프레임워크들을 구현하는 해결책들을 제공한다. 하나의 예시적인 실시예에서, 애플리케이션 프로세서(AP) 및 기저대역 프로세서(BB)는 광범위한 크래시 시나리오들에 걸쳐 에러 복구를 가능하게 하는 중단 핸들러 및 전원 끄기 핸들러 시퀀스를 구현한다. 하나의 변형례에서, AP와 BB 사이의 신호들의 표명은, 에러 복구 절차들이 성공적으로 완료된 후에만, AP가 BB를 리셋할 수 있게 한다.

Description

독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들{METHODS AND APPARATUS FOR CONTROLLED RECOVERY OF ERROR INFORMATION BETWEEN INDEPENDENTLY OPERABLE PROCESSORS}
우선권 출원들
본 출원은, 2015년 9월 30일자로 출원되고 공동 소유이며 동시 계류 중인, 동일한 발명의 명칭의 미국 특허 출원 제14/870,923호에 대해 우선권의 혜택을 주장하고; 이 미국 특허 출원은 2015년 2월 4일자로 출원되고 공동 소유이며 동시 계류 중인, 동일한 발명의 명칭의 미국 가특허 출원 제62/112,061호에 대해 우선권의 혜택을 주장하며, 이 미국 출원들 각각은 그 전체가 참고로 본 명세서에 포함되어 있다.
관련 출원들
본 출원은, 2014년 10월 8일자로 출원되고 공동 소유이고 동시 계류 중인, 발명의 명칭이 "독립적으로 동작가능한 프로세서들 간의 프로세서간 통신 링크를 위한 방법 및 장치(METHODS AND APPARATUS FOR AN INTER-PROCESSOR COMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS)"인 미국 가특허 출원 제62/061,605호에 또한 관련되며, 이 미국 가특허 출원은 그 전체가 참고로 본 명세서에 포함되어 있다.
기술 분야
본 개시 내용은 일반적으로 소비자 전자 디바이스들뿐만 아니라 그것의 네트워크들의 분야에 관한 것이다. 보다 상세하게는, 하나의 예시적인 양태에서, 본 개시 내용은 2 개(또는 그 이상)의 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들에 관한 것이다. 본 개시 내용의 다양한 양태들은, 예컨대, 치명적 에러의 경우에 에러 정보를 보존하는 것, 독립적으로 동작가능한 프로세서들 간에 리셋 상태들을 조정하는 것, 및 일정 범위의 잠재적인 치명적 에러들에 걸쳐 에러 정보 복구를 위한 일관성 있는 프레임워크들을 구현하는 것에 관한 것이다.
본 개시 내용은, 그 중에서도, 2 개(또는 그 이상)의 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들을 제공하는 것에 의해 상기 요구들을 충족시킨다.
하나의 양태에서, 2 개 이상의 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법이 개시되어 있다. 하나의 실시예에서, 본 방법은 2 개 이상의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서에서 크래시 이벤트(crash event)를 검출하는 단계; 제1 신호를 표명(asserting)하는 단계 - 제1 신호는 크래시 이벤트가 발생했다는 것을 표시함 -; 하나 이상의 에러 복구 절차들을 수행하여, 하나 이상의 에러 정보를 수집하는 단계; 및 하나 이상의 에러 복구 절차들이 성공적으로 완료되었을 때, 제2 신호를 표명하는 단계 - 제2 신호는 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 표시함 - 를 포함한다.
하나의 변형례에서, 본 방법은, 제2 신호의 표명에 응답하여, 2 개 이상의 독립적으로 동작가능한 프로세서들 중 제2 프로세서에서, 수집된 하나 이상의 에러 정보를 수신하는 단계를 포함한다.
제2 변형례에서, 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 표시하는 제2 신호의 표명에 응답하여, 본 방법은 2 개 이상의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서에서 제3 신호를 수신하기를 기다리는 단계를 포함하고, 제3 신호는, 크래시 이벤트가 발생한, 2 개 이상의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서를 리셋하도록 구성된다.
제3 변형례에서, 2 개 이상의 독립적으로 동작가능한 프로세서들 중 적어도 2 개의 프로세서는 버스 인터페이스를 포함하고, 본 방법은 PCIe(Peripheral Component Interconnect Express) 표준에 따라 버스 인터페이스를 통해 통신하는 단계를 더 포함한다. 하나의 이러한 경우에서, 본 방법은 PCIe 링크의 상태를 확인하는 단계; 및 PCIe 버스가 활성일 때, PCIe 버스에 대해 열거(enumerating)하는 단계를 더 포함한다.
제4 변형례에서, 제1 신호를 표명하는 단계와 제2 신호를 표명하는 단계는 범용 입/출력(general purpose input/output)(GPIO)을 통해 표명하는 단계를 포함한다.
제5 변형례에서, 크래시 이벤트가 검출되었을 때, 본 방법은, 제1 신호를 표명하는 단계 이전에, 하나 이상의 보류 중인 입/출력 트랜잭션들을 완료하는 단계를 포함한다.
본 개시 내용의 제2 양태에서, 2 개 이상의 독립적으로 동작가능한 프로세서들 간에 에러 정보를 저장하기 위한 방법이 개시되어 있다. 하나의 실시예에서, 본 방법은 2 개 이상의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서에서 크래시 이벤트에 대해 모니터링하도록 구성된 하드웨어 안전 메커니즘(hardware safety mechanism)을 인에이블하는 단계; 크래시 이벤트가 발생했다는 것을 표시하는 단계; 하나 이상의 에러 복구 절차들을 개시하여, 에러 정보를 저장하는 단계; 및 에러 정보가 저장되었을 때, 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 표시하는 단계를 포함한다.
하나의 변형례에서, 하나 이상의 에러 복구 절차들이 성공적으로 완료되었을 때, 본 방법은 하드웨어 안전 메커니즘을 디스에이블하는 단계를 더 포함한다.
제2 변형례에서, 본 방법은 저장된 에러 정보를 분석하는 단계를 더 포함한다.
제3 변형례에서, 하나 이상의 버스 트랜잭션들이 보류 중일 때, 본 방법은 하나 이상의 버스 트랜잭션들을 해결하는 단계를 더 포함한다.
제4 변형례에서, 하나 이상의 버스 트랜잭션들을 해결하는 단계는 송신 버퍼의 모든 남아 있는 내용(remaining contents)을 전송하는 단계를 포함한다.
제5 변형례에서, 하나 이상의 버스 트랜잭션들을 해결하는 단계는 하나 이상의 버스 트랜잭션들을 중단(aborting)하는 단계를 포함한다.
제3 양태에서, 2 개 이상의 독립적으로 동작가능한 프로세서들 간에 에러 정보를 복구하도록 구성된 컴퓨터화된 시스템이 개시되어 있다. 하나의 실시예에서, 본 시스템은 버스 인터페이스; 제1 독립적으로 동작가능한 프로세서; 및 버스 인터페이스를 통해 제1 프로세서와 데이터 통신하는 제2 독립적으로 동작가능한 프로세서 - 제2 프로세서는 복수의 컴퓨터 판독가능 명령어들을 포함함 - 를 포함한다. 하나의 이러한 예시적인 실시예에서, 복수의 컴퓨터 판독가능 명령어들은, 제2 프로세서에 의해 실행될 때, 제2 프로세서로 하여금, 크래시 이벤트를 검출하게 하고; 크래시 이벤트가 발생했다는 것을 제1 프로세서에 표시하도록 구성된 제1 신호를 표명하게 하고; 하나 이상의 에러 복구 절차들을 수행하여, 하나 이상의 에러 정보를 수집하게 하고; 하나 이상의 에러 복구 절차들이 성공적으로 완료되었을 때, 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 제1 프로세서에 표시하도록 구성된 제2 신호를 표명하게 한다.
제1 변형례에서, 제2 프로세서에 의한 제2 신호의 표명에 응답하여, 제1 프로세서는 하나 이상의 에러 정보를 검색하도록 구성된다.
제2 변형례에서, 제2 프로세서에 의한 제2 신호의 표명에 응답하여, 제1 프로세서는 버스 인터페이스를 디스에이블하고, 제2 프로세서를 리셋하도록 구성된다.
제3 변형례에서, 제1 프로세서는 애플리케이션 프로세서(applications processor)를 포함하고, 제2 프로세서는 기저대역 프로세서(baseband processor)를 포함한다.
제4 변형례에서, 버스 인터페이스는 PCIe(Peripheral Component Interconnect Express) 버스를 포함한다.
제5 변형례에서, 제2 프로세서는 중단 핸들러를 더 포함한다.
제4 양태에서, 2 개 이상의 독립적으로 동작가능한 프로세서들 간에 에러 정보를 저장하도록 구성된 장치가 개시되어 있다. 하나의 실시예에서, 본 장치는 제1 프로세서와 제2 프로세서를 결합하도록 구성된 물리 버스 인터페이스; 및 복수의 명령어들을 포함하는 컴퓨터 판독가능 매체를 포함한다. 하나의 예시적인 실시예에서, 컴퓨터 판독가능 매체는, 제2 프로세서에 의해 실행될 때, 제2 프로세서로 하여금, 제2 프로세서에서 크래시 이벤트에 대해 모니터링하도록 구성된 하드웨어 안전 메커니즘을 인에이블하게 하고; 크래시 이벤트가 발생했다는 것을 제1 프로세서에 표시하게 하고; 하나 이상의 에러 복구 절차들을 개시하여, 에러 정보를 저장하게 하고; 에러 정보가 저장되었을 때, 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 제1 프로세서에 표시하게 한다.
하나의 변형례에서, 복수의 명령어들은, 실행될 때, 하나 이상의 에러 복구 절차들이 성공적으로 완료되었을 때 추가의 명령어들을 기다리기 위해 루프에 들어가도록 추가로 구성된다. 하나의 이러한 경우에서, 복수의 명령어들은, 실행될 때, 제2 프로세서의 리셋을 야기시키도록 추가로 구성된다.
다른 변형례에서, 복수의 명령어들은, 실행될 때, 하드웨어 안전 메커니즘의 인에이블 이전에 보류 중인 버스 트랜잭션들을 완료하도록 추가로 구성된다.
본 개시 내용의 다른 특징들 및 장점들은 이하에서 제공되는 바와 같은 예시적인 실시예들의 상세한 설명 및 첨부 도면들을 참조하여 관련 기술분야의 통상의 기술자에 의해 즉각 인식될 것이다.
도 1은 본 명세서에 설명된 다양한 원리들을 예시하는데 유용한 하나의 예시적인 장치를 나타낸 논리 블록도이다.
도 2는 본 명세서에 설명된 다양한 원리들을 예시하는데 유용한 하나의 예시적인 물리 버스 인터페이스를 나타낸 논리 블록도이다.
도 3은 본 개시 내용의 원리들에 따른 중단 시퀀스를 핸들링하기 위한 하나의 예시적인 방법의 논리 흐름도이다.
도 4는 본 개시 내용의 원리들에 따른 전원 끄기 시퀀스(power down sequence)를 핸들링하기 위한 예시적인 방법의 논리 흐름도이다.
도 5는 본 개시 내용의 원리들에 따른 에러 복구 절차를 구현하는 하나의 논리 래더 다이어그램(logical ladder diagram)의 논리 흐름도이다.
2015년 제작된 도면들 모두에 대한 모든 저작권은 Apple Inc.에 있습니다.
이제부터 도면들에 대한 참조가 이루어지며, 도면들 전체에 걸쳐 유사한 번호는 유사한 부분을 가리킨다.
예시적인 실시예들의 상세한 설명
본 개시 내용의 예시적인 실시예들이 이제부터 상세히 설명된다. 이 실시예들은 주로 (예컨대, 2014년 10월 8일자로 발표된 "PCI Express Base Specification Revision 3.1"에 기재된 것과 같은) PCIe(Peripheral Component Interconnect Express) 표준의 컨텍스트에서 논의되지만, 관련 기술분야의 통상의 기술자라면 본 개시 내용이 그렇게 제한되지 않는다는 것을 인식할 것이다. 사실상, 본 개시 내용의 다양한 양태들은, 본 명세서에 개시되어 있는 바와 같이, 다수의 독립적인 처리 요소들을 통합하고 조정하도록 구성되는 임의의 디바이스 또는 디바이스들의 네트워크에서 유용하다.
이하의 실시예들은, 예컨대, 에러 정보, 독립적으로 동작가능한 프로세서들 간의 통신 프로토콜들, 및 일정 범위의 잠재적인 치명적 에러들에 걸쳐 에러 정보 복구를 위한 일관성 있는 프레임워크들의 특정 구현들을 설명하지만, 관련 기술분야의 통상의 기술자라면, 이러한 설명들이 본 명세서에 설명된 보다 광범위한 원리들을 예시한 것에 불과하다는 것을 손쉽게 인식할 것이다.
예시적인 독립적 프로세서 동작 -
과거에, 대부분의 컴퓨팅 디바이스들은, 단일 프로세서가 소프트웨어 실행을 관리하는 일을 대체로 맡고 있는 개인용 컴퓨터(PC) 패러다임에 따라 설계되었다. 그렇지만, 다양한 생태계의 설계들 및 사용들에 적합하도록 컴퓨팅 디바이스들이 상당히 발전하였고; 부가적으로, 프로세서 기술들이 향상되어, 거의 생필품 가격(commodity prices)으로 상당한 컴퓨팅 능력을 제공하고 있다. 소비자 전자 제품들(예컨대, 개인용 무선 디바이스들(아이폰 등), 개인용 미디어 디바이스들(아이패드/아이팟 등), 및 개인용 컴퓨터들(맥북 프로맥북 에어 등))의 컨텍스트 내에서, 다양한 고려 사항들은 다수의 독립적인 프로세서 동작을 이용하는 설계를 초래하엿다.
예를 들어, 전형적인 무선 디바이스들에서, 애플리케이션 프로세서(AP)는 무선 기저대역 모뎀 프로세서(wireless baseband modem processor)(BB)와 독립적으로 동작한다. 정상 동작 동안, 무선 디바이스는 특정의 응용 분야에 따라 AP 및 BB 중 하나 또는 둘 다를 선택적으로 사용할 수 있다. AP 또는 BB 중 어느 것도 활성 이용 중이지 않을 때(또는 이용을 위해 준비되어 있지 않거나 할 때), 프로세서는 전력 소모를 감소시키는 것 등을 위해 슬립 상태에 들어간다. 미디어 디바이스들(미디어 프로세서는 애플리케이션 프로세서와는 독립적임) 등을 위해 개념적으로 유사한 설계 패러다임들이 이용된다.
불행하게도, 디바이스들은 복잡도가 꾸준히 증가해온 반면, 다수의 독립적인 프로세서들 간에 동작을 조정하는 것은 대체로 간과되어 왔다. 예를 들어, 보다 빠른 데이터 레이트들을 핸들링하고 보다 높은 레벨의 데이터 처리율을 제공할 수 있는 버스 기술들이 발전하였다. 하나의 이러한 예가 PCIe(Peripheral Component Interconnect Express)이다. PCIe는 과거에 고속 직렬 컴퓨터 확장 버스 기술로서 이용되었는데; PCIe는 모든 종단점 구성요소(endpoint component)(예컨대, 그래픽 카드, 메모리 등)를 루트 컴플렉스(root complex)(예컨대, 호스트 프로세서)에 연결시키는 개별적인 직렬 링크들과의 점대점 연결(point-to-point connectivity)에 기초하고 있다. 그렇지만, 기존의 PCIe 기술들은 상당한 전력을 소비하고, (셀룰러 디바이스, 휴대용 랩톱, 및/또는 다른 휴대용 미디어 플레이어에서 통상적인 것과 같이) "호스트" 프로세서가 슬립 상태에 있는 동안 "주변 기기" 프로세서가 동작할 필요가 있거나 그 반대인 경우에서의 설계들에 부적합하다.
전형적인 동작 동안, PCIe 버스는, 예컨대, 알려지지 않은 메시지들, 소프트웨어 및/또는 하드웨어 에러들, 일정치 않은 간섭 등에 의해 야기되는 예상치 못한 상태들을 경험할 수 있다. 기존의 PCIe 버스 기술들은 예상치 못한 버스 상태들을 해결하는데 있어서 신뢰할 수 없는 것으로 악명이 높다. 예를 들어, 특정 컴퓨터 시스템들 내에서, PCIe 장애의 결과, 사용자에게 컴퓨터 시스템을 리셋하도록 요구하는 치명적 에러(예컨대, 소위 "블루 스크린(Blue Screen of Death)")가 발생한다. 관련 기술분야의 통상의 기술자라면 예상치 못한 치명적 에러 상태들의 광범위한 가능한 소스들(예컨대, 잘못 작성된(poorly written) 디바이스 드라이버, 메모리 누수 등)이 있다는 것을 손쉽게 인식할 것이지만, 보다 복잡한 하드웨어, 소프트웨어, 및 버스 토폴로지들이 변함없이 에러 상태들의 확률을 증가시킨다는 것이 인식된다.
게다가, 에러 복구 방법론들이 프로세서 기술분야 내에서 세분화된다. 예를 들어, 일부 프로세서들은 예상치 못한 크래시의 경우에 에러 정보(소위 "코어 덤프" 파일들, 및/또는 디버깅 정보 등)를 수집하여 제공한다. 다른 프로세서들은 (예컨대, 알려진 동작 상태로 리턴하기 위해) 다른 주변 기기들/프로세서들을 강제로 재부팅하게 하는 것에 의해 시스템을 복구하려고 시도할 수 있다. 또 다른 프로세서들은 전체 디바이스의 전원을 껐다 켬(power cycle)으로써 디바이스 컨텍스트(device context)를 완전히 리셋하는 소위 "패닉 모드(panic mode)"를 이용할 수 있다. 소프트웨어 크래시들이 아주 다양한 시나리오들에서 일어날 수 있고, 각각의 프로세서는 다른 프로세서들이 여전히 동작하고 있는지를 확실히 알 수 없기 때문에, 동일한 디바이스 내의 상이한 프로세서들은 마구잡이로 다수의 상이한 방법들을 구현할 수 있다. 예를 들어, BB가 유용한 디버깅 정보를 수집하는 것 등을 하려고 시도하고 있는 동안 AP가 BB를 리셋할 수 있다. 이 최악의 경우의 시나리오들에서, 어쩌면 유용한 디버깅 정보가 수집되었더라도, 설계 엔지니어들은 디버깅 정보가 장애 이전에 수집되었는지, 장애 동안에 수집되었는지, 또는 장애 이후에 수집되었는지를 결정할 수 없고; 일부 경우들에서, 디버깅 정보는 심지어 손상되었거나 할 수 있다.
이러한 컨텍스트 내에서, 2 개(또는 그 이상)의 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 가능하게 하는 방법들 및 장치들이 이제부터 설명된다. 이상적인 해결책들은 치명적 에러의 경우에 에러 정보를 보존하고, 독립적으로 동작가능한 프로세서들 간에 리셋 상태들을 조정하며, 일정 범위의 잠재적인 치명적 에러들에 걸쳐 에러 정보 복구를 위한 일관성 있는 프레임워크들을 구현한다. 이하의 논의는 "루트 컴플렉스"(RC)(또는 "호스트") 프로세서 및 "종단점"(EP)(또는 "주변 기기") 프로세서와 관련하여 설명된다. 이하에서 명백하게 될 이유들로 인해, 호스트 또는 주변 기기 프로세서에 관한 명칭이 이하의 설명들을 단순화 및/또는 명확화하기 위해 이용되고, 기존의 호스트 또는 주변 기기 기능성을 암시하지 않는다는 것이 인식된다.
본 명세서에서 이용되는 바와 같이, 물리적 메커니즘들, 속성들 또는 기능성들을 데이터 구조로서 표현하는 추상화(전형적으로 소프트웨어 또는 머신 로직(machine logic)에서 수행됨)를 지칭하기 위해 "논리" 또는 "가상"이라는 용어가 교환가능하게 이용될 수 있다. 예를 들어, "논리 버스 인터페이스", "가상 버스 인터페이스" 등은 일반적으로 버스 인터페이스를 일련의 데이터 구조들로서 추상화하거나 표현한 것을 지칭한다. 이와 달리, 본 명세서에서 이용되는 바와 같이, "물리 버스 인터페이스"는 물리적으로 유형적인 버스 인터페이스(physically tangible bus interface)의 물리적 메커니즘들, 속성들 또는 기능성들을 지칭한다.
예시적인 장치 -
도 1은 본 명세서에 설명된 다양한 원리들을 예시하는데 유용한 하나의 예시적인 장치(100)를 도시한다. 도시된 바와 같이, 장치(100)는 제1 및 제2 프로세서(102A, 102B), 및 2 개(또는 그 이상)의 독립적으로 동작가능한 프로세서들 간에 통신 링크를 구현하도록 구성되는 물리 버스 인터페이스(104)를 포함한다.
하나의 구현에서, 제1 프로세서(102A)는 애플리케이션 프로세서(AP)를 포함한다. 도 1에 도시된 바와 같이, 제1 프로세서(102A)는 통신 링크의 호스트로서 기능하는 루트 컴플렉스(RC)(106A)에 결합된다. 하나의 구현에서, 제2 프로세서(102B)는 무선 모뎀 기저대역(BB)을 포함한다. 다른 실시예들에서, 제2 프로세서(102B)는, 예컨대, 미디어 프로세서 또는 다른 네트워크 처리 요소일 수 있다. 도 1에 도시된 바와 같이, 제2 프로세서(102B)는 통신 링크의 주변 기기로서 기능하는 종단점(EP)(106B)에 결합된다.
도시된 바와 같이, 제1 및 제2 프로세서들(102A, 102B) 둘 다는 비일시적인 컴퓨터 판독가능 매체(예컨대, 랜덤 액세스 메모리(RAM))(108A, 108B)에 각각 결합된다. 비일시적인 컴퓨터 판독가능 매체는 실행을 위한 컴퓨터 판독가능 명령어들을 저장하도록 구성된다. 본 명세서에서 이용되는 바와 같이, "메모리"라는 용어는 ROM, PROM, EEPROM, DRAM, SDRAM, DDR/2 SDRAM, EDO/FPMS, RLDRAM, SRAM, "플래시" 메모리(예를 들어, NAND/NOR), 및 PSRAM(이들로 제한되지 않음)을 비롯하여, 디지털 데이터를 저장하도록 구성된 임의의 타입의 집적 회로 또는 다른 저장 디바이스를 포함한다. 일부 경우들에서, 제1 및/또는 제2 프로세서들은, 컴퓨터 판독가능 명령어들을 저장하도록 그리고 전력이 끊기는 경우 저장된 컴퓨터 판독가능 명령어들을 유지하도록 구성되는 연관된 비휘발성 메모리(110)(예컨대, 플래시 메모리)를 가질 수 있다.
하나의 예시적인 실시예에서, 제1 프로세서(102A) 및 연관된 메모리(108A)는 제2 프로세서를 관리하고, 인터럽트들을 송신하고 수신하며, (통신 링크를 통한) 프로세서간 통신(inter-processor communications)을 호스팅하고, 통신 버스의 루트 컴플렉스로서 동작하도록 구성된다. 이와 달리, 제2 프로세서(102B) 및 연관된 메모리(108B)는 통신 버스의 종단점(EP)으로서 동작하고, 슬레이브로서 프로세서간 통신에 대해 응답하며, GPIO를 표명 및 표명해제(de-assert)하고, 다양한 중단 시나리오들을 핸들링하도록 구성된다. 부가적으로, 제2 프로세서(102B)는 다양한 처리 용량으로(예컨대, 무선 모뎀을 위한 기저대역 프로세서로서) 동작하고/하거나, 복수의 서브시스템들(예컨대, 오디오 코덱들, 디스플레이 드라이버들, 무선 모뎀 구성요소들 등)을 관리할 수 있다.
도 2에 도시된 바와 같이, 물리 버스 인터페이스(104)의 하나의 실시예는 (예컨대, 2014년 10월 8일자로 발표된 "PCI Express Base Specification Revision 3.1" 및 2012년 8월 23일자로 승인된 "ECN L1 PM Substates with CLKREQ"(그 전체가 참고로 본 명세서에 포함됨)에 기재된 것과 같은) PCIe(Peripheral Component Interconnect Express) 표준에 대체로 기초한다. 크래시 복구 기능성을 지원하기 위한 종래의 PCIe 물리 버스 인터페이스(104)(및 그것과 함께 이용되는 프로토콜들)에 대한 수정들이 이하에서 더 상세히 설명된다. 관련 기술분야의 통상의 기술자는, 본 개시 내용의 발명 내용이 주어지면, 다른 버스 인터페이스 표준들로 동등하게 성공적으로 대체될 수 있다는 것을 손쉽게 인식할 것이다. 예를 들어, PCIe 인터페이스는, 앞서 이전에 포함된, 2014년 10월 8일자로 출원되고 공동 소유이고 동시 계류 중인, 발명의 명칭이 "독립적으로 동작가능한 프로세서들 간의 프로세서간 통신 링크를 위한 방법 및 장치(METHODS AND APPARATUS FOR AN INTER-PROCESSOR COMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS)"인 미국 가특허 출원 제62/061,605호에 기재된 바와 같이, 프로세서간 통신(IPC) 링크로서 동작하도록 수정될 수 있다.
예시적인 실시예에서, 물리 버스 인터페이스(104)는 2 개의 PCIe 포트들(RC와 EP) 간의 점대점 통신 채널이며, 이는 그 둘이 액세스 요청들(구성 판독/기입, I/O 판독/기입, 메모리 판독/기입) 및 인터럽트들을 송/수신할 수 있게 한다. 물리 레벨에서, 링크는 하나 이상의 레인(lane)들(하나가 도 2에 도시됨)로 이루어져 있고, 각각의 레인은 수신 및 송신 구성요소(pcie_rx, pcie_tx)를 가진다. 각각의 레인은, 링크의 RC와 EP 사이에서, 양 방향으로 동시에, 8-비트 "바이트" 포맷으로 데이터 패킷들을 전송하는 전이중 바이트 스트림(full-duplex byte stream)이다. 물리 링크(104)는 다수의 진행 중인 데이터 세션들을 나타내는 다수의 논리 링크들(또는 가상 버스 인터페이스들)을 지원할 수 있다.
또한, 물리 버스 인터페이스(104)는 크래시 복구를 가능하게 하는 세(3)개의 신호들을 더 포함한다. 하나의 예시적인 실시예에서, 신호들은 범용 입/출력(GPIO): (i) BB_PMU_RST GPIO, (ii) BB_RST GPIO, 및 (iii) RESET_DET GPIO를 통해 구현된다. BB_PMU_RST GPIO는, 토글될 때, EP의 전원 끄기를 야기시키는, RC로부터 EP로의 GPIO이다. BB_RST GPIO는, 토글될 때, EP의 리셋을 야기시키는, RC로부터 EP로의 GPIO이다. RESET_DET GPIO는 EP로부터 RC로 제공되고, EP가 리셋될 때 표명된다. 하나의 실시예에서, PCIe WAKE# GPIO는 PCIe 인터페이스의 일부로서 EP로부터 RC로 제공되지만, 부가적으로, EP가 그 자신의 에러 복구 프로세스를 끝냈을 때(예컨대, 코어 덤프를 RAM에 성공적으로 저장했을 때) 표명되기 위해 "오버로드"된다. 대안의 실시예들은 에러 복구 프로세스의 성공적인 완료를 표명하는데 GPIO를 전용할 수 있다.
예시적인 부트 프로세스 및 슬립/웨이크 절차들 -
간략한 여담으로서, 예시적인 장치(100)와 관련하여 유용한 하나의 부트 시퀀스의 간략한 요약이 본 명세서에서 제공된다. 간결함 및 명확함을 위해, 이하의 논의는 포괄적이지도 배타적이지도 않으며, 관련 기술분야의 통상의 기술자라면 다수의 독립적인 프로세서들을 부팅하기 위한 다른 방식들로 손쉽게 대체될 수 있고, 이하의 것은 이후부터 상세히 설명되는 후속 절차들을 적용하는데 도움을 주기 위해 제공되는 것에 불과하다는 것을 손쉽게 인식할 것이다.
전원 켜기 또는 리셋 시에, 장치(100)는 온보드 판독 전용 메모리(ROM)(또는 다른 플래시 메모리)와 같은 1차 부트 로더(primary boot loader)(PBL) 비휘발성 메모리를 검색하는 제2 프로세서(102B)(BB)를 초기화한다. 이와 동시에(또는 BB 부트 시퀀스 이전에), 제1 프로세서(102A)(AP)는 그의 운영 체제(OS)를 초기화하고, 부팅하며, 실행한다.
일단 BB(102B)가 성공적으로 전원이 켜지면(또는 웨이크되거나 하면), AP(102A)는 물리 버스 인터페이스(104)(예컨대, PCIe 버스)에 전력을 공급하고, 링크를 열거한다. 하나의 예시적인 구현에서, AP(102A)는 PCIe 버스(104)를 거쳐 그 자신 및 BB 프로세서(102B)를 열거한다. 성공적인 열거 시에, AP는 BB 2차 부트 로더(secondary boot loader)(SBL)를 검색하고, 이를 PCIe 버스를 통해 BB로 송신한다. BB는 SBL을 수신하고, 그에 응답하여, SBL로부터 부팅한다.
일단 BB(102B)가 SBL을 실행하기 시작하면, AP(102A)는 BB(102B)의 최종 소프트웨어 이미지를 페치하고, 이를 물리 버스 인터페이스(104)를 거쳐 BB(102B)로 송신한다. 그 후에, BB(102B)는 그의 최종 소프트웨어 이미지(예컨대, 운영 체제(OS))를 실행한다. 부트 절차의 결말에서, AP 및 BB 둘 다는 그들의 대응하는 OS를 실행한다.
이전에 언급된 바와 같이, AP 및 BB는 별개로 슬립 모드에 들어가고/그로부터 각각 빠져나올 수 있는 독립적으로 기능하는 프로세서들이다. 일부 실시예들에서, AP가 슬립 상태에 있을 때, 통신 링크가 연결해제된다. 다른 실시예들에서, AP 또는 BB 중 어느 하나(또는 둘 다)가 슬립 상태에 있을 때, 통신 링크가 연결해제된다. 웨이크 시에, 통신 링크는 통신을 인에이블하기 위해 재열거한다. 불행하게도, 기존의 종래 기술의 설계들에서, AP는 열거가 항상 성공하는 것으로 가정하고; 따라서, BB가 예상치 못한 방식으로 응답하는 경우, AP는 그 자신이 알려지지 않은 상태에 있는지 또는 BB가 알려지지 않은 상태에 있는지를 결정할 수 없기 때문에, AP는 자동으로 "패닉 모드"에 들어간다(즉, AP는 알려진 상태로 리셋하기 위해 전체 디바이스의 전원을 껐다 켬). 소비자의 관점에서, 이것은 관찰해보면 명백한 아주 바람직하지 않은 결과이다.
실용적 관점에서, BB가 성공적으로 열거하지 못할 수 있는(이는 바람직하지 않은 "패닉 모드"를 초래함) 많은 이유들이 있다. 예를 들어, BB는 소위 "중단 핸들러" 동작들 동안 응답하지 않을 수 있다. 하나의 이러한 구현에서, BB는 다수의 서브시스템들(예컨대, 무선 모뎀, 코덱들, 전력 관리 등)로 이루어져 있고; 이 서브시스템들 각각은 일반적으로 상당히 강건하지만, 소프트웨어/하드웨어에서의 모든 "버그들"을 예측/제거하는 것은 경제적으로 실현가능하지 않다. 그 결과, 예시적인 BB 소프트웨어는 장애가 관찰될 때 디버깅 정보를 수집하도록 구성되는 중단 핸들러를 포함한다. 상세하게는, 한가지 타입의 디버깅 정보는, 프로세서가 실행 메모리의 내용을 비실행 공간으로 복사하여 그것이 나중에 분석될 수 있게 하는 소위 "코어 덤프"이다. 일단 코어 덤프가 성공적으로 저장되면, BB는 달리 지시받을 때까지 널 명령(null command)을 실행하고(예컨대, while 루프에서 "빙빙 돌고(spin)"); 이어서 그 후에, AP는 BB를 리셋하고, PBL/SBL 프로세스의 일부로서 코어 덤프를 검색할 수 있다. 불행하게도, BB는 코어 덤프들을 검색/저장할 때 PCIe 명령들에 응답하지 않을 것이고(이는 몇 초 정도일 수 있음); 환언하면, AP가 초기 크래시와 널 명령 실행 사이의 간격 동안 BB를 열거하려고 시도하는 경우, BB는 응답하지 않을 것이고, AP는 패닉 모드 응답을 트리거할 것이다.
본 개시 내용의 다양한 실시예들은, 슬레이브 프로세서가 크래시되었다는 것을 호스트 프로세서가 알지 못하는 구성요소들의 임의의 시스템에 적용가능하다. 보다 일반적으로, 관련 기술분야의 통상의 기술자라면, 2 개(또는 그 이상)의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서가 에러 정보(예컨대, 코어 덤프, 디버깅 로그 등)를 복구하기 위해 다른 프로세서(들)와 협력해야 하는 임의의 시스템에 본 명세서에 설명된 원리들이 광범위하게 적용가능하다는 것을 손쉽게 인식할 것이다.
예시적인 프레임워크 -
표 1은 도 1의 예시적인 장치와 관련하여 유용한 하나의 예시적인 프레임워크를 예시한다. 제시된 바와 같이, 이 프레임워크는 애플리케이션 프로세서(AP)와 기저대역(BB)에 의해 수행되는 적절한 액션을 식별한다.
Figure pat00001
표 1에 요약된 다양한 엔티티들이 이제부터 보다 상세히 설명된다.
중단 핸들러 -
도 3은 중단 시퀀스를 핸들링하기 위한 예시적인 방법(300)의 하나의 논리 흐름도를 도시한다.
방법(300)의 단계(302)에서, 중단 핸들러는 (있다면) 모든 진행 중인 PCIe 버스 트랜잭션들이 완료되는 것을 보장한다. 일부 경우들에서, 이것은 송신 버퍼의 남아 있는 내용의 전송을 완료하는 것을 포함할 수 있고, 다른 경우들에서, 이러한 전송은 예상된 방식으로(예컨대, 미리 정의된 프로토콜 등에 따라 전송을 종료하는 것에 의해) 단축된다. 또 다른 실시예들에서, 이러한 전송은 종료 신호 및/또는 패킷을 송신하는 것 등에 의해 중단될 수 있다.
단계(304)에서, 중단 핸들러는 하드웨어 워치독을 인에이블한다. 이하에서 더 상세히 설명되는 바와 같이, 하드웨어 워치독은, 소프트웨어가 응답하지 못한 경우에도, 프로세서가 자신을 리셋하는 것에 의해 알려진 상태로 리턴할 수 있는 것을 보장하는 전용의 하드웨어 안전 메커니즘이다.
단계(306)에서, 중단 핸들러는 PCIe 디버깅 정보를 수집하고, 버스 에러 정보를 차후의 분석을 위해 비실행 메모리에 저장한다. 실행 메모리가 리셋 동안 보존되지 않을 것이지만(예컨대, 실행 동안 겹쳐쓰기되거나 할 수 있음); 이와 달리, 비실행 메모리는 보존될 수 있고, 따라서 시스템이 리셋된 후에도 에러 정보가 복구될 수 있다.
단계(308)에서, 중단 핸들러는 PCIe WAKE# GPIO를 표명해제하고, RESET_DET GPIO를 표명하며, 그에 의해 BB가 크래시되었다는 것을 AP에 표시한다. 이전에 언급된 바와 같이, 크래시 이벤트의 발생을 표시하고 그에 의해 AP가 BB와의 추가적인 트랜잭션들을 방지하는 것을 허용하기 위해, RESET_DET GPIO가 BB에 의해 표명된다. 그렇지만, BB는 부가적으로 크래시의 경우에 중대한 에러 복구 태스크들을 수행하고, 따라서 BB가 그의 에러 복구 태스크들을 끝냈다는 것을 AP에 표시하기 위해 WAKE# GPIO가 오버로드되었다. WAKE# GPIO를 표명해제하는 것에 의해, BB는 에러 복구 태스크들이 진행 중이라는 것을 AP에 표시한다.
단계(310)에서, 중단 핸들러는 PCIe 링크 상태를 검사한다. 링크가 다운되는 경우, 링크는 미리 구성된 양의 시간 동안 PERST# 표명해제를 기다리고; 미리 구성된 양의 시간이 경과하면, 중단 핸들러는 다음 단계(단계(312))로 진행한다. 그렇지 않고, PERST#이 표명해제되는 경우, 중단 핸들러는 열거(재열거)를 위해 PCIe 버스 클럭들을 인에이블한다.
그 후에, 중단 핸들러는, 예컨대, 기저대역 코어, 서브시스템들 등으로부터 디버깅 정보를 수집하고, 디버깅 정보를 차후의 분석을 위해 비실행 메모리에 저장한다(단계(312)).
일단 디버깅 정보가 올바르게 저장되었으면, 중단 핸들러는 WAKE# GPIO를 표명하고(단계(314)), 하드웨어 워치독을 디스에이블하며(단계(316)), 달리 지시받을 때까지 널 명령어들을 실행한다(예컨대, while 루프에서 빙빙 돎). WAKE# GPIO를 표명하는 것에 의해, BB는 자신이 에러 복구 절차들을 완료했다는 것을 AP에 표시한다.
하나의 예시적인 실시예에서, 방법(300)(또는 그의 일부분)은 명시된 시간 제약들(예컨대, 최대/최소 시간 지속기간)에 의해 제한된다. 예를 들어, 하나의 이러한 구현에서, BB가 중단 핸들러를 실행하기 시작할 때(단계(302))부터 기저대역이 PCIe 링크 상태를 검사할 때(단계(310))까지의 시간 간격이 10 밀리초(ms) 미만일 필요가 있다.
간단히 말하면, AP는 RESET_DET GPIO 표명을 통해 기저대역 크래시를 검출하도록 구성되고, WAKE# GPIO 표명을 통해 BB가 그의 에러 복구 절차들을 완료했을 때를 검출하도록 추가로 구성된다. 에러 복구 절차들이 성공적으로 완료된 후에만, AP는 BB_RST GPIO를 표명하여, BB의 리셋을 야기시킨다.
전원 끄기 핸들러 -
도 4는 전원 끄기 시퀀스를 핸들링하기 위한 예시적인 방법(400)의 하나의 논리 흐름도를 도시한다. 일부 실시예들에서, 전원 끄기 핸들러는 중단 핸들러 내에 통합되고; 대안적으로, 전원 끄기 핸들러는 중단 핸들러와는 물리적으로 또는 논리적으로 별개의 것일 수 있다.
BB가 AP로부터 송신된 명령을 통해 전원 끄기될 때, BB는 그의 전원 끄기 핸들러를 실행할 것이다. 먼저, 전원 끄기 핸들러는 (있다면) 모든 진행 중인 PCIe 버스 트랜잭션들이 완료되는 것을 보장한다(단계(402)).
단계(404)에서, 전원 끄기 핸들러는 하드웨어 워치독 타이머를 인에이블한다. 하나의 변형례에서, 워치독이 만료되기 전에 PCIe 링크가 업되는 경우, AP는 리셋에 의해 야기된 PCIe 링크 다운 이벤트를 검출할 것이다.
단계(406)에서, BB는 기저대역 크래시가 발생했다는 것을 시그널링한다. 하나의 실시예에서, BB는 RESET_DET GPIO를 표명하고, WAKE# GPIO를 표명해제한다.
단계(408)에서, BB는 임의의 기존의 실행 중인 프로세스들을 정지(quiesce)시키고, 에러 복구를 수행한다. 보다 일반적으로, BB는 실행 메모리에 대한 추가적인 변경들을 방지하기 위해 실행 중인 프로세스들을 일시중지(pause), 중지(halt), 보류(suspend)하거나 또는 이러한 프로세스들의 상태를 다른 방식으로 변경한다. 일부 변형례들에서, BB는 부가적으로 실행 메모리의 내용을 차후의 분석을 위해 비실행 메모리에 저장할 수 있다. 일부 경우들에서, BB는 보류 중인 기입/판독을 완료한다. 다른 구현들에서, 보류 중인 기입/판독이 플러시된다(flushed). 관련 기술분야의 통상의 기술자라면, 본 개시 내용의 발명 내용이 주어질 때, 크래시 복구를 예상하여 컴퓨터 프로세스들의 실행을 안정화하는 다양한 다른 방식들을 손쉽게 인식할 것이다.
단계(410)에서, 일단 BB가 정지 중인 동작(quiescing operation)을 완료하였으면, BB는 에러 복구가 성공적으로 완료되었다는 것을 표시하기 위해 PCIe WAKE# GPIO를 표명한다. 그 후에, BB는 하드웨어 워치독 타이머를 디스에이블하고, while 루프에서 빙빙 돌 수 있다(또는 일부 다른 형태의 널 명령 실행).
일단 AP가 WAKE# 및 RESET_DET GPIO 둘 다가 표명되었다는 것을 검출하면, AP는 BB_PMU_RST GPIO를 통해 BB의 전원을 끈다.
통상적인 크래시 시나리오들 -
표 1을 다시 참조하여, 다양한 통상적인 크래시 시나리오들이 이제부터 더 상세히 설명된다.
먼저, 소프트웨어 크래시의 경우에, BB는 그의 중단 핸들러에 들어간다. AP와 BB 사이의 PCIe 링크 상태가 변경되지 않은 채로 유지된다. BB는 중단 핸들러를 실행하고, RESET_DET GPIO를 표명한다. 그 후에, AP가 (예컨대, RESET_DET 표명 및 WAKE# 표명을 통해) BB 크래시 및 BB 중단 핸들러 시퀀스의 성공적인 완료를 검출할 때, AP는, 먼저 PCIe 포트의 전원을 끄고 BB_RST GPIO를 통해 BB를 리셋하며 이어서 PCIe 포트의 전원을 켜는 것에 의해, BB를 리셋한다. 이어서, BB는 그에 응답하여 PCIe를 거쳐 ROM에 열거할 것이고, AP는 이어서 코어 덤프들을 수집할 수 있다.
유사하게, 특정 크래시들이 하드웨어 워치독 만료로 인해 일어날 수 있다. 하드웨어 워치독은 그의 타이머가 만료되는 것이 허용되는 경우 BB를 리셋하도록 구성되는 전용의 하드웨어 구성요소이다. 정상 동작 동안, 워치독 타이머는 프로세서에 의해 그것이 완전히 멈추기 전에 주기적으로 리셋되지만; 프로세서가 알려지지 않은 상태에 있고, 워치독을 리셋할 수 없을 때, 워치독 타이머는 만료되고, 프로세서를 리셋한다. 이 결과, 프로세서가 그의 ROM을 재실행한다. 예시적인 실시예에서, BB가 리셋될 때, AP는 (PCIe 링크가 활성인 경우) PCIe 링크 다운 이벤트를 검출할 것이다. 그에 응답하여, AP는 (예컨대, RESET_DET 표명 및 WAKE# 표명을 통해) BB 중단 핸들러 시퀀스의 성공적인 완료까지 기다리고, 그 후에 AP는, 먼저 PCIe 포트의 전원을 끄고 BB_RST GPIO를 통해 BB를 리셋하며 이어서 PCIe 포트의 전원을 켜는 것에 의해, BB를 리셋한다. 전술한 소프트웨어 크래시들에서와 같이, AP는 이어서 코어 덤프들을 수집할 수 있다.
일부 경우들에서, AP는 소프트 리셋 또는 셧다운을 명시적으로 트리거할 수 있다. 이 시나리오들에서, BB는 그의 전원 끄기 핸들러를 실행하고, PCIe 링크는 동작 상태를 유지한다. 그 후에, AP는 PCIe 링크의 전원을 끄고, 그 후에 BB_RST GPIO를 통해 BB를 리셋하거나 BB_PMU_RST를 통해 BB의 전원을 끈다.
표 1에 제시된 바와 같이, PCIe 링크 장애를 처리하는 다수의 시나리오들이 있다. 예를 들어, 일부 실시예들에서, BB에 대한 디폴트 거동은 PCIe 링크 장애의 경우에 중단 핸들러를 실행하는 것이다. 중단 핸들러에 들어갈 때, BB는 RESET_DET GPIO를 표명하고, 그 결과 AP는 PCIe 링크 장애를 BB 크래시로서 취급한다. 전술한 시나리오들에서와 같이, AP는, PCIe 링크를 리셋하는 것, BB를 재열거하는 것, 및 코어 덤프를 검색하는 것 등 이전에, BB가 중단 핸들러 실행을 완료하기를 기다릴 것이다. 이 시나리오 하에서, AP는 (BB 내의) EP 인터페이스로부터 에러 정보를 검색할 수 있지만, AP는 RC 내의 에러 정보를 검색가능하지 않을 수 있다.
대안적으로, 일부 특수한 경우들에서, BB는 PCIe 링크 장애 동안 운영 체제(OS) 내에 유지될 수 있다. 예를 들어, AP는 AP의 소프트웨어 디버깅에 도움을 주기 위해 OS에 유지되도록 BB를 구성할 수 있다. 이 시나리오들에서, BB는 RESET_DET GPIO를 표명하지 않을 것이다(이는 BB가 리셋되어 있지 않다는 것을 표시함). 호스트 상의 IPC 드라이버는 PCIe 링크 장애 및 BB가 리셋되어 있지 않다는 것을 검출할 것이다. 그 결과, AP는 RC 상에서의 PCIe 링크의 디버그를 허용하도록 패닉 모드를 트리거할 것이다. 이 시나리오들에서, BB가 그의 중단 핸들러 기능성을 실행하지 않기 때문에, BB 에러 정보 전부가 상실된다.
더욱이, AP 또는 BB 중 어느 하나와 무관하게 PCIe 링크 장애가 생기는 시나리오들도 있다. 예를 들어, 일부 경우들에서, (예컨대, 표명해제된 상태로 유지되는 RESET_DET GPIO에 의해 입증되는 바와 같이) BB가 여전히 정상적으로 실행되고 있는 동안 AP가 PCIe 링크를 거쳐 완료 타임아웃을 검출할 수 있다. 여기서, AP IPC 드라이버는 명시적으로 PCIe 포트의 전원을 끌 것이다. BB는 PCIe 링크 장애를 인식하고, (구성에 따라) (1) 중단 핸들러를 실행하거나; 또는 그렇지 않으면 (2) OS 내에 머무를 것이다. 그 후에, AP는 완료 타임아웃을 치명적 기저대역 에러로서 취급하고, 기저대역 리셋을 트리거할 것이다.
이와 달리, BB가 PCIe 링크를 거쳐 완료 타임아웃을 검출하는 경우, 디폴트 동작 하에서, BB는 중단 핸들러에 들어가고, RESET_DET GPIO를 표명할 것이다. 그 후에, AP는 장애를 BB 크래시로서 취급할 수 있다. 앞서 언급된 바와 같이, 디폴트 동작은 AP가 EP 인터페이스 내의 에러 정보에 기초하여 링크 레벨 이슈들을 디버깅할 수 있게 하지만, RC 내의 정보는 상실된다. 대안적으로, BB가 AP 디버깅을 돕기 위해 OS에 유지되도록 구성되는 경우, BB는 RESET_DET GPIO를 표명하지 않고 명시적으로 PCIe 링크 다운을 초래할 것이다. AP는 링크 장애 및 표명해제된 RESET_DET GPIO를 검출할 것이고; 그 결과 AP는 패닉 모드를 트리거할 것이다. 이 크래시 시나리오에서, AP는 RC 인터페이스를 디버깅할 수 있지만, (BB 중단 핸들러가 실행되지 않았기 때문에) EP 내에 저장된 정보를 상실할 것이다.
AP가 PCIe 완료 중단(즉, 치명적 에러)을 검출하는 경우, AP는 패닉 모드를 트리거할 것이다. BB가 PCIe 완료 중단을 검출하는 경우, BB는 중단 핸들러를 실행시킬 것이고; AP는 장애를 BB 크래시로서 취급할 것이다.
예시적인 동작 -
이제 도 5를 참조하면, 본 개시 내용에 따른 에러 복구 절차를 구현하는 하나의 논리 래더 다이어그램이 도시되어 있다. 도시된 바와 같이, 애플리케이션 프로세서(AP)(호스트)는, (i) 기저대역 관리자(502), (ii) 인터럽트 제어기(504), (iii) 호스트 프로세서간 통신(IPC) 드라이버(506), 및 (iv) 루트 컴플렉스(RC) 인터페이스(508)와 같은 논리 엔티티들을 포함한다. 기저대역 프로세서(BB)(슬레이브)는, (i) 종단점(EP) 인터페이스(510), (ii) EP IPC 드라이버(512), (iii) GPIO 제어기(514), (iv) 중단 핸들러(516), (v) 기저대역 코어(518), 및 (vi) 복수의 서브시스템들(520)(예컨대, 오디오, 디스플레이, 무선 모뎀 등)을 포함한다.
동작 중의 소정의 예상치 못한 시간에, BB가 크래시된다(시간(550)). 전형적으로, 소프트웨어 크래시는 서브시스템들(520) 중 하나로부터의 예상치 못한 거동(예컨대, 잘못된 메모리 액세스, 무응답 버스 액세스 등)에 의해 입증된다. 그에 응답하여, 기저대역 코어(518)는 하드웨어 워치독을 인에이블하는 그의 중단 핸들러 시퀀스로 점프한다. 하드웨어 워치독은, 중단 핸들러(516)가 그의 태스크들을 우아하게 완료할 수 없는 경우, BB가 강제로 리셋될 것임을 보장한다. 도시된 바와 같이, 중단 핸들러(516)는 모든 보류 중인 입/출력 트랜잭션들을 완료하고, 디버깅 정보를 수집해야 한다. 중단 핸들러의 성공적인 완료는 WAKE#을 표명해제하고, RESET_DET GPIO를 표명한다.
RESET_DET GPIO의 표명은, BB가 크래시되었고(시간(552)) BB와의 어떠한 추가의 트랜잭션들도 개시되어서는 안 된다는 것을 AP에 표시하지만; AP는, PCIe 버스의 전원을 끄는 것 및 기저대역 코어(518)를 리셋하는 것 이전에 기저대역 리셋이 완료될 때(시간(554))까지 기다린다.
기저대역 코어(518)가 리셋된 후에, 그것은 그의 ROM의 내용을 실행한다. 이와 동시에, AP는 PCIe 버스에 전력을 공급하고, 1차 부트 로더(PBL) 및 2차 부트 로더(SBL) 부트 프로토콜을 실행하기 전에 PCIe 열거를 기다린다. 그 후에, AP는 코어 덤프들을 안전하게 수집할 수 있다(556).
기저대역 리셋 검출(시간(552))과 기저대역 리셋 완료(시간(554)) 사이의 시간 간격을 다시 참조하면, 중단 핸들러(516)가 PCIe 링크 상태를 확인하고, PCIe 버스가 활성인 경우, PCIe 버스에 대해 열거하는 것이 허용된다. 그에 관계없이, 중단 핸들러(516)는 서브시스템들(520) 각각으로부터 디버그 정보를 수집할 수 있다. 일단 중단 핸들러(516)가 디버그 정보(예컨대, 코어 덤프들)를 성공적으로 수집하면, 중단 핸들러(516)는 WAKE#을 표명한다(이는 기저대역 리셋이 완료되는 것을 표시함). 그 후에, 중단 핸들러는 하드웨어 워치독을 디스에이블하고, 널 명령들을 실행한다.
보다 일반적으로, 에러 복구 절차들을 조정하지 않는 기존의 해결책들과는 달리, 본 개시 내용의 다양한 실시예들은 크래시가 발생했을 때 및 크래시와 연관된 에러 복구가 완료되었을 때 둘 다에 관한 표시를 제공한다. 이러한 방식으로, 본 시스템의 다른 프로세서들은, 크래시된 프로세서가 관련 에러 정보를 복구하고 저장할 수 있기 전에, 이러한 프로세서를 리셋하지 않는다.
본 개시 내용의 특정의 실시예들이 방법의 단계들의 특정 순서와 관련하여 설명되어 있지만, 이 설명들이 본 명세서에 설명된 보다 광범위한 방법들을 예시한 것에 불과하고 특정의 응용 분야에서 요구되는 바와 같이 수정될 수 있다는 것을 인식할 것이다. 특정 단계들은 특정 상황들 하에서 불필요하거나 선택적인 것으로 될 수 있다. 부가적으로, 특정 단계들 또는 기능성이 개시된 실시예들에 추가될 수 있거나, 2 개 이상의 단계들의 수행 순서가 치환될 수 있다. 이러한 변형들 모두는 본 개시 내용 내에 포함되고 본 명세서에 청구되어 있는 것으로 간주된다.
상기한 상세한 설명이 다양한 실시예들에 적용되는 신규의 특징들을 제시하고, 설명하며, 지적하였지만, 예시된 디바이스 또는 프로세스의 형태 및 상세에서의 다양한 생략들, 대체들 및 변경들은 본 명세서에 설명된 원리들로부터 벗어나지 않고 관련 기술분야의 통상의 기술자에 의해 행해질 수 있다는 것이 이해될 것이다. 이상의 설명은 현재 고려되는 최상의 실시형태(best mode)에 대한 것이다. 이 설명은 결코 제한하기 위한 것이 아니며, 오히려 본 명세서에 설명된 일반 원리들을 예시하는 것으로 보아야 한다. 본 개시 내용의 범주는 청구항들을 참조하여 결정되어야 한다.

Claims (23)

  1. 2 개 이상의 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법으로서,
    상기 2 개 이상의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서에서 크래시 이벤트(crash event)를 검출하는 단계;
    제1 신호를 표명(asserting)하는 단계 - 상기 제1 신호는 상기 크래시 이벤트가 발생했다는 것을 표시함 -;
    하나 이상의 에러 복구 절차들을 수행하여, 하나 이상의 에러 정보를 수집하는 단계; 및
    상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었을 때, 제2 신호를 표명하는 단계 - 상기 제2 신호는 상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 표시함 -
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제2 신호의 표명에 응답하여, 상기 2 개 이상의 독립적으로 동작가능한 프로세서들 중 제2 프로세서에서 상기 수집된 하나 이상의 에러 정보를 수신하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 표시하는 상기 제2 신호의 표명에 응답하여, 상기 2 개 이상의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서에서 제3 신호를 수신하기를 기다리는 단계를 더 포함하고, 상기 제3 신호는, 상기 크래시 이벤트가 발생한, 상기 2 개 이상의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서를 리셋하도록 구성되는 방법.
  4. 제1항에 있어서,
    상기 2 개 이상의 독립적으로 동작가능한 프로세서들 중 적어도 2 개의 프로세서는 버스 인터페이스를 포함하고, 상기 방법은, PCIe(Peripheral Component Interconnect Express) 표준에 따라 상기 버스 인터페이스를 통해 통신하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    PCIe 링크의 상태를 확인하는 단계; 및
    PCIe 버스가 활성일 때, 상기 PCIe 버스에 대해 열거(enumerating)하는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 제1 신호를 표명하는 단계와 상기 제2 신호를 표명하는 단계는 범용 입/출력(general purpose input/output)(GPIO)을 통해 표명하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 크래시 이벤트가 검출되었을 때, 상기 제1 신호를 표명하는 단계 이전에, 하나 이상의 보류 중인 입/출력 트랜잭션들을 완료하는 단계를 더 포함하는 방법.
  8. 2 개 이상의 독립적으로 동작가능한 프로세서들 간에 에러 정보를 저장하기 위한 방법으로서,
    상기 2 개 이상의 독립적으로 동작가능한 프로세서들 중 하나의 프로세서에서 크래시 이벤트에 대해 모니터링하도록 구성된 하드웨어 안전 메커니즘(hardware safety mechanism)을 인에이블하는 단계;
    상기 크래시 이벤트가 발생했다는 것을 표시하는 단계;
    하나 이상의 에러 복구 절차들을 개시하여, 에러 정보를 저장하는 단계; 및
    상기 에러 정보가 저장되었을 때, 상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 표시하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었을 때, 상기 하드웨어 안전 메커니즘을 디스에이블하는 단계를 더 포함하는 방법.
  10. 제8항에 있어서,
    상기 저장된 에러 정보를 분석하는 단계를 더 포함하는 방법.
  11. 제8항에 있어서,
    하나 이상의 버스 트랜잭션들이 보류 중일 때, 상기 하나 이상의 버스 트랜잭션들을 해결하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 하나 이상의 버스 트랜잭션들을 해결하는 단계는 송신 버퍼의 모든 남아 있는 내용(remaining contents)을 전송하는 단계를 포함하는 방법.
  13. 제11항에 있어서,
    상기 하나 이상의 버스 트랜잭션들을 해결하는 단계는 상기 하나 이상의 버스 트랜잭션들을 중단(aborting)하는 단계를 포함하는 방법.
  14. 2 개 이상의 독립적으로 동작가능한 프로세서들 간에 에러 정보를 복구하도록 구성된 컴퓨터화된 시스템으로서,
    버스 인터페이스;
    제1 독립적으로 동작가능한 프로세서; 및
    상기 버스 인터페이스를 통해 상기 제1 프로세서와 데이터 통신하는 제2 독립적으로 동작가능한 프로세서
    를 포함하고,
    상기 제2 프로세서는, 상기 제2 프로세서에 의해 실행될 때, 상기 제2 프로세서로 하여금,
    크래시 이벤트를 검출하게 하고;
    상기 크래시 이벤트가 발생했다는 것을 상기 제1 프로세서에 표시하도록 구성된 제1 신호를 표명하게 하고;
    하나 이상의 에러 복구 절차들을 수행하여, 하나 이상의 에러 정보를 수집하게 하고;
    상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었을 때, 상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 상기 제1 프로세서에 표시하도록 구성된 제2 신호를 표명하게 하는
    복수의 컴퓨터 판독가능 명령어들을 포함하는 컴퓨터화된 시스템.
  15. 제14항에 있어서,
    상기 제2 프로세서에 의한 상기 제2 신호의 표명에 응답하여, 상기 제1 프로세서는 상기 하나 이상의 에러 정보를 검색하도록 구성되는 컴퓨터화된 시스템.
  16. 제14항에 있어서,
    상기 제2 프로세서에 의한 상기 제2 신호의 표명에 응답하여, 상기 제1 프로세서는 상기 버스 인터페이스를 디스에이블하고, 상기 제2 프로세서를 리셋하도록 구성되는 컴퓨터화된 시스템.
  17. 제14항에 있어서,
    상기 제1 프로세서는 애플리케이션 프로세서(applications processor)를 포함하고, 상기 제2 프로세서는 기저대역 프로세서(baseband processor)를 포함하는 컴퓨터화된 시스템.
  18. 제14항에 있어서,
    상기 버스 인터페이스는 PCIe(Peripheral Component Interconnect Express) 버스를 포함하는 컴퓨터화된 시스템.
  19. 제14항에 있어서,
    상기 제2 프로세서는 중단 핸들러를 더 포함하는 컴퓨터화된 시스템.
  20. 2 개 이상의 독립적으로 동작가능한 프로세서들 간에 에러 정보를 저장하도록 구성된 장치로서,
    제1 프로세서와 제2 프로세서를 결합하도록 구성된 물리 버스 인터페이스; 및
    복수의 명령어들을 포함하는 컴퓨터 판독가능 매체
    를 포함하고,
    상기 복수의 명령어들은, 상기 제2 프로세서에 의해 실행될 때, 상기 제2 프로세서로 하여금,
    상기 제2 프로세서에서 크래시 이벤트에 대해 모니터링하도록 구성된 하드웨어 안전 메커니즘을 인에이블하게 하고;
    상기 크래시 이벤트가 발생했다는 것을 상기 제1 프로세서에 표시하게 하고;
    하나 이상의 에러 복구 절차들을 개시하여, 에러 정보를 저장하게 하고;
    상기 에러 정보가 저장되었을 때, 상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었다는 것을 상기 제1 프로세서에 표시하게 하는 장치.
  21. 제20항에 있어서,
    상기 복수의 명령어들은, 실행될 때, 상기 하나 이상의 에러 복구 절차들이 성공적으로 완료되었을 때 추가의 명령어들을 기다리기 위해 루프에 들어가도록 추가로 구성되는 장치.
  22. 제21항에 있어서,
    상기 복수의 명령어들은, 실행될 때, 상기 제2 프로세서의 리셋을 야기시키도록 추가로 구성되는 장치.
  23. 제20항에 있어서,
    상기 복수의 명령어들은, 실행될 때, 상기 하드웨어 안전 메커니즘의 인에이블 이전에 보류 중인 버스 트랜잭션들을 완료하도록 추가로 구성되는 장치.
KR1020160013351A 2015-02-04 2016-02-03 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들 KR101782246B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562112061P 2015-02-04 2015-02-04
US62/112,061 2015-02-04
US14/870,923 US9842036B2 (en) 2015-02-04 2015-09-30 Methods and apparatus for controlled recovery of error information between independently operable processors
US14/870,923 2015-09-30

Publications (2)

Publication Number Publication Date
KR20160096035A true KR20160096035A (ko) 2016-08-12
KR101782246B1 KR101782246B1 (ko) 2017-09-26

Family

ID=56410457

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160013351A KR101782246B1 (ko) 2015-02-04 2016-02-03 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들

Country Status (4)

Country Link
US (1) US9842036B2 (ko)
KR (1) KR101782246B1 (ko)
CN (1) CN105843694B (ko)
DE (1) DE102016200514B4 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892084B2 (en) 2013-12-10 2018-02-13 Apple Inc. Methods and apparatus for virtual channel allocation via a high speed bus interface
US10459674B2 (en) 2013-12-10 2019-10-29 Apple Inc. Apparatus and methods for packing and transporting raw data
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US10078361B2 (en) 2014-10-08 2018-09-18 Apple Inc. Methods and apparatus for running and booting an inter-processor communication link between independently operable processors
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US9965417B1 (en) * 2016-01-13 2018-05-08 Xilinx, Inc. Use of interrupt memory for communication via PCIe communication fabric
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10572390B2 (en) 2016-02-29 2020-02-25 Apple Inc. Methods and apparatus for loading firmware on demand
US10198364B2 (en) 2016-03-31 2019-02-05 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10523867B2 (en) 2016-06-10 2019-12-31 Apple Inc. Methods and apparatus for multi-lane mapping, link training and lower power modes for a high speed bus interface
US10586048B2 (en) * 2016-06-23 2020-03-10 Vmware, Inc. Efficient reboot of an operating system
US10061722B2 (en) 2016-10-17 2018-08-28 Qualcomm Incorporated Method to handle concurrent fatal events in a multicore execution environment
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10591976B2 (en) 2016-11-10 2020-03-17 Apple Inc. Methods and apparatus for providing peripheral sub-system stability
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
US10860412B2 (en) * 2017-12-08 2020-12-08 Apple Inc. Coordinated panic flow
US11307921B2 (en) 2017-12-08 2022-04-19 Apple Inc. Coordinated panic flow
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
KR102504660B1 (ko) * 2018-02-05 2023-03-02 삼성전자주식회사 응용 프로세서, 전장 프로세서, 그리고 응용 프로세서를 포함하는 컴퓨팅 장치
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10509762B2 (en) * 2018-04-30 2019-12-17 Intel IP Corporation Data rate-adaptive data transfer between modems and host platforms
US11381514B2 (en) 2018-05-07 2022-07-05 Apple Inc. Methods and apparatus for early delivery of data link layer packets
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US10636577B2 (en) * 2018-05-25 2020-04-28 Qualcomm Incorporated Safe handling of link errors in a peripheral component interconnect express (PCIE) device
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
CN113360326B (zh) * 2020-03-06 2023-02-28 Oppo广东移动通信有限公司 调试日志获取方法及设备
US11321163B2 (en) * 2020-03-26 2022-05-03 Wipro Limited Device and method for monitoring functional safety in integrated circuits (ICS)
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11360839B1 (en) * 2021-02-26 2022-06-14 Quanta Computer Inc. Systems and methods for storing error data from a crash dump in a computer system
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
CN117407354B (zh) * 2023-12-15 2024-04-26 深圳市天辰防务通信技术有限公司 主控板、计算机组合装置及显示控制台

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3826796A1 (de) 1988-08-06 1990-02-08 Basf Ag Substituierte phenylacetonitrile zur verwendung als resistenzbrecher
US5943507A (en) 1994-12-22 1999-08-24 Texas Instruments Incorporated Interrupt routing circuits, systems and methods
US7100020B1 (en) 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
US6553446B1 (en) 1999-09-29 2003-04-22 Silicon Graphics Inc. Modular input/output controller capable of routing packets over busses operating at different speeds
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6948094B2 (en) * 2001-09-28 2005-09-20 Intel Corporation Method of correcting a machine check error
US8352624B2 (en) 2002-04-18 2013-01-08 Citrix Systems, Inc. System for and method of streaming data to a computer in a network
US7055060B2 (en) * 2002-12-19 2006-05-30 Intel Corporation On-die mechanism for high-reliability processor
JP2006127460A (ja) 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
US8788822B1 (en) 2005-06-10 2014-07-22 Blue Coat Systems, Inc. Enhanced QoS solution for thin client or remote access sessions
US7643753B2 (en) 2005-09-29 2010-01-05 Broadlight Ltd. Enhanced passive optical network (PON) processor
JP2008262437A (ja) * 2007-04-13 2008-10-30 Renesas Technology Corp プロセッサシステムおよび例外処理方法
US7941682B2 (en) 2007-05-09 2011-05-10 Gainspan, Inc. Optimum power management of system on chip based on tiered states of operation
US20100017655A1 (en) 2008-07-16 2010-01-21 International Business Machines Corporation Error Recovery During Execution Of An Application On A Parallel Computer
US7801161B2 (en) 2008-10-20 2010-09-21 Broadlight, Ltd. Gigabit passive optical network (GPON) residential gateway
US8255725B2 (en) 2009-04-28 2012-08-28 Kabushiki Kaisha Toshiba Information processing apparatus and power-saving control method
US9081501B2 (en) 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8677180B2 (en) * 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8656228B2 (en) * 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
JP5962210B2 (ja) 2012-05-25 2016-08-03 富士通株式会社 マルチプロセッサシステム、及びプロセッサ間通信方法
US9460019B2 (en) 2014-06-26 2016-10-04 Intel Corporation Sending packets using optimized PIO write sequences without SFENCEs
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US10078361B2 (en) 2014-10-08 2018-09-18 Apple Inc. Methods and apparatus for running and booting an inter-processor communication link between independently operable processors
EP3013008B1 (en) 2014-10-23 2019-02-06 Alcatel Lucent Transmitting data traffic in a communication network
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link

Also Published As

Publication number Publication date
CN105843694B (zh) 2019-01-15
US20160224442A1 (en) 2016-08-04
DE102016200514B4 (de) 2019-08-14
KR101782246B1 (ko) 2017-09-26
US9842036B2 (en) 2017-12-12
CN105843694A (zh) 2016-08-10
DE102016200514A1 (de) 2016-08-04

Similar Documents

Publication Publication Date Title
KR101782246B1 (ko) 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들
US10372199B2 (en) Apparatus for managing power and running and booting an inter-processor communication link between independently operable processors
EP3321815B1 (en) Methods and apparatus for providing individualized power control for peripheral sub-systems
US8898517B2 (en) Handling a failed processor of a multiprocessor information handling system
US7594144B2 (en) Handling fatal computer hardware errors
US7774648B2 (en) Microprocessor supervision in a special purpose computer system
US10387261B2 (en) System and method to capture stored data following system crash
EP1588260B1 (en) Hot plug interfaces and failure handling
US9152205B2 (en) Mechanism for facilitating faster suspend/resume operations in computing systems
US7672247B2 (en) Evaluating data processing system health using an I/O device
US10181975B2 (en) Override subsystems for rapid recovery from serial-link errors
US7716465B2 (en) Method and apparatus for maintaining a partition when booting another partition while an address line is disabled
KR20200002603A (ko) 지속적 메모리가 인에이블된 플랫폼들에 대한 전원 버튼 오버라이드
EP3360044B1 (en) System and method for providing operating system independent error control in a computing device
US20100122072A1 (en) Debugging system, debugging method, debugging control method, and debugging control program
US9026838B2 (en) Computer system, host-bus-adaptor control method, and program thereof
US8677179B2 (en) Information processing apparatus for performing error process when controllers in synchronization operation detect error simultaneously
US7562265B2 (en) Method, apparatus and program storage device for providing self-quiesced logic to handle an error recovery instruction
CN113535441B (zh) 一种嵌入式系统故障诊断装置及方法
KR101100894B1 (ko) 임베디드 장치의 오류검출 및 복구방법
EP2691853B1 (en) Supervisor system resuming control
US8543755B2 (en) Mitigation of embedded controller starvation in real-time shared SPI flash architecture
CN112905124B (zh) 异步低功耗信号处理方法、装置、计算机设备及存储介质
US20140095643A1 (en) Microcontroller with integrated monitoring capabilities for network applications
JP2023046382A (ja) 異なるパワーアップ状態の最中にOOB通信および列挙最適化を使用するPCIe決定論的リンクトレーニング

Legal Events

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