KR20200047670A - 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법 - Google Patents

차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법 Download PDF

Info

Publication number
KR20200047670A
KR20200047670A KR1020207009698A KR20207009698A KR20200047670A KR 20200047670 A KR20200047670 A KR 20200047670A KR 1020207009698 A KR1020207009698 A KR 1020207009698A KR 20207009698 A KR20207009698 A KR 20207009698A KR 20200047670 A KR20200047670 A KR 20200047670A
Authority
KR
South Korea
Prior art keywords
neural network
error
network processor
processor
vehicle
Prior art date
Application number
KR1020207009698A
Other languages
English (en)
Other versions
KR102295601B1 (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 테슬라, 인크.
Priority to KR1020217026896A priority Critical patent/KR102378726B1/ko
Publication of KR20200047670A publication Critical patent/KR20200047670A/ko
Application granted granted Critical
Publication of KR102295601B1 publication Critical patent/KR102295601B1/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/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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • 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]
    • 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/0736Error 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 functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0739Error 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 functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in automotive or aircraft 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/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/0445
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454
    • G06N3/0481
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • G05B23/0205Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
    • G05B23/0259Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterized by the response to fault detection
    • G05B23/0286Modifications to the monitored process, e.g. stopping operation or adapting control
    • G05B23/0289Reconfiguration to prevent failure, e.g. usually as a reaction to incipient failure detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

뉴럴 네트워크에서 에러들을 처리하기 위한 시스템은 차량의 사용과 관련된 뉴럴 네트워크 실행을 위한 뉴럴 네트워크 프로세서를 포함한다. 뉴럴 네트워크 프로세서는 뉴럴 네트워크의 실행과 관련된 데이터 에러를 검출하도록 구성된 에러 검출기 및 상기 에러 검출기로부터 데이터의 리포트를 수신하도록 구성된 뉴럴 네트워크 컨트롤러를 포함한다. 리포트를 수신한 것에 대한 응답으로, 상기 뉴럴 네트워크 컨트롤러는 상기 뉴럴 네트워크의 실행의 종료 없이 상기 뉴럴 네트워크의 미처리 결과가 손상되었음을 신호하도록 더 구성된다.

Description

