KR102408936B1 - Image recognition processor including functional safety processor core and operation method thereof - Google Patents

Image recognition processor including functional safety processor core and operation method thereof Download PDF

Info

Publication number
KR102408936B1
KR102408936B1 KR1020190020775A KR20190020775A KR102408936B1 KR 102408936 B1 KR102408936 B1 KR 102408936B1 KR 1020190020775 A KR1020190020775 A KR 1020190020775A KR 20190020775 A KR20190020775 A KR 20190020775A KR 102408936 B1 KR102408936 B1 KR 102408936B1
Authority
KR
South Korea
Prior art keywords
recognition result
recognition
processor
nanocores
processor core
Prior art date
Application number
KR1020190020775A
Other languages
Korean (ko)
Other versions
KR20200066124A (en
Inventor
한진호
권영수
조용철
최민석
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US16/694,899 priority Critical patent/US11176395B2/en
Publication of KR20200066124A publication Critical patent/KR20200066124A/en
Application granted granted Critical
Publication of KR102408936B1 publication Critical patent/KR102408936B1/en

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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]

Abstract

본 발명에 따른 영상 인식 프로세서는, 각각 명령어에 응답하여 입력 피처를 커널 계수를 사용하여 패턴 인식 연산을 수행하는 행과 열로 배열되는 복수의 나노 코어들, 상기 복수의 나노 코어들 각각에 상기 명령어를 제공하는 명령어 메모리, 상기 복수의 나노 코어들 각각에 상기 입력 피처를 제공하는 피처 메모리, 상기 복수의 나노 코어들에 상기 커널 계수를 제공하는 커널 메모리, 그리고 상기 복수의 나노 코어들로부터 출력되는 패턴 인식 연산의 결과를 수신하여 인식 오류의 존재 여부를 검출하고, 검출된 인식 오류에 대해 오류 허용 기능을 수행하는 기능 안전 프로세서 코어를 포함하되, 상기 기능 안전 프로세서 코어는, 제 1 구동 전압 및 제 1 구동 클록에 의해서 구동되는 제 1 프로세서, 제 2 구동 전압 및 제 2 구동 클록에 의해서 구동되며, 상기 제 1 프로세서와 동일한 작업을 수행하는 제 2 프로세서를 포함하고, 상기 제 1 구동 전압과 상기 제 2 구동 전압 각각은 상호 독립적인 전압 레귤레이터로부터 공급되고, 상기 제 1 구동 클록과 상기 제 2 구동 클록 각각은 상호 독립적인 클록 발생기들로부터 제공된다.The image recognition processor according to the present invention includes a plurality of nanocores arranged in rows and columns that perform a pattern recognition operation using kernel coefficients on input features in response to each instruction, and the instruction to each of the plurality of nanocores. A command memory providing the input feature, a feature memory providing the input feature to each of the plurality of nanocores, a kernel memory providing the kernel coefficients to the plurality of nanocores, and pattern recognition output from the plurality of nanocores A functional safety processor core that receives a result of the operation to detect the presence of a recognition error, and performs an error tolerance function for the detected recognition error, wherein the functional safety processor core includes a first driving voltage and a first driving voltage a first processor driven by a clock, a second driving voltage, and a second driving clock driven by a second processor performing the same operation as the first processor, wherein the first driving voltage and the second driving Each of the voltages is supplied from a mutually independent voltage regulator, and each of the first driving clock and the second driving clock is supplied from mutually independent clock generators.

Description

기능 안전 프로세서 코어를 포함하는 영상 인식 프로세서 및 그것의 동작 방법{IMAGE RECOGNITION PROCESSOR INCLUDING FUNCTIONAL SAFETY PROCESSOR CORE AND OPERATION METHOD THEREOF}Image recognition processor including functional safety processor core and method of operation thereof

본 발명은 전자 장치에 관한 것으로, 좀더 상세하게는 인식된 패턴에 대한 오류 검출 및 오류 방지 기능을 수행하는 기능 안전 프로세서 코어를 포함하는 영상 인식 프로세서 및 그것의 동작 방법에 관한 것이다. The present invention relates to an electronic device, and more particularly, to an image recognition processor including a functional safety processor core that performs an error detection and error prevention function for a recognized pattern, and an operating method thereof.

최근에는 자동차나 다양한 운송 시스템 등에서는 ADAS(Advanced Driver Assistance System)이나 자율 주행을 위한 고도의 지능과 정밀성을 요구하는 시스템의 개발이 활발히 이루어지고 있다. 특히, 외부 환경의 인식 및 인식된 영상, 음성 또는 센서들의 입력을 분석하여 자동차를 제어하기 위해서는 대량의 데이터를 실시간으로 분석하고 처리하기 위한 성능이 요구된다. 이러한 시스템에서는 사소한 인식 오류도 대형 사고를 유발할 수 있기 때문에 센서 데이터의 인식을 수행하는 프로세서 시스템의 신뢰성(Reliability)은 특히 중요하다.Recently, in automobiles and various transportation systems, the development of an Advanced Driver Assistance System (ADAS) or a system requiring high intelligence and precision for autonomous driving is being actively developed. In particular, performance for analyzing and processing a large amount of data in real time is required in order to control the vehicle by analyzing the recognition of the external environment and input of recognized images, voices, or sensors. In such a system, since even a small recognition error can cause a major accident, the reliability of the processor system that performs the recognition of sensor data is particularly important.

이와 같이, 센서 데이터를 처리하여 그 패턴을 인식하는 장치는 자동차, 비행기 등 가혹한 환경에서 동작하기 위해 결함 허용(Fault tolerance) 기능을 포함하도록 설계되어야 한다. 심층 신경망(Deep Neural Network) 시스템과 같은 패턴 인식 시스템에서는 많은 수의 CPU 코어들을 사용하는 분산 컴퓨팅 기법을 사용하고 있다. 특히, 다양한 오류나 결함에 기인한 인식 오류를 검출하고, 검출된 인식 오류를 복구할 수 있는 기술은 여전히 많은 연구가 필요한 실정이다.As such, an apparatus for processing sensor data and recognizing the pattern must be designed to include a fault tolerance function in order to operate in harsh environments such as automobiles and airplanes. A pattern recognition system such as a deep neural network system uses a distributed computing technique using a large number of CPU cores. In particular, a technology capable of detecting a recognition error caused by various errors or defects and recovering the detected recognition error still requires a lot of research.

본 발명은 반도체 내에 센서 데이터를 처리하여 패턴을 인식하는 프로세서의 동작 오류를 검출하고, 센서 데이터 처리 결과의 특성을 이용하여 검출된 오류를 감내할 수 있는 기능을 갖는 영상 인식 프로세서를 제공하기 위한 것이다.An object of the present invention is to provide an image recognition processor having a function of detecting an operation error of a processor for recognizing a pattern by processing sensor data in a semiconductor, and tolerating the detected error using the characteristics of the sensor data processing result. .

본 발명의 일 실시 예에 따른 영상 인식 프로세서는, 각각 명령어에 응답하여 입력 피처를 커널 계수를 사용하여 패턴 인식 연산을 수행하는 행과 열로 배열되는 복수의 나노 코어들, 상기 복수의 나노 코어들 각각에 상기 명령어를 제공하는 명령어 메모리, 상기 복수의 나노 코어들 각각에 상기 입력 피처를 제공하는 피처 메모리, 상기 복수의 나노 코어들에 상기 커널 계수를 제공하는 커널 메모리, 그리고 상기 복수의 나노 코어들로부터 출력되는 패턴 인식 연산의 결과를 수신하여 인식 오류의 존재 여부를 검출하고, 검출된 인식 오류에 대해 오류 허용 기능을 수행하는 기능 안전 프로세서 코어를 포함하되, 상기 기능 안전 프로세서 코어는, 제 1 구동 전압 및 제 1 구동 클록에 의해서 구동되는 제 1 프로세서, 제 2 구동 전압 및 제 2 구동 클록에 의해서 구동되며, 상기 제 1 프로세서와 동일한 작업을 수행하는 제 2 프로세서를 포함하고, 상기 제 1 구동 전압과 상기 제 2 구동 전압 각각은 상호 독립적인 전압 레귤레이터로부터 공급되고, 상기 제 1 구동 클록과 상기 제 2 구동 클록 각각은 상호 독립적인 클록 발생기들로부터 제공된다.An image recognition processor according to an embodiment of the present invention includes a plurality of nanocores arranged in a row and a column for performing a pattern recognition operation using kernel coefficients on input features in response to commands, each of the plurality of nanocores a command memory providing the instruction to, a feature memory providing the input feature to each of the plurality of nanocores, a kernel memory providing the kernel coefficients to the plurality of nanocores, and from the plurality of nanocores A functional safety processor core that receives a result of the output pattern recognition operation, detects the presence of a recognition error, and performs an error tolerance function for the detected recognition error, wherein the functional safety processor core includes a first driving voltage and a first processor driven by a first driving clock, a second driving voltage, and a second processor driven by a second driving clock and performing the same operation as the first processor, wherein the first driving voltage and Each of the second driving voltages is supplied from a mutually independent voltage regulator, and each of the first driving clock and the second driving clock is supplied from mutually independent clock generators.

상술한 본 발명의 실시 예에 따른 영상 인식 프로세서는 센서 장치나 센서 데이터를 처리하는 과정에서 발생하는 일시적 오류나 영구적 오류로 인한 오동작 가능성을 낮출 수 있다. 따라서, 영상 인식 프로세서에서 센서 데이터의 인식률 한계에 따른 반도체 오동작을 방지할 수 있을 것으로 기대된다.The image recognition processor according to the above-described embodiment of the present invention can reduce the possibility of a malfunction due to a temporary error or a permanent error occurring in the process of processing the sensor device or sensor data. Therefore, it is expected that the semiconductor malfunction due to the limit of the recognition rate of sensor data in the image recognition processor can be prevented.

도 1은 본 발명의 실시 예에 따른 영상 인식 프로세서를 간략히 보여주는 블록도이다.
도 2는 본 발명의 코어 어레이에서 수행되는 영상 인식 과정을 간략히 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 영상 인식 프로세서의 구조를 구체적으로 보여주는 블록도이다.
도 4는 본 발명의 나노 코어들에서의 데이터 이동을 간략히 보여주는 도면이다.
도 5는 도 3의 기능 안전 프로세서 코어의 구성을 예시적으로 보여주는 블록도이다.
도 6은 인식 오류를 검출하기 위한 나노 코어들의 그룹화 방식을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 인식 오류 검출 및 오류 허용 방법을 보여주는 순서도이다.
1 is a block diagram schematically illustrating an image recognition processor according to an embodiment of the present invention.
2 is a diagram schematically illustrating an image recognition process performed in the core array of the present invention.
3 is a block diagram specifically showing the structure of an image recognition processor according to an embodiment of the present invention.
4 is a diagram schematically showing data movement in the nanocores of the present invention.
5 is a block diagram exemplarily showing the configuration of the functional safety processor core of FIG. 3 .
6 is a diagram exemplarily showing a grouping method of nanocores for detecting a recognition error.
7 is a flowchart illustrating a method for detecting a recognition error and allowing an error according to an embodiment of the present invention.

이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.Hereinafter, in order to describe in detail enough that a person of ordinary skill in the art to which the present invention pertains can easily implement the technical idea of the present invention, an embodiment of the present invention will be described with reference to the accompanying drawings. .

도 1은 본 발명의 실시 예에 따른 영상 인식 프로세서의 구조를 간략히 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 영상 인식 프로세서(100)는 코어 어레이(110), 커널 메모리(120), 명령어 메모리(130), 지연 체인(140), 피처 메모리(150), 기능 안전 프로세서 코어(160), 그리고 버스(170)를 포함할 수 있다.1 is a block diagram schematically showing the structure of an image recognition processor according to an embodiment of the present invention. Referring to FIG. 1 , the image recognition processor 100 of the present invention includes a core array 110 , a kernel memory 120 , an instruction memory 130 , a delay chain 140 , a feature memory 150 , and a functional safety processor core. 160 , and a bus 170 .

코어 어레이(110)는 피처 메모리(150)로부터 제공되는 입력 데이터(Fm)를 명령어 메모리(130) 및 커널 메모리(120)가 제공하는 명령어 및 커널 정보를 사용하여 처리한다. 코어 어레이(110)는 예를 들면 센싱된 영상이 수신되는 경우, 센싱된 영상의 패턴을 식별하기 위한 명령어(Instruction)와 커널(Kernel)을 사용하여 처리한다. 예를 들면, 코어 어레이(110)는 컨볼루션(Convolution) 연산이나 풀링(Pooling)과 같은 다운-샘플링 연산을 수행할 수 있다. The core array 110 processes input data Fm provided from the feature memory 150 using commands and kernel information provided by the command memory 130 and the kernel memory 120 . The core array 110 processes, for example, when a sensed image is received, using an instruction and a kernel for identifying a pattern of the sensed image. For example, the core array 110 may perform a down-sampling operation such as a convolution operation or a pooling operation.

특히, 코어 어레이(110)는 컨볼루션(Convolution) 연산이나 풀링(Pooling) 연산을 처리하기 위한 행과 열로 배열되는 복수의 나노 코어(Nano Core: 이하, NC)들을 포함할 수 있다. 나노 코어들은 제공되는 피처(Feature)들을 병렬 처리 방식이나 순차 처리 방식으로 처리할 수 있다. 본 발명에서는 복수의 나노 코어들이 특정 지연 시간을 가지고 동일한 연산을 처리하도록 제어될 수 있다. 그리고 일정한 시간 간격으로 복수의 나노 코어들에서 처리된 패턴 인식 연산의 결과는 피처 메모리(150)를 경유하여 기능 안전 프로세서 코어(160)에 제공될 수 있다. 코어 어레이(110)에 포함되는 복수의 나노 코어들(NCs)은 그룹 단위로 구분될 수 있다. 그리고 각각의 그룹 단위의 나노 코어들은 동일한 영상 또는 서로 다른 영상에 대한 패턴 인식 연산을 수행할 수 있다. In particular, the core array 110 may include a plurality of nano-cores (hereinafter, NCs) arranged in rows and columns for processing a convolution operation or a pooling operation. The nanocores may process provided features in a parallel processing method or a sequential processing method. In the present invention, a plurality of nanocores may be controlled to process the same operation with a specific delay time. In addition, the result of the pattern recognition operation processed by the plurality of nanocores at regular time intervals may be provided to the functional safety processor core 160 via the feature memory 150 . The plurality of nanocores NCs included in the core array 110 may be divided into groups. In addition, the nanocores of each group may perform a pattern recognition operation on the same image or different images.

커널 메모리(120)는 코어 어레이(110)에 제공되는 명령어에 동기하여 복수의 커널(Kernel) 정보를 코어 어레이(110)에 제공한다. 커널 메모리(120)는 코어 어레이(110)에서 수행되는 컨볼루션 연산을 위해 커널 정보나 계수, 바이어스(Bias) 가산, 활성화, 풀링 등에 필요한 다양한 파라미터들을 제공할 수 있다. 커널 메모리(120)는 예를 들면, 코어 어레이(110)의 나노 코어들에게 열 단위로 커널 계수를 제공할 수 있을 것이다. 그러면, 나노 코어들 각각은 수신된 커널 계수를 사용하여 패턴 인식 연산을 수행하는 동시에, 아래 행에 위치하는 나노 코어에 수신된 커널 계수를 전달할 수 있을 것이다.The kernel memory 120 provides a plurality of kernel information to the core array 110 in synchronization with a command provided to the core array 110 . The kernel memory 120 may provide various parameters necessary for kernel information, coefficients, bias addition, activation, pooling, and the like for a convolution operation performed in the core array 110 . The kernel memory 120 may provide, for example, a kernel coefficient in units of columns to the nanocores of the core array 110 . Then, each of the nanocores may perform a pattern recognition operation using the received kernel coefficients and, at the same time, transmit the received kernel coefficients to the nanocores located in the lower row.

명령어 메모리(130)는 코어 어레이(110)에 포함되는 복수의 나노 코어(NC)들이 각각 수행할 명령어를 저장한다. 그리고 입력되는 피처들에 동기하여 명령어 메모리(130)는 저장된 명령어를 지연 체인(140)에 전달할 것이다. 그러면, 지연 체인(140)에서는 하나의 명령어가 특정 지연 단위로 지연된다. 지연 체인(140)에 의해서 생성된 특정 지연 시간을 갖는 명령어들은 서로 다른 나노 코어들에게 제공될 수 있다. 명령어 메모리(130)에서 제공되는 어느 하나의 명령어(INS)는 복수의 나노 코어들에 특정 지연 시간을 가지고 순차적으로 제공될 수 있다. 지연된 명령어가 제공되는 단위는 나노 코어의 행 단위일 수 있다.The instruction memory 130 stores instructions to be executed by the plurality of nano-cores NC included in the core array 110 , respectively. And in synchronization with the input features, the instruction memory 130 will transfer the stored instruction to the delay chain 140 . Then, in the delay chain 140 , one instruction is delayed by a specific delay unit. Instructions having a specific delay time generated by the delay chain 140 may be provided to different nanocores. Any one instruction INS provided from the instruction memory 130 may be sequentially provided to the plurality of nanocores with a specific delay time. The unit in which the delayed instruction is provided may be a row unit of the nano-core.

피처 메모리(150)는 영상 인식 프로세서(100)에서 처리할 입력 영상이나 데이터가 저장된다. 인식될 입력 영상은 피처 메모리(150)에 저장되고 코어 어레이(110)에 전달된다. 예를 들면, 피처 메모리(150)에는 이미지 센서(Image sensor)로부터 제공되는 이미지 데이터가 저장될 수 있다. 더불어, 피처 메모리(150)에는 하나의 계층에서 처리된 피처 맵(Feature map)이 저장될 수 있다.The feature memory 150 stores an input image or data to be processed by the image recognition processor 100 . The input image to be recognized is stored in the feature memory 150 and transmitted to the core array 110 . For example, image data provided from an image sensor may be stored in the feature memory 150 . In addition, a feature map processed in one layer may be stored in the feature memory 150 .

기능 안전 프로세서 코어(160)는 코어 어레이(110)에서 수행된 연산의 결과를 수신하여 인식 오류의 발생 여부를 검출할 수 있다. 예를 들면, 기능 안전 프로세서 코어(160)는 동일한 입력 피처, 동일한 명령어, 그리고 동일한 커널 계수(Coefficient)를 사용한 복수의 나노 코어들(NC)의 출력을 비교할 수 있다. 예를 들면, 나노 코어들(NC)이 서로 다른 그룹으로 구분되고, 각각의 그룹이 동일한 패턴 인식 연산을 수행하도록 제어될 수 있다. 그리고 각각의 그룹에서 출력되는 인식 결과가 기능 안전 프로세서 코어(160)에 의해서 비교될 수 있다. 동일한 연산을 수행한 그룹들 각각의 패턴 인식 결과값에 차이가 존재하는 것으로 검출되면, 기능 안전 프로세서 코어(160)는 인식 오류가 존재하는 것으로 판단할 것이다. 하지만, 동일한 연산을 수행한 나노 코어 그룹들 각각의 출력이 동일한 것으로 검출되면, 기능 안전 프로세서 코어(160)는 인식 오류가 존재하지 않는 것으로 판단할 것이다. 더불어, 기능 안전 프로세서 코어(160)는 인식 오류가 존재하더라도 정도가 크지 않은 경우에는 인식 오류가 존재하더라도 오류 허용(Fault tolerance) 기능을 적용할 수 있다. The functional safety processor core 160 may receive the result of the operation performed in the core array 110 and detect whether a recognition error has occurred. For example, the functional safety processor core 160 may compare outputs of a plurality of nanocores NC using the same input feature, the same instruction, and the same kernel coefficient. For example, the nanocores NC may be divided into different groups, and each group may be controlled to perform the same pattern recognition operation. And the recognition results output from each group may be compared by the functional safety processor core 160 . If it is detected that there is a difference in the pattern recognition result value of each of the groups that have performed the same operation, the functional safety processor core 160 will determine that a recognition error exists. However, if the outputs of each of the nanocore groups that have performed the same operation are detected to be the same, the functional safety processor core 160 will determine that there is no recognition error. In addition, the functional safety processor core 160 may apply a fault tolerance function even if a recognition error exists when the degree of recognition error is not large.

특히, 기능 안전 프로세서 코어(160)는 동일한 연산을 수행하는 복수의 프로세서들을 포함할 수 있다. 복수의 프로세서들은 각각 독립된 클록 신호 및 구동 전압을 제공받을 수 있다. 독립된 클록 신호와 구동 전압을 사용하는 기능 안전 프로세서 코어(160)는 전원 소스 또는 클록 소스와 같은 공통 원인에 의한 오류(Common cause fault)로부터 자유로울 수 있다. 이러한 구성을 통해서 기능 안전 프로세서 코어(160)는 높은 신뢰성의 오류 검출 및 오류 허용 기능을 제공할 수 있다. In particular, the functional safety processor core 160 may include a plurality of processors that perform the same operation. The plurality of processors may receive independent clock signals and driving voltages, respectively. The functional safety processor core 160 using independent clock signals and driving voltages may be free from common cause faults such as power sources or clock sources. Through this configuration, the functional safety processor core 160 may provide a highly reliable error detection and error tolerance function.

버스(170)는 기능 안전 프로세서 코어(160)와 커널 메모리(120), 명령어 메모리(130), 그리고 피처 메모리(150) 사이에서 데이터 전달 경로를 제공한다.Bus 170 provides a data transfer path between functional safety processor core 160 and kernel memory 120 , instruction memory 130 , and feature memory 150 .

이상에서는 본 발명의 영상 인식 프로세서의 구조가 간략히 설명되었다. 본 발명의 기능 안전 프로세서 코어(160)에 의해서 복수의 나노 코어(NC)들이 수행한 연산의 결과가 비교될 수 있고, 인식 오류의 식별이 가능하다. 그리고 식별된 인식 오류의 정도에 따라 특정 마진을 적용하여 오류 허용 기능을 적용하면, 본 발명의 영상 인식 프로세서의 신뢰도를 높일 수 있다. In the above, the structure of the image recognition processor of the present invention has been briefly described. By the functional safety processor core 160 of the present invention, results of calculations performed by a plurality of nano-cores NC can be compared, and recognition errors can be identified. In addition, if the error tolerance function is applied by applying a specific margin according to the degree of the identified recognition error, the reliability of the image recognition processor of the present invention can be increased.