차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법
본 출원은 2017년 11월 17일자로 출원된 미국 특허 출원 제15/817,005호의 연속이며, 우선권을 주장하고 이는 그 전문이 여기에 참조로 포함된다.
본 개시는 차량에서 발생하는 에러들을 처리하기 위한 시스템들 및 방법들에 관한 것으로, 보다 구체적으로는 차량 뉴럴 네트워크 프로세서의 에러들을 처리하기 위한 시스템들 및 방법들에 관한 것이다.
오늘날 많은 차량들은 안전 및 신뢰성을 향상시키기 위해 설계된 광범위한 특징들을 장착하여 나온다. 부분적으로, 이는 차량 사고 및/또는 고장은 상해, 사망 및 재산 피해의 높은 위험을 동반하기 때문이다. 최소한, 사고 및/또는 고장은 차량 소유자에게 상당한 불편 및/또는 비용을 수반할 가능성이 있다. 따라서, 차량에 대한 향상된 안전 특징들을 개발하기 위한 많은 노력이 이루어져 왔다.
점점 더, 컴퓨터들은 승객의 안락함 및 오락부터 부분 또는 완전 자율 주행(partial or full self-driving operation)에 이르기까지 다양한 목적을 위해 차량에 통합되고 있다. 컴퓨터들은 많은 안전 및 신뢰성 이슈들을 다룰 잠재력을 가지고 있지만, 상기 컴퓨터들은 또한 아직 완전히 다뤄지지 않은 새로운 모드의 실패와 새로운 위험을 가져온다. 차량의 컴퓨터로 가능한 및/또는 컴퓨터로 보조되는 특징들이 차량을 동작시키는 것의 위험을 증가시키지 않도록 안전장치들(safeguards)이 마련되는 것이 중요하다. 컴퓨터로 구현된 차량 특징들을 생산하기 전에 테스트하기 위해 다양한 전략들이 채용될 수 있다. 그러나, 테스트가 수행되더라도 실제 조건 하 동작하는 경우에서는 여전히 에러를 직면하게 될 수 있다.
따라서, 차량 어플리케이션에서 사용되는 프로세서들의 에러를 처리하기 위한 향상된 시스템들 및 방법들을 제공하는 것이 유리할 것이다.
일부 실시예들에 따르면, 뉴럴 네트워크에서 에러들을 처리하기 위한 시스템은 차량의 사용과 관련된 뉴럴 네트워크를 실행하기 위한 뉴럴 네트워크 프로세서를 포함할 수 있다. 상기 뉴럴 네트워크 프로세서는 상기 뉴럴 네트워크의 실행과 관련된 데이터 에러를 검출하도록 구성된 에러 검출기 및
상기 에러 검출기로부터 데이터 에러의 리포트(report)를 수신하도록 구성된 뉴럴 네트워크 컨트롤러를 포함한다. 상기 뉴럴 네트워크 컨트롤러는, 상기 리포트를 수신하는 것에 대한 응답으로, 상기 뉴럴 네트워크의 실행을 종료하는 것 없이 상기 뉴럴 네트워크의 미처리 결과(pending result)가 오염되었음을 신호하도록 구성된다.
일부 실시예들에 따르면, 시스템은 차량의 자율 동작(autonomous operation)과 관련된 뉴럴 네트워크를 실행하기 위한 뉴럴 네트워크 프로세서 및 상기 뉴럴 네트워크 프로세서와 연결된 인터럽트 컨트롤러(interrupt controller)를 포함한다. 상기 인터럽트 컨트롤러는 뉴럴 네트워크 프로세서의 에러 인터럽트 핀(error interrupt pin)을 통해 에러 신호를 수신하고, 상기 뉴럴 네트워크 프로세서의 하나 이상의 상태 레지스터들(status registers)을 통해 에러 정보에 액세스하고, - 상기 에러 정보는 뉴럴 네트워크 프로세서에 의해 직면하게 된 에러의 타입을 나타냄 -, 및 상기 에러의 상기 타입이 데이터 에러에 대응하는 경우, 상기 뉴럴 네트워크 프로세서의 미처리 결과가 손상된 것으로 식별하도록 구성된다.
일부 실시예들에서, 차량 뉴럴 네트워크 프로세서 내 에러들을 처리하는 방법은 차량이 동작하는 동안 상기 차량 뉴럴 네트워크 프로세서에 의해 직면하게 된 에러에 기초하여 에러 리포트를 수신하는 단계, 상기 에러 리포트에 기초하여 상기 에러의 타입을 결정하는 단계, 및 상기 에러의 상기 타입이 데이터 에러에 대응한다는 결정에 대한 응답으로, 상기 차량 뉴럴 네트워크 프로세서의 동작이 진행하도록 하는 동안 차량 뉴럴 네트워크 프로세서의 미처리 결과가 손상되었음을 신호하는 단계를 포함한다.
실시예들의 요약은 또한 상기 설명을 따르는 청구범위에 의해 제공된다.
전술한 일반적인 설명 및 하기의 상세한 설명은 사실상 예시적이고 설명적인 것이며, 본 개시의 범위를 제한하지 않으면서 본 개시의 이해를 제공하도록 의도된 것으로 이해되어야 한다. 그러한 점에서, 본 개시의 추가의 양태, 특징 및 이점은 하기 상세한 설명으로부터 당업자에게 명백할 것이다.
도 1은 일부 실시예들에 따른 뉴럴 네트워크 프로세싱 시스템을 갖는 차량의 단순화된 다이어그램이다.
도 2는 일부 실시예들에 따른 뉴럴 네트워크를 처리하기 위한 시스템의 단순화된 다이어그램이다.
도 3은 일부 실시예들에 따른 타임아웃 에러 검출기의 단순화된 다이어그램이다.
도 4는 일부 실시예들에 따른 디버그 모드를 갖는 뉴럴 네트워크 프로세서의 단순화된 다이어그램이다.
도 5는 일부 실시예들에 따른 뉴럴 네트워크 내 에러 처리를 위한 방법의 단순화된 다이어그램이다.
본 개시의 실시예들 및 그들의 장점들은 다음의 상세한 설명을 참조함으로써 가장 잘 이해된다. 유사한 참조 번호는 하나 이상의 도면에 도시된 유사한 요소들을 식별하는데 사용되며, 여기에 도시된 것들은 본 개시의 실시예들을 설명하기 위한 것이며, 이를 제한하기 위한 것이 아니라는 것이 이해되어야 한다.
다음의 설명에서, 본 개시와 일치하는 일부 실시예들을 설명하는 특정 세부사항들이 제시된다. 상기 실시예들의 완전한 이해를 제공하기 위해 다수의 특정 세부사항들이 제시된다. 그러나, 일부 실시예는 이러한 특정 세부 사항의 일부 또는 전부 없이도 실시될 수 있다는 것이 당업자에게 명백할 것이다. 여기에 개시된 상기 특정 실시예들은 예시적이지만 제한적인 것은 아니다. 당업자는 여기에 구체적으로 설명되지 않았지만 본 개시의 범위 및 사상 내에 있는 다른 요소들을 실현할 수 있다. 또한, 불필요한 반복을 피하기 위해, 일 실시예와 관련하여 설명 또는 도시된 하나 이상의 특징들은 달리 구체적으로 설명되지 않았거나 상기 하나 이상의 특징들이 실시예를 비기능적으로 만들지 않는 한 다른 실시예에 통합될 수 있다. 일부 경우에, 공지된 방법들, 과정들, 구성요소들, 및 회로들은 실시예들의 양태들을 불필요하게 모호하게 하지 않기 위해 상세히 설명되지 않았다.
뉴럴 네트워크들은 입력 데이터에 기초하여 예측하기 위해 큰 데이터 세트로부터 추출된 패턴들을 사용한다. 상기 예측은 입력 데이터를 분류하고(예컨대, 이미지 내의 객체에 라벨링 하는 것), 입력 데이터에 기초하여 결정하고(예컨대, 자율 주행 차량을 조종하거나 게임에서 이동을 선택하는 것), 입력 데이터를 클러스터링 하는 것 등을 포함할 수 있다. 일반적으로, 범용 컴퓨팅 하드웨어를 사용하여 뉴럴 네트워크들을 실행할 수 있다. 그러나, 뉴럴 네트워크의 성능은 어플리케이션(또는 어플리케이션) 전용 하드웨어(application-specific hardware)를 사용하여 크게 향상될 수 있다. 예를 들어, 뉴럴 네트워크를 계산하는 것은 어플리케이션 전용 하드웨어 구현과 함께 단일 입력 다중 데이터(single-input multiple-data) (SIMD) 처리 기술을 사용하여 효율적으로 수행될 수 있는 매트릭스 동작을 포함할 수 있다.
어플리케이션 전용 뉴럴 네트워크 프로세서를 설계하고 사용하는 것은 성능 이점을 제공할 수 있지만, 상기 어플리케이션 전용 하드웨어는 뉴럴 네트워크 프로세서 특유의 및/또는 범용 프로세서에서 보다 뉴럴 네트워크 프로세서에서 더 자주 발생하는 에러들에 직면할 수 있다. 더욱이, 어플리케이션 전용 하드웨어를 개발하고 테스트하는 프로세스는 기성 규격 제품(off-the-shelf solution)에 비해 시간과 비용이 많이 들 수 있다. 따라서, 뉴럴 네트워크를 처리하기 위해 및 차량의 동작에서 사용되는 차량 뉴럴 네트워크 프로세서와 같은 뉴럴 네트워크 프로세서의 가동(bring-up) 및 생산(production) 동안 직면하게 되는 에러들을 처리하기 위해 향상된 시스템들 및 방법들을 제공하는 것이 바람직하다.
도 1은 일부 실시예들에 따른 뉴럴 네트워크 프로세싱 시스템을 갖는 차량(100)의 단순화한 도면이다. 일부 실시예들에 따르면, 차량(100)은 자동차, 오토바이 또는 트럭과 같은 육상 차량, 비행기, 우주선, 드론 또는 위성과 같은 항공기, 보트 또는 잠수함과 같은 수상 차량에 대응할 수 있다. 일부 예들에서, 차량(100)은 완전 전기 차량, 하이브리드 전기 차량, 가솔린 구동 차량 등일 수 있다.
일부 예들에서, 차량 (100)은 완전히 또는 부분적으로 자율 주행(self-driving)할 수 있다. 이러한 실시 예들에 따라, 차량(100)은 차량(100) 및/또는 그 주변과 관련된 데이터를 수집하는 하나 이상의 센서(110)를 구비할 수 있다. 센서 데이터는 이미지 데이터, 오디오 데이터, 시계열 데이터 등을 포함할 수 있다. 센서 (110)의 예시적인 예는 카메라 (가시광선 카메라, 적외선 카메라 등을 포함), 마이크(microphones), 온도 센서, LIDAR 유닛, 가속도계, 태코미터(tachometers) 등을 포함한다.
일부 실시예들에서, 차 (100)은 자율적으로 주행하는(autonomously driving) 차량(100)과 관련된 실시간 의사 결정 작업(real-time decision-making tasks)을 수행하기위한 컨트롤러(120)를 포함할 수 있다. 예를 들어, 자율 주행 작업(autonomous driving tasks)은 차량 (100) 근처에서 물체를 식별 또는 분류하고, 차량(100)의 조향, 전달, 가속 및/또는 제동을 제어하고, 차량(100)의 운전자에게 경고를 제공하고, 운전 데이터를 원격 서버로 전송하는 것을 포함할 수 있다.
일부 예들에서, 컨트롤러(120)는 하드웨어 및/또는 소프트웨어의 동작 및/또는 실행을 제어할 수 있다. 일부 예들에서, 컨트롤러(120)는 하나 이상의 프로세서, CPU, 멀티-코어 프로세서, FPGA (Field Programmable Gate Array), ASIC (application specific integrated circuit) 등을 포함할 수 있다. 일부 예들에서, 컨트롤러(120)는 하나 이상의 유형의 기계 판독 가능 매체를 포함할 수 있는 메모리를 더 포함할 수 있다. 기계 판독 가능 매체의 몇몇 일반적인 형태는 플로피 디스크, 플렉시블 디스크(flexible disk), 하드 디스크, 자기 테이프, 임의의 다른 자기 매체, CD-ROM, 임의의 다른 광학 매체(optical medium), 펀치 카드, 종이 테이프, 구멍 패턴을 갖는 임의의 다른 물리적 매체(physical medium), RAM (예를 들어, DRAM, SRAM 등), PROM, EPROM, FLASH-EPROM, 임의의 다른 메모리 칩 또는 카트리지, 및/또는 프로세서 또는 컴퓨터가 판독하기에 적합한 다른 매체를 포함할 수 있다. 일부 예들에서, 컨트롤러(120)는 다수의 패키지 내의 다수의 칩, 단일 패키지 내의 다수의 칩(예를 들어, 시스템 인 패키지(system-in-package)(SIP)) 및/또는 단일 칩(예를 들어, 시스템-온-칩 (system-on-chip)(SOC))을 포함할 수 있다.
주행 동작 동안, 컨트롤러(120)는 센서들(110)로부터 실시간 입력 데이터 스트림을 수신할 수 있다. 일부 예들에서, 컨트롤러(120)는 뉴럴 네트워크를 사용하여 센서들(110)로부터 입력 데이터를 처리할 수 있다. 예를 들어, 상기 뉴럴 네트워크는 일련의 레이어들을 포함할 수 있으며, 각 레이어는 하나 이상의 이전 레이어들의 출력 상에서 동작한다. 상기 레이어들은 기계 학습 기술을 사용하는 훈련 데이터(training data)에 기초하여 “학습된(learned)” 가중치 및/또는 바이어스를 사용하여 구성된다. 레이어들의 예들은 컨벌루전 레이어들(convolutional layers), 밀집 연결 레이어들(densely connected layers), 반복 레이어들(recurrent layers), 활성 레이어들(activation layers), 풀링 레이어들(pooling layers) 등을 포함한다. 일부 예들에서, 상기 뉴럴 네트워크는 상기 뉴럴 네트워크의 구조를 설명하는 하나 이상의 모델 정의 파일들, 상기 뉴럴 네트워크의 사전 훈련된 가중치 및/또는 바이어스를 포함하는 파라미터 파일들 등을 사용하여 정의될 수 있다.
예시적인 예에서, 상기 뉴럴 네트워크는 이미지에 나타나는 객체를 라벨링 하도록 훈련된 이미지 인식 네트워크일 수 있다. 예를 들어, 뉴럴 네트워크로 입력 데이터는 차량 (100)의 카메라에 의해 캡처 된 이미지(또는 이미지의 배치(batch))에 대응할 수 있다. 상기 예에 따르면, 뉴럴 네트워크의 하나 이상의 제1계층은 컨벌루전 레이어들로 구현될 수 있고, 및 상기 뉴럴 네트워크 모델의 하나 이상의 마지막 레이어들은 밀집 연결 레이어들로 구현될 수 있다. 상기 컨벌루전 레이어들은 이미지에 특정 특징들이 나타나는지 여부를 결정하는 미리 훈련된 필터들을 적용한다. 예를 들어, 상기 미리 훈련된 필터들은 이미지의 크기 및/또는 글로벌 파라미터뿐만(global parameters) 아니라 특정 형상(particular shapes), 색상, 열 특성(heat signatures), 이동(movement), 서브 이미지의 크기 및/또는 이미지의 패턴에 대응할 수 있다. 밀집 연결 레이어들은 그 후 이미지에 나타나는 특징들의 세트를 라벨링 된 객체들(labeled objects)(예컨대, "보행자", "나무(tree)", "차선 마커(lane marker)", "정지 신호(stop sign)"등)에 매핑한다.
많은 경우에, 뉴럴 네트워크 처리는 데이터 및/또는 계산 집약적(data and/or computationally intensive)이다. 예를 들어, 이미지 인식에 사용되는 딥 컨벌루전 뉴럴 네트워크(deep convolutional neural network)는 수백만 또는 수십억 개의 파라미터를 포함할 수 있다. 이에 따라, 상기 뉴럴 네트워크를 통한 순방향 통과는 수백 또는 수십억 개의 계산을 포함할 수 있다. 따라서, 뉴럴 네트워크의 성능을 향상시키고/향상시키거나 상기 뉴럴 네트워크의 실행과 컨트롤러(110)의 다른 어플리케이션 사이 간섭을 줄이기 위해 전용 계산 리소스들을 사용하여 뉴럴 네트워크를 처리하는 것이 바람직할 수 있다. 일부 실시예들에서, 컨트롤러(120)는 뉴럴 네트워크 프로세서(130)를 사용하여 상기 뉴럴 네트워크를 처리할 수 있고, 상기 뉴럴 네트워크 프로세서는 뉴럴 네트워크 처리에 실질적으로 전용된 하나 이상의 코어를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(130)는 뉴럴 네트워크를 실행할 때 하드웨어 가속된 성능을 달성하기 위해 주문형 집적회로(application specific integrated circuits)(ASIC) 및/또는 필드 프로그램 가능 게이트 어레이(field-programmable gate array)(FPGA)를 사용하여 구현될 수 있다.
일부 예들에서, 뉴럴 네트워크 프로세서(130)는 다수의 뉴럴 네트워크를 직렬 및/또는 병렬로 처리할 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(130)는 전방 카메라로부터 입력 데이터의 스트림을 수신하는 제1이미지 인식 모델, 후방 카메라로부터 입력 데이터의 스트림을 수신하는 제2이미지 인식 모델, 마이크로부터 오디오 데이터를 수신하는 오디오 인식 모델 등을 처리할 수 있다. 이러한 예들에 따라, 뉴럴 네트워크 프로세서(130)는 이미지 및/또는 오디오 데이터의 새로운 프레임이 수신될 때 각 모델을 순차적으로 처리할 수 있다. 다른 예들에서, 다수의 뉴럴 네트워크들은 다수의 뉴럴 네트워크 프로세서들 및/또는 프로세서 코어들을 사용하여 병렬로 처리될 수 있다.
컨트롤러(120) 및 뉴럴 네트워크 프로세서(130)는 예시적인 목적을 위해 차량(100)에 통합되는 것으로 도시되어 있지만, 컨트롤러(120) 및/또는 뉴럴 네트워크 프로세서(130)는 온 보드 및/또는 오프 보드 차량(on-board and/or off-board vehicle)(100)에 위치될 수 있음이 이해되어야 한다. 예를 들어, 차량(100)은 입력 센서 데이터를 네트워크를 통해 원격 위치의 뉴럴 네트워크 프로세서(130)로 전송할 수 있다. 더욱이, 뉴럴 네트워크 프로세서(130)는 비 차량 컨텍스트(non-vehicular contexts)을 포함하여 다양한 맥락에서 뉴럴 네트워크를 처리하는 데 사용될 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(130)는 범용 컴퓨팅, 모바일 컴퓨팅, 서버 기반 어플리케이션, 임베디드 어플리케이션(embedded applications), 산업 제조(industrial manufacturing) 등과 같은 어플리케이션에 사용될 수 있다.
다른 어플리케이션뿐만 아니라 자율 주행 어플리케이션에서도 뉴럴 네트워크 프로세서(130)의 하나의 목적은 연속적이고 신뢰성 있게 동작하는 것이다. 예를 들어, 뉴럴 네트워크 프로세서(130)는 입력 데이터가 오래되기(stale)(즉, 입력 데이터가 더 이상 차량(110)의 현재 상태 및/또는 주변을 나타내지 않음) 전에 입력 데이터 상에서 동작하기 위해 제한된 시간을 가질 수 있다. 이는 일부 상황에서, 빠르게 움직이는 차량의 경우처럼 수백분의 1초 안에 일어날 수 있다. 이 점에서, 차량(100)이 움직이는 동안 뉴럴 네트워크 프로세서(130)의 기능 손실(loss of functionality), 처리 지연(processing delays) 및/또는 비정상적인 행동(aberrant behavior)은 사고를 유발하여 재산 피해, 부상 및/또는 사망을 초래할 수 있다.
뉴럴 네트워크 프로세서(130) 상의 특정 에러의 효과는 상기 에러의 타입에 따라 달라질 수 있다. 에러의 일부 타입은 뉴럴 네트워크 프로세서(130)가 정지(hang) 또는 타임아웃(time out) 되는 것을 유발할 수 있다. 즉, 뉴럴 네트워크 프로세서의 하나 이상의 부분들이 미리 결정된 만큼의 시간보다 더 긴 시간에 대해 비활성화 된 채로 남아있거나 프리즈(freeze) 될 수 있다. 타임아웃 에러와 직면하게 되면, 뉴럴 네트워크 프로세서(130)는 출력 데이터를 제공하는 것을 중단할 수 있고/있거나 입력 데이터에 응답할 수 있다. 프로그램 에러 및/또는 데이터 에러와 같은 다른 타입의 에러는 뉴럴 네트워크 프로세서(130)에 의해 생성된 출력 데이터에 손상을 야기할 수 있다. 이러한 에러들과 직면하게 되면, 뉴럴 네트워크 프로세서(130)는 출력 데이터를 계속해서 제공할 수 있지만, 결과는 부정확하고, 의미 없고 및/또는 사용할 수 없을 수 있다.
이러한 에러와 관련된 안전 문제를 다루기(address) 위해, 뉴럴 네트워크 프로세서(130)는 에러를 방지, 검출 및/또는 응답하는 안전 특징을 포함할 수 있다. 안전 특징은 뉴럴 네트워크 프로세서(130)의 설계 사이클의 다양한 단계에서 구현 및/또는 활성화될 수 있다. 예를 들어, 상기 뉴럴 네트워크 프로세서(130)의 설계 사이클은 가동 단계(bring-up stage) 및 생산 단계(production stage)를 포함할 수 있다. 가동 동안, 뉴럴 네트워크 프로세서(130)는 뉴럴 네트워크 프로세서(130)의 기능이 예상된 것과 같은지를 검증하기 위해 테스트를 거칠 수 있다. 예를 들어, 가동은 뉴럴 네트워크 프로세서(130)가 설계되고 제조업자(manufacturer)에게 테이핑 아웃(taped-out) 된 후에 일어날 수 있지만, 뉴럴 네트워크 프로세서(130)가 생산되기 전에 일어날 수 있다. 가동 중에 발견된 결함은 뉴럴 네트워크 프로세서(130)가 차량 (100)의 생산 모델에 배치(deployed)되거나 최종 소비자에게 제공되기 전에 안전하게 다뤄질 수 있다. 예를 들어, 가동 동안, 뉴럴 네트워크 프로세서(130)는 독립형 테스트 환경(standalone test environment) 및/또는 차량(100)의 프로토 타입 모델에 설치(placed)될 수 있다.
일부 예들에서, 뉴럴 네트워크 프로세서(130)는 높은 수준의 복잡도를 가질 수 있고/있거나 다수의 서브 시스템을 포함할 수 있으며, 이들 각각은 상이한 팀 및/또는 벤더(vendors)에 의해 설계될 수 있다. 이러한 복잡성에 비추어, 가동 동안 뉴럴 네트워크 프로세서(130)의 테스트 프로세스는 광범위할 수 있고(예를 들어, 몇 주 또는 몇 개월에 걸쳐 발생) 뉴럴 네트워크 프로세서(130) 및 차량(100)의 전체 안전성 및 신뢰성에 실질적인 영향을 미칠 수 있다. 예를 들어, 테스트는 뉴럴 네트워크 프로세서(130)의 설계 동안 포착되지 않은 바람직하지 않은 및/또는 잘못된 행동(erroneous behavior)을 나타낼 수 있다. 결과적으로 도 2내지 도 5를 참조하여 아래에서 더 상세히 논의될 바와 같이, 뉴럴 네트워크 프로세서(130)는 가동 동안 결함을 검출, 분석 및/또는 디버그(debug) 하는 능력(ability)을 가속화 및/또는 향상시키는 안전 특징(safety features)을 포함할 수 있다.
가동 동안 광범위한 테스트를 수행하더라도, 뉴럴 네트워크 프로세서(130)는 생산 중에(예를 들어, 차량(100)의 생산 모델에 배치될 때) 여전히 에러들과 직면할 수 있다. 생산 동안, 가동과는 달리, 뉴럴 네트워크 프로세서(130)는 다운타임(downtime) 및/또는 지장(disruption)을 최소로 하여 에러로부터 부드럽게 복구하는 것이 일반적으로 바람직하다. 특히, 뉴럴 네트워크 프로세서(130)는 차량 (100)을 운전하는 것과 관련된 실시간 의사 결정 작업을 수행하는 것을 담당할 수 있다. 도2 내지 도 5를 참조하여 아래에서 더 상세히 논의될 바와 같이, 뉴럴 네트워크 프로세서(130)는 생산 단계 동안 에러를 효율적으로 통과하고(move past) 가능한 빨리 정상 동작을 복원하기위한 안전 특징을 포함할 수 있다.
도 2는 일부 실시예에 따른 뉴럴 네트워크를 처리하기 위한 시스템(200)의 단순화된 다이어그램이다. 도 1과 일치하는 일부 실시예들에 따르면, 시스템(200)은 뉴럴 네트워크 프로세서(210)를 포함할 수 있고, 이는 컨트롤러(120)의 뉴럴 네트워크 프로세서(130)와 일반적으로 대응한다.
일부 예들에서, 뉴럴 네트워크 프로세서(130)는 하나 이상의 외부 리소스들(예를 들어, 컨트롤러 (110)의 다른 프로세싱 및 / 또는 메모리 리소스들)로부터 또는 상기 하나 이상의 외부 리소스들로 데이터를 수신 및/또는 전송하기 위한 외부 인터페이스(220)를 포함할 수 있다. 다른 기능들 중에서, 외부 인터페이스(220)는 CPU로부터 명령어들을 수신하고, 메모리로부터 모델 정의(model definitions) 및/또는 파라미터(예를 들어, 가중치 및/또는 바이어스)를 읽고(read), 센서 데이터(sensor data)에 액세스하고 뉴럴 네트워크 등의 결과를 기록해내기(write out) 위해 사용될 수 있다. 일부 실시예들에서, 외부 인터페이스(220)는 직접 메모리 액세스(direct memory access)(DMA) 컨트롤러를 포함할 수 있다.
일부 실시예들에서, 외부 인터페이스(220)는 하나 이상의 통신 프로토콜(communication protocols)을 구현할 수 있다. 예를 들어, 외부 인터페이스(220)는 AXI(advanced extensible interface) 프로토콜과 같은 넌 코히어런트 버스 프로토콜(non-coherent bus protocol)을 사용하여 컨트롤러(110)의 CPU(및/또는 다른 프로세서)와 인터페이스 할 수 있다. 다른 예에서, 외부 인터페이스(220)는 AXI 코히어런시 확장(AXI coherency extensions)(ACE) 프로토콜과 같은 코히어런트 버스 프로토콜을 사용하여 컨트롤러(110)의 DRAM(및/또는 다른 메모리)과 인터페이스 할 수 있다. 이들은 단지 예일뿐이며, 외부 인터페이스 모듈(220)은 AXI 및 ACE에 추가하여 및/또는 대안으로 광범위한 통신 프로토콜을 구현할 수 있음을 이해 되어야한다.
일부 예들에서, 뉴럴 네트워크 프로세서(210)는 뉴럴 네트워크 프로세서(210)에 대한 로컬 데이터 스토리지(local data storage)를 제공하는 로컬 메모리(230)를 포함할 수 있다. 예를 들어, 로컬 메모리(230)는 모델 정의, 모델 파라미터 (예를 들어, 가중치 및/또는 바이어스), 뉴럴 네트워크에 대한 입력 데이터, 뉴럴 네트워크 프로세서(210)에 의해 생성된 중간 결과들(뉴럴 네트워크의 숨겨진 레이어의 출력), 뉴럴 네트워크의 최종 결과 등과 같은 뉴럴 네트워크와 관련된 데이터를 저장할 수 있다. 일부 실시예들에서, 로컬 메모리 (230)는 뉴럴 네트워크 프로세서(210)에 의해 실행될 명령어들 및/또는 프로그램들을 저장할 수 있다. 일부 실시 예들에서, 로컬 메모리 (230)는 정적 RAM(SRAM)을 사용하여 구현될 수 있다.
일부 예들에서, 뉴럴 네트워크 프로세서(210)는 계산 엔진(240)을 포함할 수 있다. 계산 엔진(240)은 주어진 입력 데이터 세트에 대한 뉴럴 네트워크의 결과를 계산하기위한 명령어들을 실행한다. 일부 실시 예들에서, 컴퓨팅 엔진(240)은 뉴럴 네트워크 계산을 위해 최적화될 수 있다. 예를 들어, 컴퓨팅 엔진 (240)은 단일 명령 다중 데이터 프로세서(single-instruction multiple-data processor), 벡터 프로세서(vector processor) 등을 포함할 수 있다. 일부 예들에서, 컴퓨팅 엔진(240)에 의해 실행되는 명령어들은 부동 소수점 명령어들일 수 있다.
동작 동안, 뉴럴 네트워크 프로세서(210) 및/또는 그 구성 모듈들(its constituent modules)(예컨대, 외부 인터페이스 (220), 로컬 메모리 (230) 및/또는 계산 엔진 (240))은 뉴럴 네트워크 프로세서(210)의 기능에 지장을 줄 수 있고 뉴럴 네트워크 프로세서(210)의 결과에 손상이나 오염 등을 야기할 수 있는 에러들을 직면할(encounter) 수 있다. 따라서, 뉴럴 네트워크 프로세서(210)는 뉴럴 네트워크 프로세서(210)의 동작을 모니터링하고 에러의 발생(occurrence)을 검출하기 위한 하나 이상의 에러 검출기들(251-257)을 포함할 수 있다. 에러 검출에 응답하여, 에러 검출기(251-257)는 적절한 개선 조치(remedial action)가 취해질 수 있도록 검출된 에러를 리포트(report)할 수 있다.
일부 실시예들에서, 에러 검출기들(251-257)은 외부 인터페이스(220)와 관련된 응답 에러 검출기(251)를 포함할 수 있다. 일부 실시예들에서, 응답 에러 검출기(251)는 외부 인터페이스(220)를 통해 수신된 응답(response messages) 메시지로부터 추출된 상태 정보에 기초하여 응답 에러를 리포트 할 수 있다. 예를 들어, 외부 인터페이스(220)가 읽기 및/또는 기록 요청을 발행할 때, 외부 인터페이스(220)는 요청을 이행하는 동안 에러와 직면하게 됐는지를 의미하는 하나 이상의 상태 비트(status bits)를 포함하는 응답 패킷(response packet)을 수신할 수 있다. 일부 예들에서, 상기 상태 비트들은 ACE 프로토콜과 같은 적용 가능한 프로토콜로 정의될 수 있다. 예를 들어, 상기 상태 비트는 00은 에러가 없음을 나타내고, 01은 슬레이브 에러(slave error)를 나타내며, 10은 디코드 에러(decode error)를 나타내고, 11은 정의되지 않은 2비트 코드와 같은 n비트 상태 코드를 포함할 수 있다. 따라서, 따라서, 응답 에러 검출기 (251)는 응답 패킷의 상태 코드가 에러 (예를 들어, 00 이외의 임의의 상태 코드)를 나타낼지 여부를 결정할 수 있다.
일부 실시예들에서, 에러 검출기들(251-257)은 외부 인터페이스(220)와 관련된 무결성 에러 검출기(integrity error detector)(252)를 포함할 수 있다. 일부 실시예들에서, 무결성 에러 검출기(252)는 외부 인터페이스(220)를 통해 수신된 데이터의 무결성을 검증하고 수신된 데이터가 손상된 때 무결성 에러를 리포트 할 수 있다. 예를 들어, 수신된 데이터는 CRC (Cyclic Redundancy Check)와 같은 에러 검출 코드를 포함할 수 있다. 예를 들어, 수신된 데이터는 순환 중복 검사(Cyclic Redundancy Check)(CRC)와 같은 에러 검출 코드를 포함할 수 있다. 그러한 예들에 따라, 무결성 에러 검출기(252)는 에러 검출 코드(error detection code)가 수신된 데이터와 매치(matches)하는지를 검증할 수 있다. 에러 감지 코드를 사용은 메모리에 장기간(long period of time) 지속되는 데이터를 요청할 때 특히 유익할 수 있습니다. 예를 들어 뉴럴 네트워크의 모델 정의 및/또는 모델 파라미터는 차량(100)을 동작시키는 동안 몇 분 또는 몇 시간 동안 메모리에 저장될 수 있으며, 따라서 확률적 에러(stochastic errors) (예를 들어, 열 변동(thermal fluctuations)에 의해 일어나는 비트 플립(bit flips))가 발생하기 쉽다. 그러한 경우에, 무결성 에러 검출기(252)에 의한 에러 검출 코드의 검증은 손상된 데이터의 효율적인 검출을 허용할 수 있다. 반대로, 실시간 센서 데이터는 일반적으로 짧은 시간 (예를 들어, 1 초 미만) 동안 메모리에 저장되어, 데이터가 확률적 오차를 덜 발생시키므로 에러 검출 코드를 포함하지 않을 수 있다.
일부 실시예들에서, 에러 검출기들(251-257)은 외부 인터페이스(220)와 관련된 프로토콜 에러 검출기(protocol error detector)(253)를 포함할 수 있다. 일부 실시예들에서, 프로토콜 에러 검출기(253)는 외부 인터페이스(220)에 의해 구현된 통신 프로토콜과 관련된 에러가 검출될 때 프로토콜 에러를 리포트 할 수 있다. 예를 들어, 프로토콜 에러 검출기(253)는 CPU로부터 명령어들을 수신할 때 AXI 프로토콜과 관련된 불법 읽기 및/또는 기록 트랜잭션(illegal read and/or write transactions)(예를 들어, 불법 버스트 타입(illegal burst types), 버스트 유형을 래핑하지(wrapping) 않는 캐시 라인 교차(cacheline crossing without wrapping burst type) 등)을 검출할 수 있다.
일부 실시 예들에서, 에러 검출기들(251-257)은 로컬 메모리(230)와 연관된 패리티 에러 검출기(parity error detector)(254)를 포함할 수 있다. 일부 실시 예들에서, 패리티 에러 검출기 (254)는 로컬 메모리 (230)에 저장된 데이터의 무결성을 검증하고 저장된 데이터가 손상된 것으로 식별된 때 패리티 에러를 일으킬 수 있다. 일부 예들에서, 패리티 검사 모듈(parity check module)(242)는 하나 이상의 패리티 비트를 유지하고 패리티 비트가 저장된 데이터와 일치하지 않을 때 패리티 에러를 보고할 수 있다.
일부 실시예들에서, 에러 검출기들(251-257)은 로컬 메모리(230)와 관련된 명령어 에러 검출기(255)를 포함할 수 있다. 일부 실시예들에서, 에러 검출기들(251-257)은 로컬 메모리(230)와 관련된 명령어 에러 검출기(255)를 포함할 수 있다. 일부 실시예들에서, 명령어 에러 검출기(255)는 로컬 메모리(230)에 저장된 명령을 입증하고 저장된 명령이 유효하지 않을 때 명령어 에러를 일으킬 수 있다. 예를 들어, 명령어 에러 검출기(255)는 인식되지 않은 명령(unrecognized instruction)이 검출될 때(예컨대, 뉴럴 네트워크 프로세서(210)가 수행하도록 구성된 동작에 대응하지 않는 명령어 코드를 갖는 명령어) 명령어 에러를 일으킬 수 있다. 일부 실시예들에서, 명령어 에러 검출기(255)는 동작 중 다양한 시간, 예를 들어, 상기 명령어들이 로컬 메모리 (230)에 기록되는 동안(예컨대, 그들이 상기 뉴럴 네트워크의 실행 전에 외부 인터페이스(220)의 프로그래밍 인터페이스를 통해 수신되는 것처럼), 상기 명령어들이 로컬 메모리(230)로부터 검색되는 동안(예컨대, 계산 엔진(240)에 의해 그것들이 실행되는 것처럼), 및/또는 다른 적절한 시간에 상기 명령어들을 입증(validate)할 수 있다.
일부 실시예들에서, 에러 검출기들(251-257)은 계산 엔진(240)과 관련된 계산 에러 검출기(256)를 포함할 수 있다. 일부 실시예들에서, 계산 에러 검출기(256)는 계산 엔진(240)을 통한 계산 수행과 관련된 에러를 보고할 수 있다. 동작 동안 계산 엔진(240)에 의해 직면하게 될 수 있는 예시적인 에러는 유효하지 않은 동작들(invalid operations), 0으로 나누기, 오버 플로우(overflow), 언더 플로우(underflow), 비정규화(denormalization), 부정확 한 수(inexact numbers) 등을 포함할 수 있다. 일부 예들에서, 상기 오류의 하나 이상은 IEEE 754 표준에 의해 정의된 부동 소수점 예외(floating point exceptions)에 대응할 수 있다.
일부 실시예들에서, 에러 검출기들(251-257)은 타임 아웃 에러 검출기(257)를 포함할 수 있다. 일부 실시 예들에서, 타임 아웃 에러 검출기(timeout error detector)(257)는 뉴럴 네트워크 프로세서(210)에 의해 수행되는 작업들 및/또는 하나 이상의 모듈들이 정지하거나(hang) 응답하지 않을(unresponsive) 때 타임아웃 에러를 리포트 할 수 있다. 예를 들어, 타임 아웃 에러 검출기(257)는 외부 인터페이스(220)를 통해 데이터를 수신 및/또는 보내는 것과 같은 뉴럴 네트워크 프로세서(210) 내 특정 타입의 활동을 모니터링할 수 있다. 비활성 기간 후, 타임 아웃 에러 검출기(257)는 뉴럴 네트워크 프로세서(210)에 의해 수행되는 작업들 및/또는 하나 이상의 모듈들이 정지하고 상기 에러를 플래그 한다고 결정할 수 있다. 일부 예들에서, 타임 아웃 에러 검출기(257)는 워치 독 타이머(watchdog timer)(WDT)를 사용하여 구현될 수 있다. 타임 아웃 에러 검출기(257)의 예시적인 실시예는 도 3에서 더 상세히 논의된다.
도2에 도시된 에러 검출기들(251-257)은 단지 예들이며, 뉴럴 네트워크 프로세서(210)는 많은 다른 타입의 에러 검출기들을 포함할 수 있다는 것이 이해되어야 한다. 더욱이, 에러 검출기들(251-257)은 뉴럴 네트워크 프로세서(210)의 특정 모듈(예컨대, 외부 인터페이스(220), 로컬 메모리(230) 및/또는 계산 엔진(240)) 내에 연관 및/또는 내장된 것으로 도시되어 있지만, 에러 검출기들(251-257)은 다양한 추가적 및/또는 대안적인 구성들로 배열될 수 있다. 예를 들어, 명령 에러 검출기(255)는 로컬 메모리(230)에 추가하여 및/또는 대신하여 외부 인터페이스(220) 및/또는 계산 엔진(240)에 통합될 수 있다.
일부 실시예들에서, 뉴럴 네트워크 프로세서(210)는 뉴럴 네트워크 컨트롤러(270)를 포함할 수 있다. 일부 실시예들에서, 뉴럴 네트워크 컨트롤러(270)는 뉴럴 네트워크 프로세서(210)상에서 실행되는 하나 이상의 뉴럴 네트워크들 각각과 관련된 상태 정보를 유지할 수 있다. 예를 들어, 뉴럴 네트워크 컨트롤러(270)는 각각의 뉴럴 네트워크에 대해 하나 이상의 상태 레지스터들(275)을 유지(maintain)할 수 있다. 일부 예들에서, 상태 레지스터들(275)은 진행 표시기(progress indicator)(예컨대, 미처리, 실행 중, 완료 등), 에러 표시기, 주소 포인터(예컨대, 뉴럴 네트워크의 현재 상태가 저장된 메모리 내 위치) 등과 같은 변수들을 사용하여 각각의 뉴럴 네트워크의 실행 상태를 추적할 수 있다.
일부 예들에서, 뉴럴 네트워크 컨트롤러(270)는 각각의 뉴럴 네트워크에 대한 하나 이상의 인터럽트 핀들(interrupt pins)(280)의 레벨(level)을 설정할 수 있다. 인터럽트 핀들(280)은 시스템(200)이 인터럽트 신호들에 대해 응답할 수 있도록 인터럽트 처리기(interrupt handler)(290)에 연결된다. 예를 들어, 인터럽트 핀들(280)은 뉴럴 네트워크가 계산을 완료하고/하거나 뉴럴 네트워크의 결과가 출력 버퍼 (226)에서 업데이트 되었을 때 신호하기 위한 완료 핀(completion pin)(282)을 포함할 수 있다. 일부 예들에서, 완료 핀(282)은 에지-민감성(edge-sensitive) 및/또는 레벨-민감성(level-sensitive) 인터럽트로 동작될 수 있다. 완료 핀(282) 상에서 인터럽트 신호를 검출하는 것에 응답하여, 시스템(200)은 대응하는 뉴럴 네트워크의 업데이트 된 결과들을 검색(retrieve)할 수 있다.
일부 실시예들에서, 뉴럴 네트워크 컨트롤러(270)는 에러 검출기들(251-257)에 의해 리포트 된 에러들에 대해 중앙에서 관리 및/또는 응답할 수 있다. 예를 들어, 에러들은 기계 체크 아키텍처(machine check architecture)(MCA) 리포팅을 사용하여 뉴럴 네트워크 컨트롤러(270)에 리포트 될 수 있다. 그러한 실시 예들에 따라, 상태 레지스터들(275)은 16-비트 MCA 에러 코드와 같은 각각의 신경 네트워크에 대한 에러 코드를 저장할 수 있다. 일부 예들에서, 상기 에러 코드들은 에러가 각각의 신경 네트워크에서 발생했는지(예를 들어, 에러 유효 비트(error valid bit)를 사용하여), 그렇다면 직면하게 된 에러의 타입(예를 들어, 응답 에러, 무결성 에러 등)을 나타낼 수 있다. 유사하게, 인터럽트 핀들(280)은 뉴럴 네트워크가 에러와 직면하였을 때 신호를 주기 위해 사용되는 에러 핀(284)을 포함할 수 있다. 일부 예들에서, 에러 핀(284)은 에지-민감성(edge-sensitive) 및/또는 레벨-민감성(level-sensitive) 인터럽트로 동작될 수 있다. 에러 핀(284)상의 인터럽트 신호를 검출하는 것에 응답하여, 시스템(200)은 상태 레지스터(275)를 통해 에러 코드에 액세스함으로써 에러의 타입을 결정하고 상기 에러 타입에 기초하여 적절한 개선 조치(remedial action)를 취할 수 있다.
일부 실시예들에서, 완료 핀(282) 및 에러 핀(284)은 비동기적으로 동작될 수 있다. 즉, 에러 인터럽트 신호(error interrupt signal)는 대응하는 완료 인터럽트 신호가 완료 핀(282)에서 전송되기를 기다리지 않고 에러 핀(284)상에서 전송될 수 있다. 결과적으로, 인터럽트 처리기(290)는 에러 인터럽트 처리기에 즉시 응답하거나(예컨대, 뉴럴 네트워크를 종료함으로써) 에러에도 불구하고 미처리 계산이 완료되기를 기다리는 옵션(option)을 갖는다. 일부 실시예들에서, 뉴럴 네트워크를 종료할지 또는 완료를 기다릴지 여부의 결정은 에러의 타입에 의존한다.
상술한 바와 같이, 뉴럴 네트워크 프로세서(210)는 뉴럴 네트워크의 프로세싱 동안 발생하는 다수의 타입의 에러들을 식별하고 플래그 할 수 있다. 일부 예들에서, 상기 에러들은 일반적으로 프로그램 에러들(예컨대, 각각 에러 검출기(253) 및/또는 에러 검출기(255)에 의해 검출된 프로토콜 에러들 및/또는 명령어 에러들), 데이터 에러들(예컨대, 각각 에러 검출기들(251,252,254 및 256)에 의해 검출된 응답 에러들, 무결성 에러들, 패리티 에러들, 및/또는 계산 에러들), 및/또는 타임아웃 에러들(타임아웃 에러 검출기(257)에 의해 검출된 타임아웃 에러들)로 분류된다.
일부 유형의 에러에 대해, 뉴럴 네트워크의 실행은 에러 검출에 따라 즉시 종료될 수 있다. 예를 들어, 프로그램 에러(예컨대, 프로토콜 에러 및/또는 명령어 에러)와 직면하게 되었을 때, 상기 뉴럴 네트워크는 프로그램을 다시 로드(reload)하기 위해 오류가 검출되는 즉시 다시 시작될 수 있다. 다른 예에서, 타임 아웃 에러와 직면하게 되었을 때, 뉴럴 네트워크 프로세서(210)는 정지하고 있는 임의의 모듈들을 언프리즈(unfreeze)하기 위해 에러의 검출 즉시 재부팅 될(rebooted) 수 있다.
다른 타입의 에러의 경우, 뉴럴 네트워크 계산의 결과는 오염 또는 손상된 것으로 간주될(deemed) 수 있지만, 미처리 계산(pending computation)은 여전히 진행하는 것이 허용될 수 있다. 예를 들어, 데이터 에러(예컨대, 응답 에러, 무결성 에러, 패리티 에러 및/또는 계산 에러)와 직면하게 되었을 때, 잘못된 데이터에 기초한 상기 미처리 계산은 뉴럴 네트워크의 실행 종료 및/또는 뉴럴 네트워크 프로세서(210) 재부팅 없이 진행하는 것이 허용될 수 있다. 그러나, 시스템(200)은 상기 계산의 결과를 무시하거나(ignore) 건너뛰도록(skip) 명령될 수 있다. 뉴럴 네트워크를 재시작 하지 않고 뉴럴 네트워크에 의해 생성된 오염된 결과들을 건너뛰는 것은 오염된 데이터에 대해 잘못 배치된 의존(misplaced reliance)을 피하면서 신경망을 완전히(entirely) 재시작 하는 것과 관련하여 중단을 피하는 이중 목적을 제공한다. 예를 들어, 자율 주행 차량 어플리케이션(self-driving vehicle applications)에서, 뉴럴 네트워크는 초당 수십 또는 수백 개의 이미지 프레임을 처리할 수 있다. 이 문맥에서, 때때로 프레임을 건너뛰는 것은 문제로 여기지지 않을 수 있고/있거나 자율 주행 성능(self-driving performance)에 큰 영향을 미치지 않을 수 있다. 동시에, 상기 접근 방식은 오염된 결과가 식별되고 폐기되기(thrown out) 때문에 잘못된 데이터에 의존하는 것과 관련된 위험을 피합니다.
일부 실시예들에서, 특정 타입의 에러들에 대한 응답은 시스템(200)의 설계 사이클 단계에 의존할 수 있다. 예를 들어, 가동 단계 동안, 타임 아웃 에러와 직면하게 되면, 뉴럴 네트워크 프로세서(210)는 디버그 모드로 전이할 수 있다. 도 4를 참조하여 아래에서 더 상세히 기술된 바와 같이, 상기 디버그 모드에서, 상기 뉴럴 네트워크 프로세서의 실행은 일시 정지될 수 있고, 뉴럴 네트워크 프로세서(210)의 상세한 상태 정보(예컨대 레지스터 상태)에 대한 액세스를 허용할 수 있고/있거나 명령어들의 단일 단계 실행을 허용할 수 있다. 상기 디버그 모드에 들어가는 것은 에러가 발생한 시간에 뉴럴 네트워크 프로세서(210)의 상태에 대한 액세스를 제공함으로써 타임아웃 에러의 원인의 신속 및/또는 정확한 식별을 용이하게 할 수 있다. 반면에 디버그 모드로 들어가는 것은 생산 단계에 적합하지 않을 수 있다. 생산 단계에서의 타임 아웃 에러에 응답하여 바람직한 행동은 가능한 빨리 뉴럴 네트워크 프로세서(210)의 정상적인 동작을 복원하려고 시도하는 것일 수 있다. 따라서, 생산 단계 동안, 타임 아웃 에러와 직면하게 되면, 뉴럴 네트워크는 종료될 수 있고/있거나 뉴럴 네트워크 프로세서(210)는 즉시 재부팅 될 수 있다.
단일 세트의 상태 레지스터들(single set of status registers)(275) 및 인터럽트 핀들(280)이 간단하게 도시되어 있지만, 뉴럴 네트워크 프로세서(210)는 다수의 세트의 상태 레지스터들 및 인터럽트 핀들을 포함할 수 있음이 이해되어야 한다. 특히, 상태 레지스터들 및 인터럽트들 핀 세트의 수는 뉴럴 네트워크 프로세서(210)가 직렬 및/또는 병렬로 처리하도록 구성된 뉴럴 네트워크들의 수에 대응할 수 있다. 예시적인 실시예에서, 뉴럴 네트워크 프로세서(210)는 32세트의 상태 레지스터들 및 인터럽트 핀들을 포함할 수 있어서, 뉴럴 네트워크 프로세서(210)는 한 번에 최대 32개의 뉴럴 네트워크들을 처리할 수 있다.
도 3은 일부 실시예에 따른 타임 아웃 에러 검출기(300)의 단순화된 도면이다. 도 1내지 2와 일치하는 일부 실시예들에 따르면, 타임아웃 에러 검출기(300)는 뉴럴 네트워크 프로세서(210)의 타임아웃 에러 검출기(257)를 구현하기 위해 사용될 수 있다.
도 3에 도시된 바와 같이, 타임 아웃 에러 검출기 (300)는 하나 이상의 프라이머리 타이머들(311-319)을 포함한다. 일부 예들에서, 프라이머리 타이머들(311-319)은 뉴럴 네트워크 프로세서(210)의 하나 이상의 블록들 또는 모듈들 내 아이들 사이클들(idle cycles)을 모니터링할 수 있다. 예를 들어, 프라이머리 타이머(311)는 외부 인터페이스(220)가 데이터를 수신(예컨대, 메모리로부터 데이터 읽기)한 후부터의 경과 시간을 모니터링 할 수 있다. 다른 예에서, 프라이머리 타이머(312)는 외부 인터페이스(220)가 데이터를 전송(예컨대, 메모리에 데이터 기록)한 후부터 경과시간을 모니터링 할 수 있다. 추가 예에서, 프라이머리 타이머(319)는 계산 엔진(240)이 활성화된 후(예컨대, 실행된 명령어들(executed instructions))부터 결과시간을 모니터링 할 수 있다.
일부 실시예들에서, 상기 경과 시간은 활동이 마지막으로 검출된 이후 클록 사이클을 카운트함으로써 결정될 수 있다. 예를 들어, 프라이머리 타이머들(311-319)은 임계 횟수의 클록 사이클들로부터 카운트 다운될 수 있다. 일부 예들에서, 모니터링되는 각각의 블록들은 활동(예를 들어, 메모리로부터 판독 및/또는 기록되는 패킷, 컴퓨팅 엔진에 의해 실행되는 명령어 등)의 발생을 나타내는 신호를 발행할 수 있다. 모니터링중인 블록에서 신호가 수신되면 카운트가 임계 값으로 재설정된다. 카운트가 0에 도달하면 오류가 발생한다. 추가적으로 또는 대안적으로, 프라이머리 타이머들(311-319)은 임계 값 수에 도달할 때까지 0으로부터 카운트업 할 수 있다.
일부 실시예들에서, 타임 아웃 검출 모듈(timeout detection module)(300)은 레이어 타이머(layer timer)(320) 및/또는 뉴럴 네트워크 타이머(neural network timer)(330)와 같은 하나 이상의 복합 타이머(composite timers)를 추가로 포함할 수 있다. 일부 실시예들에서, 상기 복합 타이머들은 복수의 뉴럴 네트워크 프로세서(210)의 블록들 내 총 활동을 모니터링할 수 있다. 예를 들어, 복합 타이머는 외부 인터페이스(200)가 데이터를 수신한 이후의 경과 시간, 외부 인터페이스(200)가 데이터를 전송한 이후의 경과 시간 및/또는 계산 엔진(240)이 활성화된 이후의 경과 시간을 동시에 모니터링 할 수 있다.
일부 예들에서, 레이어 타이머(320)는 뉴럴 네트워크의 레이어를 처리하는데 걸리는 시간이 미리 결정된 시간을 초과할 때 타임아웃 될 수 있다. 이러한 예들에 따라, 레이어 타이머(320)는 뉴럴 네트워크에서 레이어를 실행하는 것과 관련된 활동의 총계(sum of activities)를 모니터링할 수 있으며, 이는 메모리 읽기, 메모리 기록, 및 계산 엔진 활동을 포함할 수 있으나 이에 제한되지는 않는다. 일부 예들에서, 레이어 타이머(320)에 대한 임계 시간은 각각의 프라이머리 타이머들(311-319)에 대한 임계 시간보다 클 수 있다.
일부 예들에서, 뉴럴 네트워크 타이머(330)는 전체 뉴럴 네트워크를 처리하는데 걸리는 시간이 미리 결정된 시간을 초과할 때 타임아웃 될 수 있다. 이러한 예들에 따라, 뉴럴 네트워크 타이머(330)는 뉴럴 네트워크 실행에 관한 활동의 총계를 모니터링할 수 있으며, 이는 메모리 읽기, 메모리 기록, 및 계산 엔진 활동을 포함할 수 있으나 이에 제한되지는 않는다. 일부 예들에서, 뉴럴 네트워크 타이머(330)에 대한 임계 시간은 프라이머리 타이머들(311-319)에 대한 임계 시간보다 클 수 있다. 예를 들어, 뉴럴 네트워크 타이머(330)에 대한 임계 시간은 10억 클록 사이클일 수 있다.
일부 예들에서, 어그리게이터(aggregator)(340)는 프라이머리 타이머들(311-319) 및/또는 복합 타이머들(예컨대, 레이어 타이머(320) 및/또는 뉴럴 네트워크 타이머(330))의 출력에 기초하여 어그리게이트 타임아웃 에러 신호(aggregate timeout error signal)를 제공할 수 있다. 일부 실시예들에 따르면, 상기 어그리게이트 타임아웃 에러 신호는 프라이머리 타이머들(311-319), 레이어 타이머(320) 및/또는 뉴럴 네트워크 타이머(330) 중 임의의 것이 타임아웃 될 때 에러를 나타낼 수 있다. 즉, 타임 아웃 에러 검출기(300)는 뉴럴 네트워크 프로세서(210)의 개별 모듈이 정지할 때(그 결과 하나 이상의 프라이머리 타이머들(311-319)이 타임아웃 되는), 뉴럴 네트워크의 레이어가 정지할 때(그 결과 레이어 타이머(320)가 타임아웃 되는), 뉴럴 네트워크가 정지할 때(그 결과 네트워크 타이머(330)가 타임아웃 되는) 타임아웃 에러를 리포트 할 수 있다.
도 4는 일부 실시예들에 따라 디버그 모드를 갖는 뉴럴 네트워크 프로세서(400)의 단순화된 도면이다. 도 1내지 도3과 일치하는 일부 실시예들에 따르면, 뉴럴 네트워크 프로세서(400)는 시스템(200)의 뉴럴 네트워크 프로세서(210)를 구현하기 위해 사용될 수 있다. 도 4는 디버깅 프로세서(debugging processor)(400)가 가동하는 동안, 뉴럴 네트워크 프로세서(400)의 숨겨진 레지스터들(hidden registers)에 액세스하는 능력을 도시한다. 일부 예들에서, 가동 동안, 뉴럴 네트워크 프로세서(400)는 타임 아웃 에러와 같은 에러에 응답하여 동작 모드(operating mode)(예를 들어, 뉴럴 네트워크의 정상 실행)에서 디버그 모드(debug mode)로 자동적으로 전이할 수 있다.
뉴럴 네트워크 프로세서(400)는 뉴럴 네트워크 프로세서(400)와 관련된 상태 정보 및/또는 다양한 다른 타입 정보(예컨대, 명령어들, 데이터, 주소 포인터들 등)를 저장하는 복수의 레지스터들을 포함한다. 일부 예들에서, 복수의 레지스터들은 디버깅 목적을 위해 외부 인터페이스를 통해(예컨대, AXI 버스 프로토콜을 사용하는 외부 인터페이스 (220)를 통해) 쉽고 그리고/또는 직접 액세스될 수 있는 하나 이상의 탑 레벨 레지스터들(top level registers)(412)을 포함할 수 있다. 나아가, 복수의 레지스터들은 외부 수단들에 의해 쉽게 및/또는 직접 액세스되지 않는 하나 이상의 딥 레지스터들(414)을 포함한다. 예를 들어, 딥 레지스터들(414)에 저장된 데이터는 멀티플렉서들(multiplexers)(420)을 통해 상기 데이터를 탑 레벨 레지스터들(412)로 이전(migrating)함으로써 액세스될 수 있다. 따라서, 딥 레지스터 (414)에 저장된 데이터는 검색하는데 상당한 시간이 걸릴 수 있다.
통상적으로, 프로세서가 타임아웃 에러와 같은 에러와 직면하면, 상기 프로세서의 실행 프로세스들(running process)은 프로세서의 레지스터에 저장된 상태 정보에 대한 액세스를 제공하지 않고 종료 및/또는 재부팅 된다. 대안적으로, 타임아웃 에러의 순간에 프로세서의 상태 정보(processor's state information)의 서브세트(subset)를 캡처(captures)하는 스냅 샷(snapshot)이 저장될 수 있다. 예를 들어, 상기 스냅 샷은 탑 레벨 레지스터들(412)과 같은 하나 이상의 탑 레벨 레지스터들로부터의 데이터를 포함할 수 있다. 그러나, 상기 스냅 샷은 딥 레지스터들(414)과 같은 딥 레지스터들로부터의 데이터를 포함하지 않는다. 특히, 딥 레지스터에 저장된 많은 정보가 가까운(at hand) 에러와 관련이 없으므로 딥 레지스터의 포괄적인 스냅 샷을 생성하는 것은 시간이 오래 걸리고 비효율적일 수 있다. 그럼에도 불구하고, 딥 레지스터로부터 관련 데이터에 선택적으로 액세스하는 능력은 프로세서 디버깅의 프로세스를 가속화하기 위해 바람직할 것이다.
이러한 이슈들을 다루기 위해, 뉴럴 네트워크 프로세서(400)에 의한 뉴럴 네트워크들의 실행은 디버그 모드에서 일시 정지되어 뉴럴 네트워크 프로세서(400)의 많은 레지스터들 내 데이터는 더 이상 동작 모드에서와 같이 값을 변경하지 않는다. 일부 실시예들에서, 뉴럴 네트워크 프로세서(400)는 디버그 모드에서 외부 자극 및/또는 요청에 응답할 수 있는 채로 유지된다. 결과적으로, 에러를 디버깅하는 작업을 맡은 엔지니어는 탑 레벨 레지스터들(412) 및 딥 레지스터들(414)을 포함하여 레지스터들로부터의 데이터에 대한 액세스를 유지한다. 예를 들어, 상기 엔지니어는 딥 레지스터(414)에 저장된 에러와 관련된 정보를 수동으로 찾도록 멀티플렉서(420)를 제어할 수 있다. 나아가, 도 4에 묘사된 바와 같이, 상기 엔지니어는 점증 동작(incremental operations)이 뉴럴 네트워크 프로세서(400)의 상태에 어떻게 영향을 미치는지 결정하기 위해 뉴럴 네트워크 프로세서(400) 상에서 단일 단계 명령어들을 실행할 능력을 가질 수 있다. 이러한 역량은 에러의 근본 원인을 결정하는데 도움이 될 수 있다. 따라서, 뉴럴 네트워크 프로세서(400)를 디버깅하는 프로세스는 종래의 접근법(conventional approaches)에 비해 상당히 가속화될 수 있다.
도 5는 도 5는 일부 실시 예에 따른 뉴럴 네트워크 프로세서에서의 오류 처리 방법(500)의 단순화된 도면이다. 도1 내지 4와 일치하는 일부 실시예들에 따르면, 방법(500)은 뉴럴 네트워크 프로세서(120,220, 및/또는 400)에 의해 구현될 수 있다.
프로세스(510)에서, 에러 리포트가 수신된다. 예를 들어, 상기 에러 리포트는 에러를 검출하는 것에 대한 응답으로 에러 검출기들(251-257)과 같은 뉴럴 네트워크 프로세서들의 하나 이상의 검출기들로부터 수신될 수 있다. 에러 리포트들의 예시적인 예들은 도 2와 관련하여 앞서 논의된 바와 같이 응답 에러, 무결성 에러, 프로토콜 에러, 패리티 에러, 명령어 에러, 계산 에러 및/또는 타임 아웃 에러를 포함한다. 일부 예들에서, 에러 리포트는 기계 체크 아키텍처(machine check architecture)(MCA) 에러 리포트에 대응할 수 있다.
프로세스(520)에서, 상기 에러의 타입이 결정된다. 일부 실시예들에서, 상기 에러의 타입을 결정하는 것은 에러가 프로그램 에러, 데이터 에러 및/또는 타임 아웃 에러에 대응하는지를 결정하는 것을 포함할 수 있다. 예를 들어, 프로그램 에러는 프로토콜 에러 및/또는 명령어 에러를 포함할 수 있고, 데이터 에러는 응답 에러, 무결성 에러, 패리티 에러 및/또는 계산 에러를 포함할 수 있고, 타임 아웃 에러는 타임 아웃 에러 검출기(257)에 의해 발생된 에러를 포함할 수 있다. 프로그램 에러와 직면하게 되면, 방법(500)은 프로세스(530)에서 뉴럴 네트워크의 실행을 종료하는 것 없이 뉴럴 네트워크의 미처리 결과가 손상된 것으로 식별하기 위한 프로세스(540)로 진행할 수 있다. 타임아웃 에러와 직면하게 되면, 방법(500)은 가동 모드 또는 생산 모드에서 뉴럴 네트워크 프로세서가 동작 중인지 여부에 따라 디버그 상태로 전이하기위한 프로세스(550) 또는 뉴럴 네트워크의 실행을 종료하고 뉴럴 네트워크 프로세서를 재설정하기 위한 프로세스(560)로 진행할 수 있다.
프로세스 (530)에서, 뉴럴 네트워크 프로세서의 재설정 없이 뉴럴 네트워크의 실행이 즉시 종료 및/또는 일시 중지된다. 일부 실시예들에서, 프로세스 (530)는 실행될 명령어들이 결함이 있을 때(예컨대, 프로그램 명령어들이 인식되지 않거나 유효하지 않은 커맨드들 및/또는 명령어 코드들을 포함할 때) 뉴럴 네트워크를 계속 실행하지 못할 수 있기 때문에 프로그램 에러와 직면한 때 수행될 수 있다. 따라서, 뉴럴 네트워크의 실행은 즉시 정지될 수 있고 이로써 명령어들이 다시 로드되고/되거나 정정될 수 있다.
프로세스 (540)에서, 뉴럴 네트워크의 미처리 결과는 손상된 것으로 식별된다. 일부 실시예들에서, 미처리 결과는 에러 인터럽트 핀 (284)과 같은 뉴럴 네트워크 프로세서의 에러 인터럽트 핀의 레벨을 변경함으로써 손상된 것으로 식별될 수 있다. 에러 인터럽트 핀의 레벨을 변경하는 것은 인터럽트 처리기(290)와 같은 외부 시스템이 에러 정보에 액세스하고(예컨대, 뉴럴 네트워크 프로세서의 상태 레지스터들로부터 에러 정보를 검색함으로써) 적절한 개선 조치를 결정할 수 있도록 할 수 있다. 손상된 것으로 식별되는 뉴럴 네트워크의 미처리 결과에 대한 응답으로 취해지는 개선 조치들의 예들은 미처리 뉴럴 네트워크 계산(pending neural network computation)을 처음부터 및/또는 이전 체크 포인트부터 재시도하는 것, 미처리 결과를 완전히 버리고 다음 계산으로 넘어가는 것, 뉴럴 네트워크 프로세서를 재부팅 하는 것 등을 포함한다.
프로세스 (550)에서, 뉴럴 네트워크 프로세서가 가동 동안 타임 아웃 에러와 직면하면, 상기 뉴럴 네트워크 프로세서는 디버그 모드로 전이한다. 도 4와 관련하여 전술한 바와 같이, 상기 뉴럴 네트워크 프로세서가 디버그 모드로 전이하면, 상기 뉴럴 네트워크 프로세서의 실행이 일시 정지되어, 타임 아웃 에러시의 레지스터 값이 변경을 중지한다. 이 점에서, 엔지니어는 레지스터 값들을 검사함으로써 및/또는 명령어들의 단일 단계 실행(single-step execution)을 통해서 상기 타임아웃 에러를 디버그 할 수 있다.
프로세스 (560)에서, 뉴럴 네트워크 프로세서가 생산에서 타임 아웃 에러와 직면하면, 상기 뉴럴 네트워크의 실행이 종료되고 상기 뉴럴 네트워크 프로세서가 재부팅 된다. 가동 사례와 달리, 타임아웃 에러에 대한 응답으로 상기 뉴럴 네트워크 프로세서를 가능한 빨리 백업하고 실행하는 것이 바람직하다. 나아가, 생산 환경에서 뉴럴 네트워크 프로세서를 디버그 하기 위해 이용할 수 있는 엔지니어링 리소스들은 일반적으로 없다. 따라서, 정지 상태를 제거하기 위해 상기 뉴럴 네트워크 프로세서를 재부팅 하는 것은 생산에서 타임아웃 에러에 대한 선호되는 응답일 수 있다.
뉴럴 네트워크 프로세서(120, 220, 및/또는 400)와 같은 프로세서의 일부 예들은 하나 이상의 프로세서(예를 들어, 프로세서(120, 220, 및/또는 400))에 의해 실행될 때 상기 하나 이상의 프로세서들이 방법(500)의 프로세스들을 수행하도록 할 수 있는 실행할 수 있는 코드들을 포함하는 비 일시적인(non-transient), 유형의(tangible), 기계 읽기 가능 매체를 포함할 수 있다. 방법(500)의 프로세스들을 포함할 수 있는 몇몇 일반적인 형태의 기계 읽기 가능 매체는 예를 들어, 플로피 디스크, 플렉서블 디스크, 하드 디스크, 자기 테이프, 임의의 다른 자기 매체, CD-ROM, 임의의 다른 광학 매체, 펀치 카드, 종이 테이프, 홀 패턴이 있는 기타 물리적 매체, RAM, PROM, EPROM, FLASH-EPROM, 기타 메모리 칩 또는 카트리지 및/또는 프로세서나 컴퓨터가 읽기에 적합한 기타 매체가 있다.
예시적인 실시예들이 도시되고 설명되었지만, 전술한 개시 및 일부 경우들에서, 광범위한 수정, 변경 및 대체가 고려되고, 실시예들의 일부 특징들은 다른 특징들의 대응하는 사용 없이 채용될 수 있다. 당업자는 많은 변형, 대안, 및 수정을 인식할 것이다. 따라서, 본 발명의 범위는 다음의 청구 범위에 의해서만 제한되어야 하고, 청구 범위는 여기에 개시된 실시예의 범위와 일치하는 방식으로 광범위하게 해석되는 것이 적절하다.

Claims (20)

  1. 차량의 사용과 관련된 뉴럴 네트워크를 실행하기 위한 뉴럴 네트워크 프로세서에 있어서, 상기 뉴럴 네트워크 프로세서는
    상기 뉴럴 네트워크의 실행과 관련된 데이터 에러를 검출하도록 구성된 에러 검출기; 및
    상기 에러 검출기로부터 데이터 에러의 리포트(report)를 수신하도록 구성된 뉴럴 네트워크 컨트롤러를 포함하고,
    상기 뉴럴 네트워크 컨트롤러는, 상기 리포트를 수신하는 것에 대한 응답으로, 상기 뉴럴 네트워크의 실행을 종료하는 것 없이 상기 뉴럴 네트워크의 미처리 결과(pending result)가 오염되었음을 신호하도록 구성되는, 뉴럴 네트워크 프로세서.
  2. 제1항에 있어서, 상기 데이터 에러는 응답 에러, 무결성 에러(integrity error), 패리티 에러(parity error), 또는 계산 에러(computation error) 중 적어도 하나를 포함하는, 뉴럴 네트워크 프로세서.
  3. 제1항에 있어서, 인터럽트 컨트롤러(interrupt controller)와 통신하기 위한 에러 인터럽트 핀(error interrupt pin)을 더 포함하고,
    상기 뉴럴 네트워크 컨트롤러는 상기 에러 인터럽트 핀을 통해 상기 뉴럴 네트워크의 상기 미처리 결과가 오염되었음을 신호하도록 구성되는, 뉴럴 네트워크 프로세서.
  4. 제1항에 있어서, 상기 뉴럴 네트워크 컨트롤러는 상기 데이터 에러와 관련된 정보를 저장하는 상태 레지스터(status register)를 더 포함하는, 뉴럴 네트워크 프로세서.
  5. 제1항에 있어서, 상기 뉴럴 네트워크와 관련된 프로그램 에러를 검출하도록 구성된 제2 에러 검출기를 더 포함하는, 뉴럴 네트워크 프로세서.
  6. 제5항에 있어서, 상기 뉴럴 네트워크 컨트롤러는 상기 제2 에러 검출기로부터 상기 프로그램의 제2리포트를 수신하도록 더 구성되고, 상기 뉴럴 네트워크 컨트롤러는, 상기 제2리포트를 수신하는 것에 대한 응답으로, 상기 뉴럴 네트워크의 실행을 종료하고 상기 뉴럴 네트워크의 미처리 결과가 오염되었음을 신호하도록 더 구성되는, 뉴럴 네트워크 프로세서.
  7. 제5항에 있어서, 상기 프로그램 에러는 프로토콜 에러(protocol error) 또는 명령어 에러(instruction error) 중 적어도 하나를 포함하는, 뉴럴 네트워크 프로세서.
  8. 제1항에 있어서, 상기 뉴럴 네트워크와 관련된 타임아웃 에러(timeout error)를 검출하도록 구성된 타임아웃 에러 검출기를 더 포함하는, 뉴럴 네트워크 프로세서.
  9. 제8항에 있어서, 상기 뉴럴 네트워크 컨트롤러는 상기 타임아웃 에러 검출기로부터 상기 타임아웃 에러의 제3리포트를 수신하도록 더 구성되고, 상기 뉴럴 네트워크 컨트롤러는, 상기 제3리포트를 수신하는 것에 대한 응답으로, 상기 뉴럴 네트워크 프로세서를 재부팅 하도록 더 구성되는, 뉴럴 네트워크 프로세서.
  10. 제8항에 있어서, 상기 타임아웃 에러 검출기는 상기 뉴럴 네트워크 프로세서의 대응하는 복수의 블록들 내 아이들 사이클들(idle cycles)을 모니터링하는 복수의 프라이머리 타이머들(primary timers) 및 상기 뉴럴 네트워크 프로세서의 복수의 블록들 내 총 활동(aggregate activity)을 모니터링 하는 복합 타이머들(composite timers)을 포함하는, 뉴럴 네트워크 프로세서.
  11. 제10항에 있어서, 상기 하나 이상의 복합 타이머들은 상기 뉴럴 네트워크의 한 레이어를 처리하는데 걸리는 시간이 미리 결정된 임계 시간을 초과할 때 타임 아웃 되는 레이어 타이머(layer timer)를 포함하는, 뉴럴 네트워크 프로세서.
  12. 제10항에 있어서, 상기 하나 이상의 미분 타이머들(derivative timers)은 상기 뉴럴 네트워크를 처리하는데 걸리는 시간이 미리 결정된 임계 시간을 초과할 때 타임 아웃 되는 뉴럴 네트워크 타이머를 포함하는, 뉴럴 네트워크 프로세서.
  13. 제1항에 있어서, 상기 뉴럴 네트워크는 상기 차량의 카메라에 의해 캡처 된 이미지들의 스트림 내 특징들을 식별하도록 구성된, 뉴럴 네트워크 프로세서.
  14. 제1항에 있어서, 상기 뉴럴 네트워크 프로세서는 하나 이상의 추가적인 뉴럴 네트워크들을 동시에 실행하고, 상기 뉴럴 네트워크 컨트롤러는 상기 하나 이상의 추가적인 뉴럴 네트워크들 각각과 관련된 에러들을 개별적으로 관리하는, 뉴럴 네트워크 프로세서.
  15. 차량의 자율 동작(autonomous operation)과 관련된 뉴럴 네트워크를 실행하기 위한 뉴럴 네트워크 프로세서; 및
    상기 뉴럴 네트워크 프로세서와 연결된 인터럽트 컨트롤러를 포함하고,
    상기 인터럽트 컨트롤러는
    뉴럴 네트워크 프로세서의 에러 인터럽트 핀을 통해 에러 신호를 수신하고,
    상기 뉴럴 네트워크 프로세서의 하나 이상의 상태 레지스터들을 통해 에러 정보에 액세스하고, - 상기 에러 정보는 뉴럴 네트워크 프로세서에 의해 직면하게 된 에러의 타입을 나타냄 -, 및
    상기 에러의 상기 타입이 데이터 에러에 대응하는 경우, 상기 뉴럴 네트워크 프로세서의 미처리 결과가 손상된 것으로 식별하도록 구성된, 시스템.
  16. 제15항에 있어서, 상기 뉴럴 네트워크 프로세서는 상기 에러의 상기 타입이 프로그램 에러에 대응할 때 상기 뉴럴 네트워크의 실행을 종료하도록 더 구성되는, 시스템.
  17. 제15항에 있어서, 상기 뉴럴 네트워크 프로세서가 가동(bring-up)하는 동안, 상기 뉴럴 네트워크 프로세서는 상기 에러의 상기 타입이 타임아웃 에러에 대응할 때 디버그 모드로 전이하도록 더 구성되는, 시스템.
  18. 제17항에 있어서, 상기 디버그 모드에서, 상기 뉴럴 네트워크 프로세서는 하나 이상의 딥 레지스터들(deep registers)에 대한 액세스를 제공하고 단일 단계 명령어들(single-step instructions)을 수행하도록 구성되는, 시스템.
  19. 차량 뉴럴 네트워크 프로세서 내 에러들을 처리하는 방법에 있어서,
    차량이 동작하는 동안 상기 차량 뉴럴 네트워크 프로세서에 의해 직면하게 된 에러에 기초하여 에러 리포트를 수신하는 단계;
    상기 에러 리포트에 기초하여 상기 에러의 타입을 결정하는 단계; 및
    상기 에러의 상기 타입이 데이터 에러에 대응한다는 결정에 대한 응답으로, 상기 차량 뉴럴 네트워크 프로세서의 동작이 진행하도록 하는 동안 차량 뉴럴 네트워크 프로세서의 미처리 결과가 손상되었음을 신호하는 단계
    를 포함하는, 방법.
  20. 제19항에 있어서, 상기 데이터 에러는 유효하지 않은 입력 데이터를 수신하는 차량 뉴럴 네트워크 프로세서에 대한 응답으로 발생되는, 방법.
KR1020207009698A 2017-11-17 2018-11-16 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법 KR102295601B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217026896A KR102378726B1 (ko) 2017-11-17 2018-11-16 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/817,005 US10606678B2 (en) 2017-11-17 2017-11-17 System and method for handling errors in a vehicle neural network processor
US15/817,005 2017-11-17
PCT/US2018/061677 WO2019099941A1 (en) 2017-11-17 2018-11-16 System and method for handling errors in a vehicle neural network processor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217026896A Division KR102378726B1 (ko) 2017-11-17 2018-11-16 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20200047670A true KR20200047670A (ko) 2020-05-07
KR102295601B1 KR102295601B1 (ko) 2021-08-30

Family

ID=66534507

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217026896A KR102378726B1 (ko) 2017-11-17 2018-11-16 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법
KR1020227009369A KR20220041954A (ko) 2017-11-17 2018-11-16 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법
KR1020207009698A KR102295601B1 (ko) 2017-11-17 2018-11-16 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020217026896A KR102378726B1 (ko) 2017-11-17 2018-11-16 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법
KR1020227009369A KR20220041954A (ko) 2017-11-17 2018-11-16 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법

Country Status (6)

Country Link
US (4) US10606678B2 (ko)
EP (2) EP3710328B1 (ko)
KR (3) KR102378726B1 (ko)
CN (1) CN111212775A (ko)
CA (1) CA3075820A1 (ko)
WO (1) WO2019099941A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12079661B2 (en) 2022-11-04 2024-09-03 Rebellions Inc. Processing device and method for managing tasks thereof

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108154230B (zh) * 2016-12-05 2020-09-01 赛灵思公司 深度学习处理器的监控方法和监控装置
US10606678B2 (en) 2017-11-17 2020-03-31 Tesla, Inc. System and method for handling errors in a vehicle neural network processor
PL3803531T3 (pl) * 2018-06-11 2023-01-16 Telefonaktiebolaget Lm Ericsson (Publ) Określanie parametrów sterowania dla formacji wielu uav
US11027764B2 (en) * 2018-06-27 2021-06-08 Toyota Motor Engineering & Manufacturing North America, Inc. Vehicle driving mode safety system
US10846201B1 (en) * 2018-09-21 2020-11-24 Amazon Technologies, Inc. Performance debug for networks
US20200125722A1 (en) * 2018-10-18 2020-04-23 Denso International America, Inc. Systems and methods for preventing runaway execution of artificial intelligence-based programs
US12061971B2 (en) 2019-08-12 2024-08-13 Micron Technology, Inc. Predictive maintenance of automotive engines
US11436076B2 (en) * 2019-09-05 2022-09-06 Micron Technology, Inc. Predictive management of failing portions in a data storage device
US20210182386A1 (en) * 2019-12-11 2021-06-17 Samsung Electronics Co., Ltd. Electronic apparatus that monitors a safety function and a controlling method thereof
US11741237B2 (en) * 2019-12-20 2023-08-29 Sap Se Content-driven debugging by taint tracking along data flows
GB2592437B (en) * 2020-02-28 2022-03-02 Imagination Tech Ltd Critical workload check
GB2592436B (en) * 2020-02-28 2022-02-23 Imagination Tech Ltd Critical workload check
CN113496275B (zh) 2020-04-08 2023-07-25 北京地平线机器人技术研发有限公司 指令执行方法、装置和电子设备
CN111711585B (zh) * 2020-06-11 2021-06-22 西安交通大学 一种基于深度学习的实时信号序列检测方法
CN112231134B (zh) * 2020-10-28 2023-08-08 地平线(上海)人工智能技术有限公司 神经网络处理器的故障处理方法及装置、设备、存储介质
CN112506690B (zh) * 2020-12-09 2024-07-05 北京地平线信息技术有限公司 控制处理器的方法及装置
KR102360725B1 (ko) * 2020-12-15 2022-02-08 현대오토에버 주식회사 차량용 제어기 및 그것의 에러 관리 방법
CN113127285B (zh) * 2021-06-17 2021-10-08 北京燧原智能科技有限公司 一种错误数据调试方法、装置、芯片及计算机设备
CN114118356B (zh) * 2021-10-11 2023-02-28 北京百度网讯科技有限公司 神经网络处理器验证方法、装置、电子设备及存储介质
DE102022202696A1 (de) 2022-03-18 2023-09-21 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zur Kategorisierung von durch einen Algorithmus des maschinellen Lernens ausgegeben Ausgabedaten
CN118251660A (zh) * 2022-04-29 2024-06-25 辉达公司 检测数据处理管线中的硬件故障
CN115712517B (zh) * 2022-09-30 2024-04-16 北京地平线机器人技术研发有限公司 一种神经网络处理器的故障处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070271014A1 (en) * 1995-06-07 2007-11-22 Automotive Technologies International, Inc. Vehicle Diagnostic and Prognostic Methods and Systems
US20120030392A1 (en) * 2010-07-30 2012-02-02 Mips Technologies, Inc. System and Method for Automatic Hardware Interrupt Handling
KR101242407B1 (ko) * 2011-10-18 2013-03-18 대성전기공업 주식회사 듀얼 컨트롤러 시스템의 오류 검출 장치 및 방법
US20170300372A1 (en) * 2014-09-03 2017-10-19 Ucl Business Plc Method and apparatus for the detection of faults in data computations

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080161989A1 (en) * 1995-06-07 2008-07-03 Automotive Technologies International, Inc. Vehicle Diagnostic or Prognostic Message Transmission Systems and Methods
US5919267A (en) * 1997-04-09 1999-07-06 Mcdonnell Douglas Corporation Neural network fault diagnostics systems and related method
US7334059B2 (en) * 2004-03-03 2008-02-19 Freescale Semiconductor, Inc. Multiple burst protocol device controller
US20100023203A1 (en) * 2008-07-23 2010-01-28 Oren Shibi Diagnosis system and method for assisting a user
US8301333B2 (en) * 2010-03-24 2012-10-30 GM Global Technology Operations LLC Event-driven fault diagnosis framework for automotive systems
US9015093B1 (en) * 2010-10-26 2015-04-21 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
US8953436B2 (en) * 2012-09-20 2015-02-10 Broadcom Corporation Automotive neural network
US8893088B2 (en) * 2013-04-02 2014-11-18 Apple Inc. Dynamic program evaluation for system adaptation
EP3017403A2 (en) * 2013-07-01 2016-05-11 Agent Video Intelligence Ltd. System and method for abnormality detection
US9965626B2 (en) * 2013-07-18 2018-05-08 Empire Technology Development Llc Memory attack detection
US9442793B2 (en) * 2013-07-23 2016-09-13 Qualcomm Incorporated Robust hardware/software error recovery system
EP3098681B1 (en) * 2015-05-27 2020-08-26 Tata Consultancy Services Limited Artificial intelligence based health management of host system
KR101706367B1 (ko) * 2015-11-27 2017-02-14 공주대학교 산학협력단 과소작동기를 갖는 자율무인 이동체의 신경회로망 기반 결함포용 컨트롤 방법
US10606678B2 (en) 2017-11-17 2020-03-31 Tesla, Inc. System and method for handling errors in a vehicle neural network processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070271014A1 (en) * 1995-06-07 2007-11-22 Automotive Technologies International, Inc. Vehicle Diagnostic and Prognostic Methods and Systems
US20120030392A1 (en) * 2010-07-30 2012-02-02 Mips Technologies, Inc. System and Method for Automatic Hardware Interrupt Handling
KR101242407B1 (ko) * 2011-10-18 2013-03-18 대성전기공업 주식회사 듀얼 컨트롤러 시스템의 오류 검출 장치 및 방법
US20170300372A1 (en) * 2014-09-03 2017-10-19 Ucl Business Plc Method and apparatus for the detection of faults in data computations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12079661B2 (en) 2022-11-04 2024-09-03 Rebellions Inc. Processing device and method for managing tasks thereof

Also Published As

Publication number Publication date
US10606678B2 (en) 2020-03-31
US20240086270A1 (en) 2024-03-14
US11132245B2 (en) 2021-09-28
US20190155678A1 (en) 2019-05-23
US20200394095A1 (en) 2020-12-17
KR102295601B1 (ko) 2021-08-30
KR102378726B1 (ko) 2022-03-28
EP4261743A2 (en) 2023-10-18
EP4261743A3 (en) 2023-11-29
EP3710328B1 (en) 2023-10-11
CA3075820A1 (en) 2019-05-23
CN111212775A (zh) 2020-05-29
KR20220041954A (ko) 2022-04-01
WO2019099941A1 (en) 2019-05-23
US11734095B2 (en) 2023-08-22
EP3710328A4 (en) 2021-08-25
EP3710328A1 (en) 2020-09-23
US20220083412A1 (en) 2022-03-17
KR20210118899A (ko) 2021-10-01

Similar Documents

Publication Publication Date Title
KR102295601B1 (ko) 차량 뉴럴 네트워크 프로세서의 에러들을 처리하는 시스템 및 방법
KR102661774B1 (ko) 이미지 오분류에 대한 안전 모니터
TWI544410B (zh) 利用執行單步驟以進行編碼診斷
US6496946B2 (en) Electronic control apparatus with memory validation and method
CN107111595B (zh) 用于检测早期引导错误的方法、设备及系统
EP2816480A1 (en) Processor system
US11567751B2 (en) Providing system updates in automotive contexts
CN105868060B (zh) 用于运行驾驶员辅助系统的数据处理单元的方法和数据处理单元
US20220164268A1 (en) Transmission link testing
EP3629176B1 (en) Fault detection circuit with progress register and status register
US12045675B2 (en) Safety monitor for incorrect kernel computation
CN115712517A (zh) 一种神经网络处理器的故障处理方法及装置
KR101735166B1 (ko) 위성 상태를 기록하는 장치 및 방법
US20220222135A1 (en) Electronic control device
JP2014182676A (ja) ログ採取装置、演算装置、およびログ採取方法
JP5733515B2 (ja) Ras機能を備える組み込み機器
CN114902059A (zh) 调试状态机触发的扩展性能监控计数器
Schumann et al. Software and system health management for autonomous robotics missions
US11796591B1 (en) Smart storage of shutdown LBIST status
TWI781452B (zh) 監控及復原異質性元件的系統及方法
US20240211336A1 (en) Scalable architecture for error capturing with single logger approach for automotive systems
Sharnouby et al. Thread Homeostasis-Real-Time Anomalous Behavior Detection Using Short Sequences of Messages for Safety-Critical Software
Alsharnouby et al. Thread Homeostasis: Real-Time Anomalous Behavior Detection for Safety-Critical Software
Krosman et al. Fault tolerance techniques for embedded telemetry system: case study
US20080195896A1 (en) Apparratus and method for universal programmable error detection and real time error detection

Legal Events

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