도 2는 본 발명의 실시 예에 따른 나노 코어들이 수행하는 컨볼루션 연산의 예를 간략히 보여주는 도면이다. 도 2를 참조하면, 입력 피처(152)는 컨볼루션 연산에 의해서 피처 맵(154)으로 생성된다. 그리고 피처 맵(154)은 풀링 연산에 의해서 피처 맵들(156)로 출력될 수 있다. 2 is a diagram schematically illustrating an example of a convolution operation performed by nanocores according to an embodiment of the present invention. Referring to FIG. 2 , an input feature 152 is generated as a feature map 154 by a convolution operation. In addition, the feature map 154 may be output as the feature maps 156 by a pooling operation.

입력 피처(152)는 커널(121)과의 컨볼루션 연산들에 의해서 어레이 형태의 피처 맵(154)으로 변환된다. 입력 피처(152)와 커널(121)과 중첩되는 위치의 컨볼루션을 통해서 생성된 요소들의 값들을 가산하면 피처 맵(154)의 한 포인트에 대응하는 피처 값이 생성된다. 커널(121)을 모든 입력 피처(152)의 위치에 대해서 시프트하면서 컨볼루션 연산을 수행하면, 하나의 피처 어레이가 생성될 수 있다. 이러한 컨볼루션 연산을 복수의 커널들(122, M 개)을 사용하여 수행하면, 복수(M 개)의 피처 맵(154)이 생성될 수 있을 것이다. The input features 152 are converted into an array-type feature map 154 by convolution operations with the kernel 121 . When values of elements generated through convolution of the input feature 152 and the location overlapping the kernel 121 are added, a feature value corresponding to a point in the feature map 154 is generated. If a convolution operation is performed while shifting the kernel 121 with respect to the positions of all input features 152 , one feature array may be generated. If such a convolution operation is performed using a plurality of kernels 122 (M pieces), a plurality (M pieces) of feature maps 154 may be generated.

여기서, 컨볼루션 연산을 통해서 처리되는 입력 피처(152)는 실질적으로 다양한 성분들로 분화될 수 있다. 예를 들면, 하나의 입력 피처(152)는 RGB 성분들 각각에 대한 색과 명암을 표현한 이미지 데이터들로 구분될 수 있다. 더불어, 사이즈를 가변한 데이터로도 입력 피처(152)가 분화될 수 있다. 이러한 다양한 이미지 데이터들을 모든 커널들(122, M 개)을 사용하여 컨볼루션 연산을 수행하는 처리 단위를 이하에서는 컨볼루션 루프(Convolution loop)라 칭하기로 한다. 이러한 컨볼루션 루프들은 입력 피처(152)의 복수의 깊이(Depth)만큼 실행될 것이다.Here, the input feature 152 processed through the convolution operation may be substantially differentiated into various components. For example, one input feature 152 may be divided into image data expressing color and contrast for each of the RGB components. In addition, the input feature 152 may be differentiated even with data having a variable size. A processing unit for performing a convolution operation using all the kernels 122 and M on these various image data is hereinafter referred to as a convolution loop. These convolution loops will be executed for a plurality of depths of the input feature 152 .

더불어, 피처 맵(154)에 대해서 다른 커널(124)을 사용하는 컨볼루션 연산이 후속될 수 있다. 어느 하나의 입력 피처(152)에 대한 이러한 컨볼루션 연산을 통해서 피처 맵(154)이 생성될 수 있을 것이다. In addition, a convolution operation using a different kernel 124 for the feature map 154 may be followed. A feature map 154 may be generated through such a convolution operation on any one input feature 152 .

본 발명의 코어 어레이(110)에 포함되는 나노 코어들(NC)은 이러한 연산들을 병렬 처리 방식으로 처리할 수 있다. 또는, 나노 코어들(NC)은 어느 하나의 입력 이미지를 서로 다른 커널들을 적용하여 병렬로 처리하는 방식으로 구동될 수도 있을 것이다. 또는, 나노 코어(NC)들이 그룹 단위로도 구분될 수 있고, 각각의 그룹이 동일 입력 피처(프레임 데이터)나 서로 다른 입력 피처에 대한 패턴 인식 연산을 처리할 수도 있을 것이다. 각각의 경우에서, 기능 안전 프로세서 코어(160)는 연산 결과를 비교하고 인식 오류의 존재를 검출하거나 미리 정해진 마진(Margin)의 오류 허용 기능을 수행할 수도 있다.The nanocores NC included in the core array 110 of the present invention may process these operations in a parallel processing manner. Alternatively, the nanocores NC may be driven in such a way that one input image is processed in parallel by applying different kernels. Alternatively, the nanocores NCs may be divided into groups, and each group may process a pattern recognition operation for the same input feature (frame data) or different input features. In each case, the functional safety processor core 160 may compare the operation results and detect the presence of a recognition error or perform an error tolerance function of a predetermined margin.

도 3은 본 발명의 영상 인식 프로세서의 구성을 구체적으로 보여주는 블록도이다. 도 3을 참조하면, 코어 어레이(110), 커널 메모리(120), 지연 체인(140), 피처 메모리(150)는 각각 복수의 서브-엘리먼트들을 포함할 수 있다.3 is a block diagram specifically showing the configuration of an image recognition processor of the present invention. Referring to FIG. 3 , the core array 110 , the kernel memory 120 , the delay chain 140 , and the feature memory 150 may each include a plurality of sub-elements.

코어 어레이(110)는 예시적으로 행과 열로 배열되는 복수의 나노 코어들(NC_xy, 0 ≤ x, y ≤ 3)을 포함할 수 있다. 나노 코어들(NC_xy)은 각각 입력되는 명령어와 데이터, 그리고 커널 계수를 사용하여 패턴 인식을 위한 컨볼루션 연산을 수행할 수 있다. 나노 코어들(NC_xy)은 제공되는 입력 피처들에 대한 처리를 병렬 처리 방식이나 순차 처리 방식으로 수행할 수 있다. The core array 110 may include, for example, a plurality of nanocores NC_xy, 0 ≤ x, y ≤ 3 arranged in rows and columns. Each of the nanocores NC_xy may perform a convolution operation for pattern recognition using input commands, data, and kernel coefficients. The nano-cores NC_xy may process provided input features in a parallel processing method or a sequential processing method.

어느 하나의 나노 코어(NC_xy)는 명령어 메모리(130)로부터 제공되거나 왼쪽 방향으로 인접한 나노 코어(NC_x(y-1))로부터 명령어를 전달받을 수 있다. 그리고 나노 코어(NC_xy)는 피처 메모리들(152, 154, 156, 158) 중 어느 하나 또는 왼쪽 방향으로 인접한 나노 코어(NC_x(y-1))로부터 입력 피처를 제공받을 수 있다. 또한, 나노 코어(NC_xy)는 커널 메모리들(122, 124, 126, 128) 중 어느 하나 또는 위쪽 방향으로 인접한 나노 코어(NC_(x-1)y)로부터 연산을 위한 커널 계수(Coefficient)를 제공받을 수 있다. Any one of the nano-cores NC_xy may be provided from the instruction memory 130 or may receive a command from the adjacent nano-core NC_x(y-1) in the left direction. In addition, the nano-core NC_xy may receive an input feature from any one of the feature memories 152 , 154 , 156 , 158 or from the nano-core NC_x(y-1) adjacent to the left in the left direction. In addition, the nano-core NC_xy provides a kernel coefficient for operation from any one of the kernel memories 122 , 124 , 126 , and 128 or from the nano-core NC_(x-1)y adjacent in the upward direction. can receive

또한, 나노 코어(NC_xy)는 수신된 입력 피처와 커널 계수를 사용하여 제공된 명령어에 대응하는 연산을 수행할 수 있다. 명령어에 따른 연산을 수행하는 동시에, 나노 코어(NC_xy)는 입력 피처를 오른쪽의 나노 코어(NC_x(y+1))로 전달하고, 위쪽에서 전달받은 커널 계수(Coefficient)를 아래 쪽에 인접한 나노 코어(NC_(x+1)y)로 전달한다. Also, the nano-core NC_xy may perform an operation corresponding to the provided instruction using the received input feature and kernel coefficients. Simultaneously performing the operation according to the instruction, the nano-core (NC_xy) transfers the input feature to the right nano-core (NC_x(y+1)), and transfers the kernel coefficient received from the upper side to the lower adjacent nano-core ( NC_(x+1)y).

더불어, 나노 코어(NC_xy)는 연산의 수행 결과를 왼쪽 방향으로 인접한 나노 코어(NC_x(y-1))나 피처 메모리들(152, 154, 156, 158) 중 어느 하나로 전달한다. 예를 들면, 나노 코어(NC_01)는 입력 피처와 커널 계수를 사용한 연산의 결과를 동일한 행의 나노 코어(NC_00)로 전달한다. 더불어, 나노 코어(NC_01)는 나노 코어(NC_02)의 연산 결과를 제공받아 나노 코어(NC_00)로 전달할 수 있다. 이러한 방식으로 나노 코어(NC_00)는 자신의 연산 결과 및 동일한 행에 포함되는 나노 코어들(NC_01, NC_02, NC_03)의 연산 결과를 각각 피처 메모리(152)로 전달할 것이다.In addition, the nano-core NC_xy transmits the result of the operation to one of the nano-core NC_x(y-1) adjacent to the left or the feature memories 152 , 154 , 156 , and 158 . For example, the nanocore NC_01 transfers the result of an operation using the input feature and the kernel coefficient to the nanocore NC_00 in the same row. In addition, the nano-core NC_01 may receive the operation result of the nano-core NC_02 and transmit it to the nano-core NC_00. In this way, the nano-core NC_00 transmits its own operation result and the operation result of the nano-cores NC_01 , NC_02 , and NC_03 included in the same row to the feature memory 152 , respectively.

상술한 방식에 따라 하나의 행에 포함되는 복수의 나노 코어(NC_xy)들은 상이한 커널에 대응하는 계수를 사용하여 하나의 입력 피처에 대한 컨볼루션 연산을 수행할 수 있다. 즉, 복수의 나노 코어(NC_xy)는 하나의 입력 피처를 서로 다른 복수의 커널들을 사용하여 복수의 컨볼루션 연산을 처리할 수 있다. 그리고 나노 코어(NC_xy)들 각각의 연산 결과는 피처 메모리들(152, 154, 156, 158) 중 어느 하나 또는 기능 안전 프로세서 코어(160)에 의해서 비교되거나 평가될 수 있다.According to the above-described method, the plurality of nanocores NC_xy included in one row may perform a convolution operation on one input feature using coefficients corresponding to different kernels. That is, the plurality of nanocores NC_xy may process a plurality of convolution operations using a plurality of different kernels for one input feature. In addition, the operation result of each of the nano-cores NC_xy may be compared or evaluated by any one of the feature memories 152 , 154 , 156 , 158 or the functional safety processor core 160 .

상술한 방식으로 나노 코어들(NC_1y, 0≤y≤3)은 지연 회로(144)로부터의 명령어에 응답하여 위쪽 나노 코어들(NC_0y, 0≤y≤3)을 경유하여 제공되는 커널 계수를 사용하여 피처 메모리(154)로부터 제공되는 입력 피처를 처리한다. 즉, 나노 코어들(NC_1y, 0≤y≤3)은 피처 메모리(154)로부터 제공되는 입력 피처에 대한 연산을 수행하여 피처 메모리(154)로 전달할 것이다.In the above-described manner, the nanocores NC_1y, 0≤y≤3 use the kernel coefficients provided via the upper nanocores NC_0y, 0≤y≤3 in response to a command from the delay circuit 144 . to process the input features provided from the feature memory 154 . That is, the nano-cores NC_1y, 0≤y≤3 perform an operation on the input feature provided from the feature memory 154 and transfer the operation to the feature memory 154 .

코어 어레이(110)에서 하나의 행을 구성하는 나노 코어들(NC_2y, 0≤y≤3)은 연산 결과를 피처 메모리(156)로 전달한다. 마찬가지로, 나노 코어들(NC_3y, 0≤y≤3)도 피처 메모리(158)로부터의 입력 피처와 커널 계수를 사용하여 연산을 수행하여 피처 메모리(158)로 전달할 것이다. The nano-cores NC_2y and 0≤y≤3 constituting one row in the core array 110 transfer the operation result to the feature memory 156 . Similarly, the nano-cores NC_3y, 0≤y≤3 will also perform an operation using the input features and kernel coefficients from the feature memory 158 and transfer them to the feature memory 158 .

피처 메모리들(152, 154, 156, 158) 각각은 나노 코어들(NC_xy)로부터 전달되는 패턴 인식 연산 결과를 수신하여 버스(170)를 경유하여 기능 안전 프로세서 코어(160)에 전달할 수 있다. 더불어, 피처 메모리들(152, 154, 156, 158)은 기능 안전 프로세서 코어(160)가 제공하는 입력 피처를 나노 코어들(NC_xy)에 제공할 수도 있을 것이다. Each of the feature memories 152 , 154 , 156 , and 158 may receive the pattern recognition operation result transmitted from the nano-cores NC_xy and transmit it to the functional safety processor core 160 via the bus 170 . In addition, the feature memories 152 , 154 , 156 , and 158 may provide an input feature provided by the functional safety processor core 160 to the nanocores NC_xy .

기능 안전 프로세서 코어(160)는 하나의 행에 포함되는 복수의 나노 코어(NC_xy)들 각각의 연산 결과를 비교하여 인식 오류의 존재 여부를 판단할 수 있다. 또는, 기능 안전 프로세서 코어(160)는 각 행 단위로 복수의 나노 코어(NC_xy)들의 연산 결과를 비교하여 인식 오류의 존재 여부를 판단할 수 있다. 더불어, 기능 안전 프로세서 코어(160)는 패턴 인식 연산의 결과에 오류가 존재하더라도 미리 정의된 기준값 이하의 오류인 경우에는 오류 허용(Fault tolerance) 기능을 적용할 수 있다. The functional safety processor core 160 may determine whether there is a recognition error by comparing operation results of each of the plurality of nanocores NC_xy included in one row. Alternatively, the functional safety processor core 160 may determine whether a recognition error exists by comparing the operation results of the plurality of nanocores NC_xy in each row. In addition, the functional safety processor core 160 may apply a fault tolerance function when the error is less than or equal to a predefined reference value even if there is an error in the result of the pattern recognition operation.

특히, 본 발명의 기능 안전 프로세서 코어(160)는 동일한 연산을 수행할 수 있는 복수의 프로세서를 포함할 수 있다. 복수의 프로세서들은 각각 독립된 클록 신호 및 구동 전압을 제공받을 수 있다. 독립된 클록 신호와 구동 전압을 사용하는 기능 안전 프로세서 코어(160)는 전원 소스 또는 클록 소스와 같은 공통 원인에 의한 오류(Common cause fault)로부터 자유로울 수 있다.In particular, the functional safety processor core 160 of the present invention may include a plurality of processors capable of performing the same operation. The plurality of processors may receive independent clock signals and driving voltages, respectively. The functional safety processor core 160 using independent clock signals and driving voltages may be free from common cause faults such as power sources or clock sources.

도 4는 본 발명의 실시 예에 따른 하나의 행 단위의 나노 코어들의 동작을 간략히 보여주는 도면이다. 도 4를 참조하면, 피처 메모리(152)로부터 입력 피처를 제공받는 나노 코어들(NC_0y, 0≤y≤3)의 세부 동작이 간략히 설명될 것이다. 4 is a diagram schematically illustrating operations of nanocores in a row unit according to an embodiment of the present invention. Referring to FIG. 4 , detailed operations of the nanocores NC_0y and 0≤y≤3 that receive input features from the feature memory 152 will be briefly described.

나노 코어(NC_00)가 지연 회로(142)에서 출력되는 명령어(INS)를 수신할 것이다. 그러면, 나노 코어(NC_00)는 명령어(INS)의 수신과 함께 피처 메모리(152)로부터 입력 피처(F_IN_0)를 수신하고, 커널 메모리(122)로부터 커널 계수(Coff_0)를 수신한다. 나노 코어(NC_00)는 명령어(INS)에 응답하여 입력 피처(F_IN_0)와 커널 계수(Coff_0)를 사용하는 연산을 수행한다. 예를 들면, 나노 코어(NC_00)는 입력 피처(F_IN_0)를 커널 계수(Coff_0)에 대응하는 커널을 사용하여 컨볼루션 연산을 수행할 수 있다. 동시에, 나노 코어(NC_00)는 커널 메모리(122)로부터 전달되는 커널 계수(Coff_0)를 동일한 열에 위치하는 나노 코어(NC_10)로 전달할 것이다. 더불어, 나노 코어(NC_00)는 피처 메모리(152)로부터 전달되는 입력 피처(F_IN_0)를 행 방향으로 인접한 나노 코어(NC_01)로 전달할 것이다. The nano-core NC_00 may receive the command INS output from the delay circuit 142 . Then, the nano-core NC_00 receives the input feature F_IN_0 from the feature memory 152 along with the reception of the instruction INS, and receives the kernel coefficient Coff_0 from the kernel memory 122 . The nano-core NC_00 performs an operation using the input feature F_IN_0 and the kernel coefficient Coff_0 in response to the command INS. For example, the nanocore NC_00 may perform a convolution operation using a kernel corresponding to the kernel coefficient Coff_0 for the input feature F_IN_0. At the same time, the nano-core NC_00 will transfer the kernel coefficient Coff_0 transmitted from the kernel memory 122 to the nano-core NC_10 located in the same column. In addition, the nano-core NC_00 may transfer the input feature F_IN_0 transmitted from the feature memory 152 to the adjacent nano-core NC_01 in the row direction.

나노 코어(NC_01)는 나노 코어(NC_00)를 경유하여 전달되는 입력 피처(F_IN_0)와 명령어(INS)를 수신한다. 그리고 나노 코어(NC_01)는 커널 메모리(124)로부터 커널 계수(Coff_1)를 수신한다. 나노 코어(NC_01)는 명령어(INS)에 응답하여 입력 피처(F_IN_0)와 커널 계수(Coff_1)를 사용하는 컨볼루션 연산을 수행할 수 있다. 또한, 나노 코어(NC_01)는 커널 메모리(124)로부터 전달되는 커널 계수(Coff_1)를 동일한 열에 위치하는 나노 코어(NC_11)로 전달할 것이다. 더불어, 나노 코어(NC_01)는 나노 코어(NC_00)를 경유하여 전달되는 입력 피처(F_IN_0)와 명령어(INS)를 각각 행 방향으로 인접한 나노 코어(NC_02)로 전달한다. The nano-core NC_01 receives the input feature F_IN_0 and the instruction INS transmitted via the nano-core NC_00. In addition, the nano-core NC_01 receives the kernel coefficient Coff_1 from the kernel memory 124 . The nanocore NC_01 may perform a convolution operation using the input feature F_IN_0 and the kernel coefficient Coff_1 in response to the instruction INS. Also, the nano-core NC_01 may transfer the kernel coefficient Coff_1 transferred from the kernel memory 124 to the nano-core NC_11 located in the same column. In addition, the nano-core NC_01 transfers the input feature F_IN_0 and the instruction INS transmitted via the nano-core NC_00 to the adjacent nano-cores NC_02 in the row direction, respectively.

나노 코어(NC_02)는 나노 코어(NC_01)를 경유하여 전달되는 입력 피처(F_IN_0)와 명령어(INS)를 수신한다. 나노 코어(NC_02)는 커널 메모리(126)로부터 계수(Coff_2)를 수신한다. 나노 코어(NC_02)는 명령어(INS)에 응답하여 입력 피처(F_IN_0)와 커널 계수(Coff_2)를 사용하는 컨볼루션 연산을 수행할 수 있다. 또한, 나노 코어(NC_02)는 커널 메모리(126)로부터 전달되는 커널 계수(Coff_2)를 동일한 열에 위치하는 나노 코어(NC_12)로 전달할 것이다. 더불어, 나노 코어(NC_02)는 나노 코어(NC_01)를 경유하여 전달되는 입력 피처(F_IN_0)와 명령어(INS)를 각각 행방향으로 인접한 나노 코어(NC_03)로 전달한다. The nano-core NC_02 receives the input feature F_IN_0 and the instruction INS transmitted via the nano-core NC_01. The nano-core NC_02 receives the coefficient Coff_2 from the kernel memory 126 . The nano-core NC_02 may perform a convolution operation using the input feature F_IN_0 and the kernel coefficient Coff_2 in response to the instruction INS. Also, the nano-core NC_02 may transfer the kernel coefficient Coff_2 transmitted from the kernel memory 126 to the nano-core NC_12 located in the same column. In addition, the nano-core NC_02 transfers the input feature F_IN_0 and the instruction INS transmitted via the nano-core NC_01 to the adjacent nano-cores NC_03 in the row direction, respectively.

나노 코어(NC_03)는 나노 코어(NC_02)를 경유하여 전달되는 입력 피처(F_IN_0)와 명령어(INS)를 수신한다. 나노 코어(NC_03)는 커널 메모리(128)로부터 커널 계수(Coff_3)를 수신한다. 나노 코어(NC_03)는 명령어(INS)에 응답하여 입력 피처(F_IN_0)와 커널 계수(Coff_3)를 사용하는 컨볼루션 연산을 수행할 수 있다. 또한, 나노 코어(NC_03)는 커널 메모리(128)로부터 전달되는 커널 계수(Coff_3)를 동일한 열에 위치하는 나노 코어(NC_13)로 전달할 것이다. 나노 코어(NC_03)는 행의 우측 마지막 코어이기 때문에, 명령어(INS)나 입력 피처(F_IN_0)의 전달 동작은 수행하지 않을 수 있다. The nano-core NC_03 receives the input feature F_IN_0 and the instruction INS transmitted via the nano-core NC_02. The nano-core NC_03 receives the kernel coefficient Coff_3 from the kernel memory 128 . The nano-core NC_03 may perform a convolution operation using the input feature F_IN_0 and the kernel coefficient Coff_3 in response to the instruction INS. Also, the nano-core NC_03 will transfer the kernel coefficient Coff_3 transferred from the kernel memory 128 to the nano-core NC_13 located in the same column. Since the nano-core NC_03 is the last core on the right side of the row, the transfer operation of the instruction INS or the input feature F_IN_0 may not be performed.

나노 코어(NC_03)는 연산 결과(F_OUT_03)를 좌측의 나노 코어(NC_02)로 전달할 것이다. 나노 코어(NC_02)는 자신의 연산 결과(F_OUT_02)와 우측 나노 코어(NC_03)로부터 제공되는 연산 결과(F_OUT_03)를 좌측의 나노 코어(NC_01)로 전달한다. 나노 코어(NC_01)는 자신의 연산 결과(F_OUT_01)와 우측 나노 코어들(NC_02, NC_03)로부터 제공되는 연산 결과들(F_OUT_02, F_OUT_03)을 좌측의 나노 코어(NC_00)로 전달한다. 결국, 나노 코어(NC_00)는 자신의 연산 결과(F_OUT_00)와 우측 나노 코어들(NC_01, NC_02, NC_03)로부터 제공되는 연산 결과들(F_OUT_01, F_OUT_02, F_OUT_03)를 피처 메모리(152)로 전달할 것이다. 피처 메모리(152)에 전달된 연산 결과들(F_OUT_00, F_OUT_01, F_OUT_02, F_OUT_03)은 기능 안전 프로세서 코어(160)로 전달할 것이다.The nano-core NC_03 will transmit the operation result F_OUT_03 to the left nano-core NC_02. The nano-core NC_02 transfers its own operation result F_OUT_02 and the operation result F_OUT_03 provided from the right nano-core NC_03 to the left nano-core NC_01. The nano-core NC_01 transfers its operation result F_OUT_01 and the operation results F_OUT_02 and F_OUT_03 provided from the right nano-cores NC_02 and NC_03 to the left nano-core NC_00. As a result, the nano-core NC_00 transmits its operation result F_OUT_00 and the operation results F_OUT_01 , F_OUT_02 , and F_OUT_03 provided from the right nano-cores NC_01 , NC_02 , and NC_03 to the feature memory 152 . The operation results F_OUT_00 , F_OUT_01 , F_OUT_02 , and F_OUT_03 transferred to the feature memory 152 will be transferred to the functional safety processor core 160 .

이상에서는 피처 메모리(152)로부터 입력 피처(F_IN_0)를 제공받는 복수의 나노 코어들(NC_00, NC_01, NC_02, NC_03)의 명령어, 입력 피처, 계수, 그리고 연산 결과의 입출력 관계가 간략히 설명되었다. 코어 어레이(110)의 첫 번째 행을 구성하는 나노 코어들(NC_00, NC_01, NC_02, NC_03)과 마찬가지로 나노 코어들(NC_10, NC_11, NC_12, NC_13)도 입력 피처만 다른 것을 제외하면 동일한 방식으로 구동될 수 있다. 하나의 행을 구성하는 나노 코어들(NC_20, NC_21, NC_22, NC_23)과 나노 코어들(NC_30, NC_31, NC_32, NC_33)도 입력 피처를 제공받는 피처 메모리만 다를뿐 나노 코어들(NC_00, NC_01, NC_02, NC_03)과 동일한 방식으로 동작하는 것으로 간주할 수 있다. 물론, 지연 회로들(142, 144, 146, 148)에 의한 명령어 전달 시점이나 각 코어들에서 발생하는 명령어, 입력 피처, 그리고 계수들의 전달 시점은 다를 수 있음은 잘 이해될 것이다.In the above, the input/output relationship between commands, input features, coefficients, and calculation results of the plurality of nanocores NC_00, NC_01, NC_02, and NC_03 receiving the input feature F_IN_0 from the feature memory 152 has been briefly described. Like the nanocores NC_00, NC_01, NC_02, and NC_03 constituting the first row of the core array 110 , the nanocores NC_10 , NC_11 , NC_12 , and NC_13 are driven in the same manner except for the input features different. can be The nanocores (NC_20, NC_21, NC_22, NC_23) and the nanocores (NC_30, NC_31, NC_32, NC_33) constituting one row differ only in the feature memory provided with the input feature, as well as the nanocores NC_00, NC_01, NC_02, NC_03) can be regarded as operating in the same way. Of course, it will be well understood that the instruction transfer time by the delay circuits 142 , 144 , 146 , 148 or the instruction, input feature, and coefficient transfer timing generated in each core may be different.

도 5는 도 3의 기능 안전 프로세서 코어의 세부적인 구성을 예시적으로 보여주는 블록도이다. 도 5를 참조하면, 기능 안전 프로세서 코어(160)는 멀티-코어 구조로 제공될 수 있다. 즉, 기능 안전 프로세서 코어(160)는 제 1 프로세서(162), 제 2 프로세서(164), 외부 결함 매니저(166), 그리고 복구 컨트롤러(168)를 포함할 수 있다. 더불어, 기능 안전 프로세서 코어(160)는 제 1 위상 고정 루프(161), 제 2 위상 고정 루프(165), 제 1 LDO(163, Low Dropout) 및 제 2 LDO(167)를 포함할 수 있다.5 is a block diagram exemplarily showing a detailed configuration of the functional safety processor core of FIG. 3 . Referring to FIG. 5 , the functional safety processor core 160 may be provided in a multi-core structure. That is, the functional safety processor core 160 may include a first processor 162 , a second processor 164 , an external fault manager 166 , and a recovery controller 168 . In addition, the functional safety processor core 160 may include a first phase locked loop 161 , a second phase locked loop 165 , a first LDO 163 (Low Dropout), and a second LDO 167 .

제 1 위상 고정 루프(161)와 제 2 위상 고정 루프(165)는 상호 분리된 클록 생성 회로(Clock Generation Circuit)로 제공된다. 제 1 위상 고정 루프(161)는 제 1 프로세서(162)에 제 1 구동 클록(CLK1)을 제공할 수 있다. 제 2 위상 고정 루프(165)는 제 2 프로세서(164)에 제 2 구동 클록(CLK2)을 제공할 수 있다. 제 1 및 제 2 구동 클록들(CLK1, CLK2) 각각은 상호 간섭이나 영향이 차단된 독립된 소스로부터 제공되는 클록 신호들이다. 따라서, 제 1 구동 클록(CLK1)이 노이즈나 간섭에 노출되더라도 제 2 구동 클록(CLK2)은 정상적인 주파수 또는 위상을 유지할 수 있을 것이다. 제 1 위상 고정 루프(161)와 제 2 위상 고정 루프(165)는 위상 고정 루프(PLL) 방식인 아닌 클록을 생성하는 다양한 회로들로 구현될 수 있음은 잘 이해될 것이다.The first phase-locked loop 161 and the second phase-locked loop 165 are provided as separate clock generation circuits. The first phase locked loop 161 may provide the first driving clock CLK1 to the first processor 162 . The second phase locked loop 165 may provide the second driving clock CLK2 to the second processor 164 . Each of the first and second driving clocks CLK1 and CLK2 are clock signals provided from independent sources from which mutual interference or influence is blocked. Accordingly, even if the first driving clock CLK1 is exposed to noise or interference, the second driving clock CLK2 may maintain a normal frequency or phase. It will be well understood that the first phase-locked loop 161 and the second phase-locked loop 165 may be implemented with various circuits that generate a clock other than the phase-locked loop (PLL) method.

제 1 LDO(163) 및 제 2 LDO(167)는 상호 독립적인 전원 공급 회로로 제공될 수 있다. 제 1 LDO(163)는 제 1 구동 전압(VDD1)을 생성하여 제 1 프로세서(162)에 제공한다. 제 2 LDO(167)는 제 2 구동 전압(VDD2)을 생성하여 제 2 프로세서(164)에 제공한다. 따라서, 제 1 및 제 2 구동 전압들(VDD1, VDD2)은 상호 간섭이나 영향이 차단된 독립된 전원 전압이다. 예를 들면, 제 1 LDO(163) 및 제 2 LDO(167) 각각은 서로 독립적으로 동작하는 전압 레귤레이터(Voltage regulator)들로 제공될 수 있다. 또는, 제 1 LDO(163) 및 제 2 LDO(167) 각각은 서로 독립적으로 동작하는 전력관리 집적회로(PMIC)로 제공될 수도 있을 것이다. 따라서, 제 1 구동 전압(VDD1)이 노이즈나 간섭에 의해서 변동하더라도 제 2 구동 전압(VDD2)은 정상적인 레벨을 유지할 수 있다. 여기서, 제 1 및 제 2 구동 전압들(VDD1, VDD2) 각각은 동일한 레벨이거나 다른 레벨의 전압으로 제공될 수 있음은 잘 이해될 것이다. The first LDO 163 and the second LDO 167 may be provided as mutually independent power supply circuits. The first LDO 163 generates a first driving voltage VDD1 and provides it to the first processor 162 . The second LDO 167 generates a second driving voltage VDD2 and provides it to the second processor 164 . Accordingly, the first and second driving voltages VDD1 and VDD2 are independent power supply voltages from which mutual interference or influence is blocked. For example, each of the first LDO 163 and the second LDO 167 may be provided as voltage regulators operating independently of each other. Alternatively, each of the first LDO 163 and the second LDO 167 may be provided as a power management integrated circuit (PMIC) that operates independently of each other. Accordingly, even if the first driving voltage VDD1 fluctuates due to noise or interference, the second driving voltage VDD2 may maintain a normal level. Here, it will be well understood that each of the first and second driving voltages VDD1 and VDD2 may be provided at the same level or different levels.

서로 독립적인 클록 신호와 구동 전압을 사용하는 제 1 프로세서(162) 및 제 2 프로세서(164)에 따르면, 구동 전압이나 클록 신호와 같은 공통 원인에 의한 오류(Common cause fault)로부터 자유로울 수 있다. According to the first processor 162 and the second processor 164 using the clock signal and the driving voltage independent of each other, it is possible to be free from common cause faults such as the driving voltage or the clock signal.

제 1 프로세서(162) 및 제 2 프로세서(164)는 각각 동일한 테스크를 처리할 수 있다. 제 1 프로세서(162) 및 제 2 프로세서(164)는 각각 피처 메모리(150)를 통해서 전달되는 코어 어레이(110, 도 1 참조)에서 수행된 연산의 결과를 비교한다. 피처 메모리(150)를 통해서 전달되는 연산 결과는 제 1 프로세서(162)와 제 2 프로세서(164)에 동일하게 전달된다. 그러면, 제 1 프로세서(162)와 제 2 프로세서(164)는 각각 독립적으로 전달된 연산 결과들을 비교하여 코어 어레이(110)에서의 오류가 존재하는지 판단할 수 있다. The first processor 162 and the second processor 164 may each process the same task. The first processor 162 and the second processor 164 compare results of operations performed on the core array 110 (refer to FIG. 1 ) transmitted through the feature memory 150 , respectively. The operation result transmitted through the feature memory 150 is equally transmitted to the first processor 162 and the second processor 164 . Then, the first processor 162 and the second processor 164 may determine whether there is an error in the core array 110 by comparing independently transmitted operation results.

더불어, 외부 결함 매니저(166)는 제 1 프로세서(162) 및 제 2 프로세서(164)의 오류 검출 결과를 서로 비교하여 결함이나 오류가 존재하는지 판단할 수 있다. 제 1 프로세서(162) 및 제 2 프로세서(164)는 동일한 테스크를 수행하면서 그 결과를 외부 결함 매니저(166)에 전달할 것이다. 그러면, 외부 결함 매니저(166)는 특정 체크 포인트마다 제 1 프로세서(162) 및 제 2 프로세서(164)의 처리 결과를 비교하여 일시적 오류(Transient fault)나 영구적 오류(Permanent fault)를 검출할 수 있다.In addition, the external defect manager 166 may determine whether a defect or an error exists by comparing the error detection results of the first processor 162 and the second processor 164 with each other. The first processor 162 and the second processor 164 may transmit the result to the external defect manager 166 while performing the same task. Then, the external fault manager 166 may detect a transient fault or a permanent fault by comparing the processing results of the first processor 162 and the second processor 164 for each specific checkpoint. .

복구 컨트롤러(168)는 내부 결함 매니저들(162_7, 162_9, 164_7, 164_9) 또는 외부 결함 매니저(166)의 검출 결과를 참조하여 검출된 오류를 복구하기 위한 제반 제어 동작을 수행한다. 복구 컨트롤러(168)는 예를 들면, 내부 결함 매니저들(162_7, 162_9, 164_7, 164_9) 중 적어도 하나로부터의 오류 트랩 정보를 바탕으로 검출된 오류를 정정하거나 복구할 수 있다. 복구 컨트롤러(168)는 외부 결함 매니저(166)로부터 제공되는 오류 트랩 정보를 바탕으로 오류나 결함의 복구 동작을 수행할 수 있다.The repair controller 168 performs various control operations for repairing the detected error with reference to the detection result of the internal defect managers 162_7 , 162_9 , 164_7 , 164_9 or the external defect manager 166 . The repair controller 168 may correct or repair an error detected based on error trap information from at least one of the internal defect managers 162_7, 162_9, 164_7, and 164_9, for example. The repair controller 168 may perform an error or defect repair operation based on error trap information provided from the external defect manager 166 .

제 1 프로세서(162)는 제 1 프로세서 코어(162_1), 제 1 명령어 캐시(162_3), 제 1 데이터 캐시(162_5), 제 1 내부 결함 매니저(162_7), 그리고 제 2 내부 결함 매니저(162_9)를 포함할 수 있다. 제 1 프로세서 코어(162_1)는 제 1 프로세서(162) 내부에서 제 1 명령어 캐시(162_3) 및 제 1 데이터 캐시(162_5)를 통해서 제공되는 명령어와 데이터를 기반으로 다양한 연산들을 수행한다. 특히, 제 1 내부 결함 매니저(162_7)는 제 1 명령어 캐시(162_3) 내에서 발생하는 오류나 결함을 검출 및 복구할 수 있다. 제 2 내부 결함 매니저(162_9)는 제 1 데이터 캐시(162_5) 내에서 발생하는 오류나 결함을 검출하거나 복구할 수 있다. The first processor 162 includes a first processor core 162_1 , a first instruction cache 162_3 , a first data cache 162_5 , a first internal fault manager 162_7 , and a second internal fault manager 162_9 . may include The first processor core 162_1 performs various operations based on instructions and data provided through the first instruction cache 162_3 and the first data cache 162_5 inside the first processor 162 . In particular, the first internal defect manager 162_7 may detect and repair errors or defects occurring in the first instruction cache 162_3 . The second internal defect manager 162_9 may detect or repair an error or defect occurring in the first data cache 162_5 .

제 2 프로세서(164)는 제 2 프로세서 코어(164_1), 제 4 명령어 캐시(164_3), 제 2 데이터 캐시(164_5), 제 3 내부 결함 매니저(164_7), 그리고 제 4 내부 결함 매니저(164_9)를 포함할 수 있다. 제 2 프로세서 코어(164_1)는 제 2 프로세서(164) 내부에서 제 2 명령어 캐시(164_3) 및 제 2 데이터 캐시(164_5)를 통해서 제공되는 명령어와 데이터를 기반으로 다양한 연산들을 수행한다. 특히, 제 3 내부 결함 매니저(164_7)는 제 2 명령어 캐시(164_3) 내에서 발생하는 오류나 결함을 검출 및 복구할 수 있다. 제 4 내부 결함 매니저(164_9)는 제 2 데이터 캐시(164_5) 내에서 발생하는 오류나 결함을 검출하거나 복구할 수 있다.The second processor 164 includes a second processor core 164_1, a fourth instruction cache 164_3, a second data cache 164_5, a third internal fault manager 164_7, and a fourth internal fault manager 164_9. may include The second processor core 164_1 performs various operations based on instructions and data provided through the second instruction cache 164_3 and the second data cache 164_5 inside the second processor 164 . In particular, the third internal defect manager 164_7 may detect and repair errors or defects occurring in the second instruction cache 164_3 . The fourth internal defect manager 164_9 may detect or repair an error or defect occurring in the second data cache 164_5 .

상술한 구성 및 기능을 갖는 기능 안전 프로세서 코어(160)에 의해서 복수의 나노 코어들에 의해서 처리된 연산의 결과를 수신하여 인식 오류의 발생 여부를 검출할 수 있다. 특히, 제 1 프로세서(162)와 제 2 프로세서(164)는 각각 독립적인 클록 신호(CLK1, CLK2)와 구동 전압들(VDD1, VDD2)에 의해서 구동된다. 따라서, 제 1 프로세서(162)와 제 2 프로세서(164)는 각각 구동 전압이나 클록 신호에서 비롯되는 공통 원인 오류(Common cause fault)로부터 자유로울 수 있다. 따라서, 기능 안전 프로세서 코어(160)의 동작 신뢰성이 제공될 수 있다.The functional safety processor core 160 having the above-described configuration and function may receive the result of the operation processed by the plurality of nanocores to detect whether a recognition error has occurred. In particular, the first processor 162 and the second processor 164 are driven by independent clock signals CLK1 and CLK2 and driving voltages VDD1 and VDD2, respectively. Accordingly, the first processor 162 and the second processor 164 may be free from common cause faults generated from driving voltages or clock signals, respectively. Accordingly, operational reliability of the functional safety processor core 160 may be provided.

도 6은 도 5의 기능 안전 프로세서 코어에 의해서 수행되는 오류 검출의 단위를 예시적으로 보여주는 블록도이다. 도 6을 참조하면, 나노 코어들이 복수의 그룹으로 구분될 수 있다. 각각의 그룹은 동일한 프레임을 처리하도록 제어될 수 있다. 또는, 각각의 그룹은 서로 다른 프레임을 처리하도록 제어될 수 있다. 6 is a block diagram exemplarily showing a unit of error detection performed by the functional safety processor core of FIG. 5 . Referring to FIG. 6 , the nanocores may be divided into a plurality of groups. Each group can be controlled to process the same frame. Alternatively, each group may be controlled to process different frames.

예컨대, 코어 어레이(110)의 제 1 행에 위치하는 나노 코어들(NC_00, NC_01, NC_02, NC_03)은 제 1 그룹으로 분류되고, 제 2 행에 위치하는 나노 코어들(NC_10, NC_11, NC_12, NC_13)은 제 2 그룹으로 분류될 수 있다. 그리고 제 3 행 및 제 4 행에 위치하는 나노 코어들(NC_20, NC_21, NC_22, NC_23, NC_30, NC_31, NC_32, NC_33)은 제 3 그룹으로 분류될 수 있다. For example, the nanocores NC_00, NC_01, NC_02, and NC_03 positioned in the first row of the core array 110 are classified into a first group, and the nanocores NC_10, NC_11, NC_12, NC_13) may be classified into the second group. In addition, the nanocores NC_20, NC_21, NC_22, NC_23, NC_30, NC_31, NC_32, and NC_33 positioned in the third and fourth rows may be classified into a third group.

상술한 그룹 분류에 기초하여, 제 1 그룹 및 제 2 그룹의 나노 코어들에게는 제 1 프레임(Frame_N)에 대한 패턴 인식 연산이 할당될 수 있다. 즉, 제 1 그룹의 나노 코어들(NC_00, NC_01, NC_02, NC_03)에는 제 1 프레임(Frame_Na)의 입력 피처가 피처 메모리(152)를 통해서 전달될 수 있다. 더불어, 제 2 그룹의 나노 코어들(NC_10, NC_11, NC_12, NC_13)에도 제 1 프레임(Frame_Nb)의 입력 피처가 피처 메모리(154)를 통해서 전달될 수 있다. 여기서, 프레임들(Frame_Na, Frame_Nb)은 동일한 프레임 데이터이지만 서로 다른 나노 코어 그룹에 할당되었음을 의미한다. Based on the group classification described above, a pattern recognition operation for the first frame Frame_N may be assigned to the nanocores of the first group and the second group. That is, the input feature of the first frame Frame_Na may be transmitted to the first group of nanocores NC_00 , NC_01 , NC_02 , and NC_03 through the feature memory 152 . In addition, the input feature of the first frame Frame_Nb may be transferred to the second group of nanocores NC_10 , NC_11 , NC_12 , and NC_13 through the feature memory 154 . Here, the frames Frame_Na and Frame_Nb mean the same frame data but are allocated to different nanocore groups.

그리고 코어 어레이(110)의 제 3 및 제 4 행에 위치하는 제 3 그룹의 나노 코어들에게는 제 2 프레임(Frame_N+1)에 대한 패턴 인식 연산이 할당될 수 있다. 즉, 제 3 그룹의 나노 코어들(NC_20, NC_21, NC_22, NC_23, NC_30, NC_31, NC_32, NC_33)에는 제 1 프레임(Frame_Na 또는 Frame_Nb)과는 다른 제 2 프레임(Frame_N+1)의 입력 피처가 피처 메모리들(156, 158)을 통해서 각각 전달될 수 있다. In addition, a pattern recognition operation for the second frame Frame_N+1 may be allocated to the third group of nanocores positioned in the third and fourth rows of the core array 110 . That is, in the third group of nanocores NC_20, NC_21, NC_22, NC_23, NC_30, NC_31, NC_32, NC_33, the input feature of the second frame Frame_N+1 different from the first frame Frame_Na or Frame_Nb is may be passed through feature memories 156 and 158, respectively.

기능 안전 프로세서 코어(160)는 제 1 그룹 및 제 2 그룹의 나노 코어들이 출력하는 연산 결과를 비교하여 패턴 인식 연산의 오류 여부를 결정할 수 있다. 그리고 오류가 발생하는 경우, 이전 프레임(Frame_N-1)과의 차이값을 계산하여 제 1 프레임들(Frame_Na 또는 Frame_Nb) 각각의 연산 결과 중 어느 하나를 패턴 인식의 결과로 선택할 수 있다. The functional safety processor core 160 may determine whether a pattern recognition operation is in error by comparing operation results output by the nanocores of the first group and the second group. In addition, when an error occurs, a difference value from the previous frame Frame_N-1 is calculated, and any one of the operation results of each of the first frames Frame_Na or Frame_Nb may be selected as a result of pattern recognition.

도 7은 본 발명의 실시 예에 따른 기능 안전 프로세서 코어의 동작을 간략히 보여주는 순서도이다. 도 7을 참조하면, 기능 안전 프로세서 코어(160)가 하나의 프레임(Frame_N)을 처리하는 방법이 도시되어 있다. 기능 안전 프로세서 코어(160)는 현재 프레임 영상(Frame_N)의 패턴 인식을 제 1 그룹 및 제 2 그룹의 나노 코어들에게 각각 할당한다. 그리고 기능 안전 프로세서 코어(160)는 패턴 인식의 처리 결과값을 비교하여 오류의 존재 여부의 판단 및 최적의 결과를 선택할 수 있다.7 is a flowchart schematically illustrating an operation of a functional safety processor core according to an embodiment of the present invention. Referring to FIG. 7 , a method for the functional safety processor core 160 to process one frame Frame_N is illustrated. The functional safety processor core 160 allocates pattern recognition of the current frame image Frame_N to the nanocores of the first group and the second group, respectively. In addition, the functional safety processor core 160 may determine whether an error exists and select an optimal result by comparing the processing result values of the pattern recognition.

S110 단계에서, 기능 안전 프로세서 코어(160)는 현재 프레임 영상(Frame_N)을 복수의 나노 코어 그룹에 동일하게 할당한다. 예를 들면, 기능 안전 프로세서 코어(160)는 2개의 나노 코어 그룹에 현재 프레임 영상(Frame_N)을 동시에 할당할 수 있다. 그리고 기능 안전 프로세서 코어(160)는 두 개의 나노 코어 그룹으로부터 할당된 프레임 영상(Frame_N)에 대한 처리 결과를 수신할 것이다. In step S110 , the functional safety processor core 160 equally allocates the current frame image Frame_N to the plurality of nanocore groups. For example, the functional safety processor core 160 may simultaneously allocate the current frame image Frame_N to two nanocore groups. In addition, the functional safety processor core 160 will receive the processing result for the frame image Frame_N allocated from the two nano-core groups.

S120 단계에서, 기능 안전 프로세서 코어(160)는 두 개의 나노 코어 그룹들 각각으로부터 전달되는 처리 결과들을 비교한다. 즉, 기능 안전 프로세서 코어(160)는 제 1 그룹의 나노 코어들의 프레임 영상(Frame_N)에 대한 처리 결과 R(Frame_Na)와 제 2 그룹의 나노 코어들의 프레임 영상(Frame_N)에 대한 처리 결과 R(Frame_Nb)를 비교할 것이다. 만일, 처리 결과들이 동일한 경우(예 방향), 절차는 S140 단계로 이동한다. 반면, 처리 결과가 다른 경우(아니오 방향), 절차는 S130 단계로 이동한다.In step S120, the functional safety processor core 160 compares the processing results transmitted from each of the two nano-core groups. That is, the functional safety processor core 160 processes the processing result R (Frame_Na) of the frame image Frame_N of the first group of nanocores and the processing result R (Frame_Nb) of the frame image (Frame_N) of the second group of nanocores. ) will be compared. If the processing results are the same (yes direction), the procedure moves to step S140. On the other hand, if the processing result is different (No direction), the procedure moves to step S130.

S130 단계에서, 기능 안전 프로세서 코어(160)는 현재 프레임 영상(Frame_N)에 대한 제 1 그룹의 처리 결과 R(Frame_Na)와 이전 프레임에 대한 처리 결과 R(Frame_N-1)와의 차이값[R(Frame_Na)-R(Frame_N-1)]을 계산한다. 그리고 기능 안전 프로세서 코어(160)는 계산된 차이값과 기준값(Ref)을 비교한다. 만일, 차이값[R(Frame_Na)-R(Frame_N-1)]이 기준값(Ref)보다 작지 않은 경우(아니오 방향), 절차는 S150 단계로 이동한다. 반면, 차이값[R(Frame_Na)-R(Frame_N-1)]이 기준값(Ref)보다 작지 않은 경우(예 방향), 절차는 S140 단계로 이동한다.In step S130, the functional safety processor core 160 determines the difference value [R(Frame_Na) between the processing result R(Frame_Na) of the first group for the current frame image (Frame_N) and the processing result R(Frame_N-1) for the previous frame )-R(Frame_N-1)] is calculated. And the functional safety processor core 160 compares the calculated difference value with the reference value Ref. If the difference value [R(Frame_Na)-R(Frame_N-1)] is not smaller than the reference value Ref (No direction), the procedure moves to step S150. On the other hand, if the difference value [R(Frame_Na)-R(Frame_N-1)] is not smaller than the reference value Ref (yes direction), the procedure moves to step S140.

S140 단계에서, 기능 안전 프로세서 코어(160)는 제 1 그룹의 처리 결과 R(Frame_Na)를 영상 인식 연산의 결과로 선택한다. 이어서, 절차는 S170 단계로 이동하여 다음 프레임(Frame_N+1)을 처리하기 위한 프로세스를 진행할 것이다. In step S140 , the functional safety processor core 160 selects the processing result R(Frame_Na) of the first group as a result of the image recognition operation. Then, the procedure moves to step S170 to proceed with the process for processing the next frame (Frame_N+1).

S150 단계에서, 기능 안전 프로세서 코어(160)는 제 2 그룹의 처리 결과 R(Frame_Nb)와 이전 프레임에 대한 처리 결과 R(Frame_N-1)와의 차이값[R(Frame_Nb)-R(Frame_N-1)]을 계산한다. 그리고 기능 안전 프로세서 코어(160)는 계산된 차이값과 기준값(Ref)을 비교한다. 만일, 차이값[R(Frame_Nb)-R(Frame_N-1)]이 기준값(Ref)보다 작지 않은 경우(아니오 방향), 절차는 S180 단계로 이동한다. 반면, 차이값[R(Frame_Nb)-R(Frame_N-1)]이 기준값(Ref)보다 작지 않은 경우(예 방향), 절차는 S160 단계로 이동한다.In step S150, the functional safety processor core 160 determines the difference between the processing result R(Frame_Nb) of the second group and the processing result R(Frame_N-1) for the previous frame [R(Frame_Nb)-R(Frame_N-1)] ] is calculated. And the functional safety processor core 160 compares the calculated difference value with the reference value Ref. If the difference value [R(Frame_Nb)-R(Frame_N-1)] is not smaller than the reference value Ref (No direction), the procedure moves to step S180. On the other hand, if the difference value [R(Frame_Nb)-R(Frame_N-1)] is not smaller than the reference value Ref (yes direction), the procedure moves to step S160.

S160 단계에서, 기능 안전 프로세서 코어(160)는 제 2 그룹의 처리 결과 R(Frame_Nb)를 영상 인식 연산의 결과로 선택한다. 이어서, 절차는 S170 단계로 이동하여 다음 프레임(Frame_N+1)을 처리하기 위한 프로세스를 진행할 것이다.In step S160 , the functional safety processor core 160 selects the processing result R(Frame_Nb) of the second group as a result of the image recognition operation. Then, the procedure moves to step S170 to proceed with the process for processing the next frame (Frame_N+1).

S180 단계에서, 기능 안전 프로세서 코어(160)는 현재 프레임(Frame_N)에 대한 영상 인식 연산에서 오류가 발생한 것으로 판단한다. 그리고 기능 안전 프로세서 코어(160)는 판단 결과에 따라 추가적인 오류 복구 동작을 수행할 수도 있을 것이다.In step S180 , the functional safety processor core 160 determines that an error has occurred in the image recognition operation for the current frame Frame_N. In addition, the functional safety processor core 160 may perform an additional error recovery operation according to the determination result.

이상에서는 본 발명의 기능 안전 프로세서 코어(160)에 의한 오류 검출 동작이 간략히 설명되었다. 하지만, 상술한 예들은 본 발명의 이점을 설명하기 위한 하나의 예시에 지나지 않으며 본 발명의 사상을 벗어나지 않는 범위 내에서 다양한 변경이 가능함은 잘 이해될 것이다.In the above, the error detection operation by the functional safety processor core 160 of the present invention has been briefly described. However, it will be well understood that the above-described examples are merely examples for explaining the advantages of the present invention, and various changes are possible without departing from the spirit of the present invention.

위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.The contents described above are specific examples for carrying out the present invention. The present invention will include not only the above-described embodiments, but also simple design changes or easily changeable embodiments. In addition, the present invention will include techniques that can be easily modified and implemented in the future using the above-described embodiments.

Claims (15)

각각 명령어에 응답하여 입력 피처를 커널 계수를 사용하여 패턴 인식 연산을 수행하는 행과 열로 배열되는 복수의 나노 코어들;
상기 복수의 나노 코어들 각각에 상기 명령어를 제공하는 명령어 메모리;
상기 복수의 나노 코어들 각각에 상기 입력 피처를 제공하는 피처 메모리;
상기 복수의 나노 코어들에 상기 커널 계수를 제공하는 커널 메모리; 그리고
상기 복수의 나노 코어들로부터 출력되는 패턴 인식 연산의 결과를 수신하여 인식 오류의 존재 여부를 검출하고, 검출된 인식 오류에 대해 오류 허용 기능을 수행하는 기능 안전 프로세서 코어를 포함하되,
상기 기능 안전 프로세서 코어는:
제 1 구동 전압 및 제 1 구동 클록에 의해서 구동되는 제 1 프로세서; 그리고
제 2 구동 전압 및 제 2 구동 클록에 의해서 구동되며, 상기 제 1 프로세서와 동일한 작업을 수행하는 제 2 프로세서를 포함하고,
상기 제 1 구동 전압과 상기 제 2 구동 전압 각각은 상호 독립적인 전압 레귤레이터로부터 공급되고, 상기 제 1 구동 클록과 상기 제 2 구동 클록 각각은 상호 독립적인 클록 발생기들로부터 제공되는 영상 인식 프로세서.
a plurality of nanocores arranged in rows and columns for performing a pattern recognition operation using kernel coefficients on input features in response to each instruction;
an instruction memory providing the instruction to each of the plurality of nano-cores;
a feature memory providing the input feature to each of the plurality of nano-cores;
a kernel memory providing the kernel coefficients to the plurality of nanocores; and
A functional safety processor core that receives the result of the pattern recognition operation output from the plurality of nano-cores, detects the presence of a recognition error, and performs an error tolerance function for the detected recognition error,
The functional safety processor core comprises:
a first processor driven by a first driving voltage and a first driving clock; and
a second processor driven by a second driving voltage and a second driving clock and performing the same operation as the first processor;
The first driving voltage and the second driving voltage are respectively supplied from mutually independent voltage regulators, and the first driving clock and the second driving clock are each supplied from mutually independent clock generators.
제 1 항에 있어서,
상기 기능 안전 프로세서 코어는:
상기 제 1 구동 전압을 제공하는 제 1 LDO; 그리고
상기 제 2 구동 전압을 제공하는 제 2 LDO를 포함하는 영상 인식 프로세서.
The method of claim 1,
The functional safety processor core comprises:
a first LDO providing the first driving voltage; and
and a second LDO providing the second driving voltage.
제 1 항에 있어서,
상기 기능 안전 프로세서 코어는:
상기 제 1 구동 클록을 제공하는 제 1 위상 고정 루프; 그리고
상기 제 2 구동 클록을 제공하는 제 2 위상 고정 루프를 포함하는 영상 인식 프로세서.
The method of claim 1,
The functional safety processor core comprises:
a first phase locked loop providing the first driving clock; and
and a second phase locked loop providing the second driving clock.
제 1 항에 있어서,
상기 기능 안전 프로세서 코어는:
상기 제 1 프로세서와 상기 제 2 프로세서의 처리 결과를 비교하여 오류 또는 결함의 존재 여부를 검출하는 외부 결함 매니저; 그리고
상기 검출된 오류 또는 결함을 복구하기 위한 복구 컨트롤러를 더 포함하는 영상 인식 프로세서.
The method of claim 1,
The functional safety processor core comprises:
an external defect manager that compares the processing results of the first processor and the second processor to detect whether an error or a defect exists; and
The image recognition processor further comprising a recovery controller for recovering the detected error or defect.
제 1 항에 있어서,
상기 제 1 프로세서는:
요청된 연산을 수행하는 제 1 프로세서 코어;
상기 제 1 프로세서 코어에 입력되는 명령어를 제공하는 제 1 명령어 캐시;
상기 제 1 프로세서 코어에 캐시 데이터를 제공하는 제 1 데이터 캐시;
상기 제 1 명령어 캐시의 오류를 관리하는 제 1 내부 결함 매니저; 그리고
상기 제 1 데이터 캐시의 오류를 관리하는 제 2 내부 결함 매니저를 포함하는 영상 인식 프로세서.
The method of claim 1,
The first processor includes:
a first processor core to perform the requested operation;
a first instruction cache providing instructions input to the first processor core;
a first data cache providing cache data to the first processor core;
a first internal fault manager for managing errors in the first instruction cache; and
and a second internal defect manager for managing errors in the first data cache.
제 1 항에 있어서,
상기 제 2 프로세서는:
요청된 연산을 수행하는 제 2 프로세서 코어;
상기 제 2 프로세서 코어에 입력되는 명령어를 제공하는 제 2 명령어 캐시;
상기 제 2 프로세서 코어에 캐시 데이터를 제공하는 제 2 데이터 캐시;
상기 제 2 명령어 캐시의 오류를 관리하는 제 3 내부 결함 매니저; 그리고
상기 제 2 데이터 캐시의 오류를 관리하는 제 4 내부 결함 매니저를 포함하는 영상 인식 프로세서.
The method of claim 1,
The second processor includes:
a second processor core to perform the requested operation;
a second instruction cache providing instructions input to the second processor core;
a second data cache providing cache data to the second processor core;
a third internal fault manager for managing errors in the second instruction cache; and
and a fourth internal defect manager for managing errors in the second data cache.
제 1 항에 있어서,
상기 기능 안전 프로세서 코어는, 상기 복수의 나노 코어들 중 제 1 그룹 및 제 2 그룹 각각의 나노 코어들에게 현재 프레임에 대응하는 입력 피처를 할당하고, 상기 제 1 그룹 및 상기 제 2 그룹 각각의 연산 결과를 비교하는 영상 인식 프로세서.
The method of claim 1,
The functional safety processor core allocates an input feature corresponding to a current frame to each of the first group and the second group among the plurality of nanocores, and performs an operation of each of the first group and the second group An image recognition processor that compares the results.
제 7 항에 있어서,
상기 기능 안전 프로세서 코어는, 상기 제 1 그룹에서 출력되는 제 1 인식 결과와 상기 제 2 그룹에서 출력되는 제 2 인식 결과가 동일하면 제 1 인식 결과 또는 제 2 인식 결과 중 어느 하나를 출력값으로 선택하는 영상 인식 프로세서.
8. The method of claim 7,
The functional safety processor core selects either the first recognition result or the second recognition result as an output value when the first recognition result output from the first group and the second recognition result output from the second group are the same image recognition processor.
제 8 항에 있어서,
상기 기능 안전 프로세서 코어는, 상기 제 1 인식 결과와 상기 제 2 인식 결과가 다른 경우, 이전 프레임에 대한 인식 연산의 결과에 대응하는 제 3 인식 결과를 참조하여 상기 제 1 인식 결과 또는 제 2 인식 결과 중 어느 하나를 출력값으로 선택하는 영상 인식 프로세서.
9. The method of claim 8,
When the first recognition result and the second recognition result are different from the first recognition result, the functional safety processor core is configured to refer to a third recognition result corresponding to a result of a recognition operation for a previous frame, and the first recognition result or the second recognition result An image recognition processor that selects any one as an output value.
제 9 항에 있어서,
상기 기능 안전 프로세서 코어는, 상기 제 1 인식 결과와 상기 제 2 인식 결과 중에서 상기 제 3 인식 결과와의 차이가 더 작은 어느 하나를 선택하는 영상 인식 프로세서.
10. The method of claim 9,
The functional safety processor core selects one of the first recognition result and the second recognition result with a smaller difference between the third recognition result and the image recognition processor.
제 10 항에 있어서,
상기 기능 안전 프로세서 코어는 상기 제 1 인식 결과와 상기 제 3 인식 결과의 차이값 그리고 상기 제 2 인식 결과와 상기 제 3 인식 결과와의 차이값이 각각 기준값보다 작지 않은 경우에는 인식 오류로 판단하는 영상 인식 프로세서.
11. The method of claim 10,
The functional safety processor core determines a recognition error when the difference between the first recognition result and the third recognition result and the difference between the second recognition result and the third recognition result are not smaller than a reference value, respectively. recognition processor.
복수의 나노 코어들을 포함하는 영상 인식 프로세서의 동작 방법에 있어서:
현재 프레임 영상을 상기 복수의 나노 코어들 중에서 제 1 그룹의 나노 코어와 제 2 그룹의 나노 코어에 할당하는 단계;
상기 제 1 그룹의 나노 코어들이 출력하는 제 1 인식 결과와 상기 제 2 그룹의 나노 코어들이 출력하는 제 2 인식 결과를 비교하는 단계;
상기 제 1 인식 결과가 상기 제 2 인식 결과와 동일한 경우, 상기 제 1 인식 결과를 상기 현재 프레임 영상의 인식 결과로 선택하는 단계; 그리고
상기 제 1 인식 결과와 상기 제 2 인식 결과가 다른 경우, 이전 프레임에 대한 인식 결과값에 대응하는 제 3 인식 결과와 상기 제 1 인식 결과 및 상기 제 2 인식 결과 각각의 차이값을 참조하여 오류 허용 또는 인식 오류로 판단하는 단계를 포함하는 동작 방법.
A method of operating an image recognition processor including a plurality of nano-cores, the method comprising:
allocating a current frame image to a first group of nanocores and a second group of nanocores from among the plurality of nanocores;
comparing a first recognition result output by the first group of nanocores with a second recognition result output by the second group of nanocores;
selecting the first recognition result as a recognition result of the current frame image when the first recognition result is the same as the second recognition result; and
When the first recognition result and the second recognition result are different from each other, an error is allowed by referring to a third recognition result corresponding to a recognition result value for a previous frame, and a difference value between the first recognition result and the second recognition result or determining as a recognition error.
제 12 항에 있어서,
상기 오류 허용 또는 상기 인식 오류로 판단하는 단계는:
상기 제 1 인식 결과와 상기 제 3 인식 결과 사이의 제 1 차이값과, 상기 제 2 인식 결과와 상기 제 3 인식 결과 사이의 제 2 차이값을 기준값과 비교하는 단계를 더 포함하는 동작 방법.
13. The method of claim 12,
The step of determining that the error is accepted or the recognition error is:
and comparing a first difference value between the first recognition result and the third recognition result and a second difference value between the second recognition result and the third recognition result with a reference value.
제 13 항에 있어서,
상기 제 1 차이값과 상기 제 2 차이값이 각각 상기 기준값보다 작은 경우, 상기 제 1 인식 결과와 상기 제 2 인식 결과 중 상기 기준값과의 차이가 더 적은 어느 하나를 오류 허용 값으로 선택하는 동작 방법.
14. The method of claim 13,
When the first difference value and the second difference value are respectively smaller than the reference value, an operation method of selecting any one of the first recognition result and the second recognition result having a smaller difference between the reference value as an error tolerance value .
제 13 항에 있어서,
상기 제 1 차이값과 상기 제 2 차이값이 각각 상기 기준값보다 작지 않은 경우, 인식 오류로 판단하는 동작 방법.
14. The method of claim 13,
When the first difference value and the second difference value are not smaller than the reference value, respectively, it is determined as a recognition error.
KR1020190020775A 2018-11-30 2019-02-21 Image recognition processor including functional safety processor core and operation method thereof KR102408936B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/694,899 US11176395B2 (en) 2018-11-30 2019-11-25 Image recognition processor including functional safety processor core and operation method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180153135 2018-11-30
KR1020180153135 2018-11-30

Publications (2)

Publication Number Publication Date
KR20200066124A KR20200066124A (en) 2020-06-09
KR102408936B1 true KR102408936B1 (en) 2022-06-15

Family

ID=71082070

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190020775A KR102408936B1 (en) 2018-11-30 2019-02-21 Image recognition processor including functional safety processor core and operation method thereof

Country Status (1)

Country Link
KR (1) KR102408936B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150281742A1 (en) 2014-03-25 2015-10-01 Freescale Semiconductor, Inc. Circuit arrangement and method for processing a digital video stream and for detecting a fault in a digital video stream, digital video system and computer readable program product
US20160117557A1 (en) 2014-10-28 2016-04-28 Texas Instruments Incorporated Apparatus for detecting faults in video frames of video sequence

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102162321B1 (en) * 2016-03-14 2020-10-06 한국전자통신연구원 Processor system and fault detection method thereof
KR102377729B1 (en) * 2016-12-08 2022-03-24 한국전자통신연구원 Multi-core processor and operation method thereof
KR20180085545A (en) * 2017-01-19 2018-07-27 주식회사 만도 A camera system for ADAS, And Apparatus and Method for controlling vehicle

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150281742A1 (en) 2014-03-25 2015-10-01 Freescale Semiconductor, Inc. Circuit arrangement and method for processing a digital video stream and for detecting a fault in a digital video stream, digital video system and computer readable program product
US20160117557A1 (en) 2014-10-28 2016-04-28 Texas Instruments Incorporated Apparatus for detecting faults in video frames of video sequence

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
논문1(2017.11.08)
비특허문헌1(2017.12.31)

Also Published As

Publication number Publication date
KR20200066124A (en) 2020-06-09

Similar Documents

Publication Publication Date Title
Mahmoud et al. Active fault tolerant control systems: stochastic analysis and synthesis
KR102578644B1 (en) A apparatus for predicting a yield of a semiconductor integrated circuits, and a method for manufacturing a semiconductor device using the same
US6954875B2 (en) Method of recovering a flight critical computer after a radiation event
US7844953B2 (en) Program, apparatus and method for verifying program
CN113590456A (en) Method and device for checking a technical system
KR102162321B1 (en) Processor system and fault detection method thereof
US11500382B2 (en) Configuration of a control system for an at least partially autonomous transportation vehicle
US8009163B2 (en) Graphics generation device comprising means for monitoring its operation
CN107153414B (en) A kind of fault detection reconstruction system and method based on sound mixed strategy
US20210148725A1 (en) Recommended lane determination device
US11176395B2 (en) Image recognition processor including functional safety processor core and operation method thereof
US10983878B2 (en) Processor for detecting and preventing recognition error
KR102408936B1 (en) Image recognition processor including functional safety processor core and operation method thereof
US10108513B2 (en) Transferring failure samples using conditional models for machine condition monitoring
KR101988482B1 (en) Apparatus for processing data in tactical data link system
US9122603B2 (en) Failure detection in high-performance clusters and computers using chaotic map computations
CN113722207A (en) Method and device for checking technical systems
KR20200063011A (en) Processor for detecting and preventing recognition error
EP3869485B1 (en) Lane link generation device, lane link generation program, and lane link generation method
Liu A study of flight-critical computer system recovery from space radiation-induced error
US20200370893A1 (en) Device and method for compensating for route of autonomous vehicle
US9384858B2 (en) Computer system predicting memory failure
US11656366B2 (en) Apparatus, system and method for generalized multi-mode state machine based localization engine and application of same
US11550064B1 (en) Apparatus, system and method for providing global localization output and application of same
US11866154B2 (en) System and method for controlling an actuator for a control surface of an aircraft

Legal Events

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