WO2018124707A1 - 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치 - Google Patents

신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치 Download PDF

Info

Publication number
WO2018124707A1
WO2018124707A1 PCT/KR2017/015499 KR2017015499W WO2018124707A1 WO 2018124707 A1 WO2018124707 A1 WO 2018124707A1 KR 2017015499 W KR2017015499 W KR 2017015499W WO 2018124707 A1 WO2018124707 A1 WO 2018124707A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
neural network
electronic device
interface controller
calculator
Prior art date
Application number
PCT/KR2017/015499
Other languages
English (en)
French (fr)
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/464,724 priority Critical patent/US20190347559A1/en
Publication of WO2018124707A1 publication Critical patent/WO2018124707A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • 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
    • 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

Definitions

  • Embodiments disclosed herein relate to techniques for processing input data using neural network operations.
  • neural network structures As information available for each layer is different, research is being conducted on the neural network structure that utilizes intermediate information as well as the final result.
  • the types of neural networks may vary according to application fields, and two or more heterogeneous neural networks may be used simultaneously.
  • the operation result of heterogeneous neural network operation may be used independently depending on the application field, and may have mutual relations and influence each other.
  • the processing speed may be reduced due to flexibility constraints.
  • the neural network model occupies approximately several hundred MB, so that the area of a system on chip (SOC) can be increased when various neural network operations are required.
  • SOC system on chip
  • the local memory capacity is hundreds of KB or more even if both a neural network computing device that performs software-based operations and hardware designed to perform specific neural network operations are used. Increasing local memory capacity also increases the capacity of the SoC.
  • the introduction of external memory to share data in the middle of the hierarchy can lead to a decrease in processing speed.
  • An electronic device may include a first calculator configured to perform one of a plurality of neural network operations, a second calculator including a hardware accelerator configured to perform a specified neural network operation, and An interface controller may be connected between the first calculator and the second calculator.
  • An electronic device may include a system on chip (SoC) and a first memory electrically connected to the SoC.
  • SoC may include at least one processor, a core configured to perform any one of a plurality of neural network operations, a hardware accelerator configured to perform a specified neural network operation, a second memory for storing a first neural network operation result in the core, and A third memory for storing the operation result of the hardware accelerator, and an interface controller connected between the second memory and the third memory.
  • an input of a first operation unit capable of performing a plurality of neural network operations using common hardware or a second operation unit including a hardware accelerator configured to perform a specified neural network operation Determining at least one calculator for performing neural network operations on data, and performing neural network operations on the input data using the determined at least one calculator.
  • various neural network operations may be performed using less system space.
  • neural network operations may be flexibly performed in various situations.
  • FIG. 1 is a block diagram illustrating a configuration of an electronic device that performs a neural network operation, according to an exemplary embodiment.
  • FIG. 2 is a block diagram illustrating a configuration of an electronic device that performs a neural network operation, according to another exemplary embodiment.
  • FIG. 3 is a block diagram illustrating a configuration of an electronic device that performs a neural network operation, according to another exemplary embodiment.
  • FIG. 4 illustrates an electronic device in a network environment according to an exemplary embodiment.
  • FIG. 5 is a block diagram of an electronic device according to an embodiment of the present disclosure.
  • expressions such as “have”, “may have”, “include”, or “may contain” include the presence of a corresponding feature (e.g., numerical, functional, operational, or component such as a component). Does not exclude the presence of additional features.
  • expressions such as “A or B”, “at least one of A or / and B”, or “one or more of A or / and B” may include all possible combinations of items listed together.
  • “A or B”, “at least one of A and B”, or “at least one of A or B” includes (1) at least one A, (7) at least one B, Or (3) both of cases including at least one A and at least one B.
  • first,” “second,” “first,” or “second,” as used herein may modify various components, regardless of order and / or importance, and may modify one component to another. It is used to distinguish a component and does not limit the components.
  • the first user device and the second user device may represent different user devices regardless of the order or importance.
  • the first component may be called a second component, and similarly, the second component may be renamed to the first component.
  • One component (such as a first component) is "(functionally or communicatively) coupled with / to" to another component (such as a second component) or " When referred to as “connected to”, it should be understood that any component may be directly connected to the other component or may be connected through another component (eg, a third component).
  • a component e.g., a first component
  • another component e.g., a second component
  • the expression “configured to” used in this document is, for example, “suitable for”, “having the capacity to” depending on the situation. It may be used interchangeably with “designed to”, “adapted to”, “made to”, or “capable of”.
  • the term “configured to” may not necessarily mean only “specifically designed to” in hardware. Instead, in some situations, the expression “device configured to” may mean that the device “can” along with other devices or components.
  • the phrase “processor configured (or set up) to perform A, B, and C” may execute a dedicated processor (eg, an embedded processor) to perform the operation, or one or more software programs stored in a memory device. By doing so, it may mean a general-purpose processor (for example, a CPU or an application processor) capable of performing the corresponding operations.
  • An electronic device may include, for example, a smartphone, a tablet personal computer, a mobile phone, a video phone, an e-book reader, Desktop PCs, laptop PCs, netbook computers, workstations, servers, personal digital assistants, portable multimedia players, MP3 players, mobile medical devices, It may include at least one of a camera or a wearable device.
  • a wearable device may be an accessory type (for example, a watch, a ring, a bracelet, an anklet, a necklace, glasses, a contact lens, or a head-mounted-device (HMD)), a fabric, or a clothing type (for example, it may include at least one of an electronic garment, a body attachment type (eg, a skin pad or a tattoo), or a living implantable type (eg, an implantable circuit).
  • HMD head-mounted-device
  • the electronic device may be a home appliance.
  • Home appliances are, for example, televisions, digital video disk players, audio, refrigerators, air conditioners, cleaners, ovens, microwave ovens, washing machines, air cleaners, set-top boxes, home automation Home automation control panel, security control panel, TV box (e.g. Samsung HomeSync TM, Apple TV TM, or Google TV TM), game console (e.g. Xbox TM, PlayStation TM), electronics It may include at least one of a dictionary, an electronic key, a camcorder, or an electronic picture frame.
  • the electronic device may include various medical devices (eg, various portable medical measuring devices (such as blood glucose meters, heart rate monitors, blood pressure monitors, or body temperature meters), magnetic resonance angiography (MRA), magnetic resonance imaging (MRI), Such as computed tomography (CT), imaging or ultrasound, navigation devices, satellite navigation systems (Global Navigation Satellite System), event data recorder (EDR), flight data recorder (FDR), automotive infotainment ) Devices, ship's electronic equipment (e.g. ship's navigational devices, gyro compasses, etc.), avionics, security devices, vehicle head units, industrial or home robots, automatic teller's machines (financial institutions) Point of sales, point of sales, or Internet of things (e.g. light bulbs, sensors, electricity or gas meters, sprinkler devices, fire alarms, thermostats, street lights, It may include at least one of (toaster), exercise equipment, hot water tank, heater, boiler.
  • MRA magnetic resonance angiography
  • MRI magnetic resonance imaging
  • CT computed
  • an electronic device may be a furniture or part of a building / structure, an electronic board, an electronic signature receiving device, a projector, or various measuring devices (eg, Water, electricity, gas, or radio wave measuring instrument).
  • the electronic device may be one or a combination of the aforementioned various devices.
  • An electronic device according to an embodiment may be a flexible electronic device.
  • the electronic device according to an embodiment of the present disclosure is not limited to the above-described devices, and may include a new electronic device according to technology development.
  • the term user may refer to a person who uses an electronic device or a device (eg, an artificial intelligence electronic device) that uses an electronic device.
  • An electronic device may include a neural network operator including an instruction set architecture (ISA) core and a hardware accelerator.
  • the electronic device may include a first calculator 110 including an ISA core 112 and / or a second calculator 120 including a hardware accelerator.
  • the configuration of the electronic device illustrated in FIG. 1 is exemplary, and various modifications may be implemented to implement various embodiments disclosed in the present disclosure.
  • the electronic device may include a configuration such as the electronic device of FIGS. 2 to 3, the user terminal 401 illustrated in FIG. 4, and the electronic device 501 illustrated in FIG. 5, or may utilize the configurations. Can be modified.
  • the first calculator 110 may perform a plurality of neural network operations using common hardware.
  • the first calculator 110 may perform operations corresponding to various neural network structures according to a predetermined instruction set.
  • the first calculator 110 may process information in the middle of the hierarchy.
  • the first calculator 110 may control the neural network calculation of the second calculator 120.
  • the first calculator 110 may include an ISA core 112 and / or a memory 114.
  • the ISA core 112 may be an essential element for a central processing unit (CPU) or processor to run. ISA core 112 may correspond to a processor. In one embodiment, ISA core 112 may be part of a processor. ISA core 112 may represent a logical block located on an integrated circuit that may maintain an independent architectural state.
  • An ISA can represent an instruction set structure or a way of processing an instruction.
  • the ISA may represent instructions that the processor or ISA core 112 can understand.
  • the ISA may be an abstracted interface between hardware and low level software.
  • the ISA can be located at the layer between the operating system (OS) and the hardware to facilitate communication between the two.
  • the instruction set structure may be part of a programming-related computer architecture, including data types, instructions, registers, addressing modes, memory structures, exception handling, and external input / output.
  • ISA can define various types, including operand type, operand type, register number, and encoding method.
  • Each instruction understood by the processor may be referred to as an instruction.
  • Processors such as digital signal processors (DSPs) or graphic processing units (GPUs) may implement specific ISAs. Different types of operating systems (OSs) may run on processors designed according to different ISAs.
  • DSPs digital signal processors
  • GPUs graphic processing units
  • ISA core 112 may be a core designed according to a particular ISA type.
  • ISA core 112 may be a complex instruction set computer (CISC) core or a reduced instruction set computer (RISC) core.
  • CISC complex instruction set computer
  • RISC reduced instruction set computer
  • ISA core 112 is associated with an ISA that defines instructions executable on the processor.
  • ISA core 112 may perform the operation of a pipeline to recognize the instructions and process them as defined by the ISA.
  • the ISA core 112 may perform an execution cycle or an extraction cycle.
  • a pipeline can refer to an operation that overlaps an execution cycle and an extraction cycle to get another instruction from memory while one instruction is being executed in a process.
  • the pipeline may be a method in which one instruction is divided into a plurality of processing units and processed in parallel in order to speed up a processor.
  • the instruction pipeline can be extended to include other processor cycles.
  • the instruction pipeline can be constructed using a first in first out (FIFO) buffer that has the nature of a queue.
  • the processor may include one or more ISA cores (eg, 112).
  • the processor may include a microprocessor, an embedded processor, a DSP, a network processor, or any processor that executes code.
  • the ISA core 112 may perform profiling to efficiently utilize neural network operations. When operating at least one neural network, ISA core 112 may perform profiling prior to operation. The ISA core 112 may analyze the characteristics of the neural network. The ISA core 112 may store the analyzed neural network features as metadata. The ISA core 112 may load metadata or instructions into each operation unit 110 and 120. The ISA core 112 may perform scheduling to control operations at the ISA core 112 and start and end at at least one hardware accelerator 122-1, 122-2,..., 122 -N. have. The ISA core 112 may perform loading or scheduling through an application programming interface (API).
  • API application programming interface
  • the ISA core 112 may use the profiling result to determine synchronization timing between computing units, scheduling of each neural network, and the like.
  • the ISA core 112 may control the operation of the second calculator 120 using the profiling result.
  • the ISA core 112 may generate a signal or a command for controlling the operation of the second calculator 120.
  • At least some of the functionality of the ISA core 112 may be performed by other configurations. For example, profiling of the neural network may be performed by an interface controller 126, the processor 250 of FIG. 2, or the processor 350 of FIG. 3.
  • the metadata may include a calculation unit (eg, 110 or 120) suitable for each type of neural network, a number of layers, and operations, an estimated operation time, a data sharing form between calculation units, a data sharing point between calculation units, a neural network model and / or data It may include information such as a compression scheme. In one embodiment, two or more neural networks may operate.
  • the metadata may include information about an operation unit to be operated, a scheduling and / or synchronization method, an operation result sharing form, an operation result sharing time point, and / or an operation result integration method.
  • the ISA core 112 may determine a memory 114 or a memory 128 to store the operation result.
  • the ISA core 112 may allow the operation result to be stored in the memory 114 or the memory 128 in which memory space remains.
  • the memory 114 may store the result of the calculation in the first calculator 110. According to an embodiment, the memory 114 may store the result of the calculation in the second calculator 120.
  • the operation result may include a result of the middle layer of the neural network operation and a result of the output layer.
  • the result of the middle layer may be the result of the operation of the hidden layer.
  • the result of the middle layer may include at least one of pixel values of the hidden layer.
  • the memory 114 may communicate the stored information to the ISA core 112. Information stored in the memory 114 may be shared with an external device (eg, hardware accelerator 1 122-1) through the interface controller 126.
  • the memory 114 may be cache memory, buffer memory, or local memory.
  • the memory 114 may be static random access memory (SRAM).
  • the memory 114 may store metadata according to the embodiments described in this document.
  • the memory 114 may include a scratch pad and / or a circular buffer.
  • the second calculating unit 120 is a hardware accelerator 1, 2,... ... , N (122-1, 122-2,..., 122 -N).
  • the second calculator 120 may include a hardware accelerator configured to perform a designated neural network operation.
  • Different hardware accelerators eg, 122-1 and 122-2
  • At least one hardware accelerator 122-1, 122-2,..., 122 -N may be a hardware configuration that performs some functions of the electronic device.
  • the at least one hardware accelerator 122-1, 122-2,..., 122 -N may perform some functions of the electronic device faster than a software scheme implemented in a specific processor (eg, a CPU).
  • a specific processor eg, a CPU
  • at least one of the hardware accelerators 122-1, 122-2,..., 122 -N may include at least one of a CPU, a GPU, a DSP or an ISA, and a graphics card (or a video card).
  • the processing speed of at least one hardware accelerator 122-1, 122-2,..., 122 -N may be faster than if the same functionality is implemented by software.
  • the plurality of hardware accelerators 122-1, 122-2,..., 122 -N may simultaneously perform neural network operations.
  • the interface controller 126 may relay a resource request or transfer from one component to another component.
  • the interface controller 126 may relay a resource request of a client (eg, the first calculator 110, the ISA core 112, and the second calculator 120).
  • the interface controller 126 may transmit a request for processing input data to the first calculator 110 and / or the second calculator 120.
  • the interface controller 126 may transfer the operation request to the specific hardware accelerator.
  • the interface controller 126 may request an operation from the first operator 110 and / or the second operator 120.
  • the interface controller 126 may determine an operation unit suitable for processing input data. For example, the interface controller 126 may return to the first calculator 110 when there is no hardware accelerator suitable for input data among the at least one hardware accelerators 122-1, 122-2,..., 122 -N. Request processing of input data.
  • the interface controller 126 may perform protocol conversion, flow control, and the like so as to share local memories (eg, 114 and 128) of each of the operation units 110 and 120.
  • the interface controller 126 can be used without the need for software control of the memory in other computing units.
  • the interface controller 126 may perform compression or decompression to reduce the size when transmitting and receiving data.
  • the interface controller 126 may include a connection protocol (eg, AXI, OCP, Mesh, etc.) and / or a protection controller 127.
  • the interface controller 126 may request processing of input data from the ISA core 112 or at least one hardware accelerator 122-1, 122-2,..., 122 -N according to the connection protocol 127. .
  • the interface controller 126 may convert a signal, information, or command of the first calculator 110 into a signal, information, or command in a form readable by the second calculator 120.
  • the interface controller 126 may convert information generated or stored in the second calculator 120 into information in a form that can be read by the first calculator 110.
  • the interface controller 126 may include a security controller 127 for calculation of a specific purpose (eg, face recognition, iris recognition, etc.).
  • a specific purpose eg, face recognition, iris recognition, etc.
  • the interface controller 126 may use the security controller 127 when security is required, such as when neural network operations are used for user authentication.
  • the interface controller 126 may be provided with at least some of the functions performed by the electronic device in the configuration described in this document (eg, the first calculation unit and the second calculation unit) or the configuration described in this document, provided that the interface controller 126 is authorized through the normal path. Can be used.
  • the electronic device may access data requiring security only in a protection area of the electronic device.
  • the interface controller 126 may be located in the first calculator 110 or the second calculator 120. In another embodiment, the interface controller 126 may be located at a place where the first operation unit 110 or the second operation unit 120 may be connected. In one embodiment, the interface controller 126 may be referred to as a relay circuit or proxy circuit.
  • the interface controller 126 may be connected to the first calculator 110 and the second calculator 120.
  • the interface controller 126 may connect the second calculator 120 and the second memory.
  • the interface controller 126 may be connected to the first operator 110 and the second operator 120 via a local bus.
  • the interface controller 126 may connect the second calculator 120 and the second memory through a local bus.
  • the interface controller 126 may connect the first operation unit 110 and the second memory through a local bus.
  • the memory 128 may store the calculation result of the second calculator 120. According to an embodiment, the memory 128 may store a result of the calculation in the first calculator 110. The operation result may include a result of the middle layer and a result of the output layer. The memory 128 may store the results of operations at one or more hardware accelerators (eg, 122-1) among at least one hardware accelerators 122-1, 122-2,..., 122 -N. The memory 128 may transfer the stored information to the interface controller 126. The information stored in the memory 128 may be shared with an external device (eg, the memory 114 of the first calculator 110) through the interface controller 126. In one embodiment, memory 128 may be a cache memory, a buffer memory, or a local memory. In one embodiment, the memory 128 may be static random access memory (SRAM). In one embodiment, memory 128 may include a scratch pad and / or a circular buffer. As the electronic device shares information stored in the local memory, the system processing speed may be improved.
  • SRAM static random access memory
  • the mesh network 124 may refer to a network capable of communicating with each other even when network devices such as nodes or sensors are not connected to surrounding computers or network hubs.
  • the first calculator 110 and the second calculator 120 may share resources, signals, or data with each other through the mesh network 124.
  • the second calculator 120 may transfer or acquire resources, signals, or data to the interface controller 126 and / or the memory 128 through the mesh network 124.
  • the second calculator 120 may further include an interface controller 126 and / or a memory 128. According to an embodiment, the second calculator 120 may perform communication between components through the mesh network 124 performing local connection.
  • the electronic device may share information between the memory 114 of the first calculator 110 and the memory 128.
  • memory 114 and memory 128 may be local memory.
  • the interface controller 126 may refer to an operation result of the first operation unit 110 or the second operation unit 120.
  • the first calculator 110 may refer to the calculation result of the second calculator 120 or the calculation result stored in the memory 128 through the interface controller 126.
  • the second calculator 120 may refer to the calculation result of the first calculator 110 or the calculation result stored in the memory 114 through the interface controller 126.
  • the electronic device may share data stored in the memory 114 and the memory 128 using the interface controller 126.
  • the interface controller 126 may perform translation of the protocol for memory sharing.
  • the interface controller 126 may perform flow control for memory sharing.
  • the interface controller 126 may perform data compression and / or decompression for memory sharing. By sharing data between memories based on the interface controller 126, a system on chip (SoC) area may be reduced and processing speed may be improved.
  • SoC system on chip
  • the electronic device may transfer data stored in the memory 114 to the memory 128 and / or a specific hardware accelerator (eg, 122-1) through the interface controller 126. In an embodiment, the electronic device may transfer data stored in the memory 128 to the memory 114 and / or the ISA core 112 through the interface controller 126. The electronic device may obtain data from the first operator 110 or transfer data to the first operator 110 through the interface controller 126. The electronic device may obtain data from the second calculator 120 or transfer data to the second calculator 120 through the interface controller 126.
  • a specific hardware accelerator eg, 122-1
  • the electronic device may allocate an operation unit or share data in consideration of characteristics of a neural network.
  • the electronic device may manage information for assigning a calculator and / or sharing data as metadata.
  • the electronic device may perform profiling before performing neural network operations.
  • the electronic device may analyze the characteristics of the neural network and store it as metadata.
  • the electronic device may determine an operation unit suitable for calculation of input data using the metadata.
  • the electronic device may determine the first calculator 110 and / or the second calculator 120 as a suitable calculator. According to an embodiment, the electronic device may determine a specific hardware accelerator (for example, 122-2) of the second calculator 120 as a suitable calculator.
  • a specific hardware accelerator for example, 122-2
  • the electronic device when the electronic device calculates using both the first calculator 110 and the second calculator 120, the electronic device may synchronize the first calculator 110 with the second calculator 120.
  • Information such as scheduling information and / or calculation result sharing style may be stored and used as metadata.
  • the electronic device when the electronic device uses a plurality of hardware accelerators of the second calculator 120, the electronic device may include metadata including information on a synchronization time between the specific hardware accelerators, scheduling information, and / or an operation result sharing form. Can be stored and used as.
  • the ISA core 112, a separate processor (eg, the processor 250 of FIG. 2), and / or the interface controller 126 may generate metadata.
  • the first calculator 110, the second calculator 120, and / or the interface controller 126 may perform the following operations.
  • the first operation unit 110, the second operation unit 120, and / or the interface controller 126 may store data for a 4-D (convolution) type convolution used in a deep neural network (DNN). You can calculate the address of the memory and arrange the data so that the DSP can use it in a generic form such as a raster order.
  • the DSP can support first input first output (FIFO).
  • the first operator 110, the second operator 120, and / or the interface controller 126 may reduce the number of bits or store a deep neural network (DNN) stored in the form of a compressed sparse matrix.
  • the filter coefficients can be read and passed to the ISA core 112.
  • the electronic device may perform a pipeline operation using machine learning.
  • a pipeline operation using machine learning As an example, an image processing pipeline will be described.
  • Operation according to the image processing pipeline may include operations of pre-processing, selection of a region of interest (ROI), detailed modeling of the ROI, and decision making.
  • ROI region of interest
  • signal preprocessing such as noise removal, color space conversion, image scaling, and / or Gaussian pyramid is performed in an image signal processor (ISP).
  • ISP image signal processor
  • the ISP may be referred to as a camera computing unit.
  • the first operator 110, the second operator 120, and / or the interface controller 126 may include object detection, background subtraction, feature extraction, and image segmentation. ROI selection including image segmentation and / or labeling algorithms (eg, connected-component labeling).
  • the first operator 110, the second operator 120, and / or the interface controller 126 may perform object recognition, tracking, feature matching, and / or gesture recognition. Detailed modeling of the ROI including gesture recognition can be performed. ROI selection and detailed modeling of the ROI may correspond to image processing and neural network operations.
  • the first operator 110, the second operator 120, and / or the interface controller 126 may perform motion analysis, consistency determination (eg, match / no match). May be performed or a decision making operation of determining a flag event may be performed. Decision operations may be referred to as vision and control processing.
  • the first operator 110, the second operator 120, and / or the interface controller 126 may perform a region of interest (ROI) process such as object detection, recognition, and / or tracking.
  • ROI region of interest
  • the first calculator 110, the second calculator 120, and / or the interface controller 126 may perform the determination based on the ROI processing result.
  • the first calculator 110, the second calculator 120, and / or the interface controller 126 may determine movement, consistency, and the like.
  • each operation described above may be performed in the ISA core 112 and / or hardware accelerator (eg, 122-1).
  • the first calculator 110 and / or the interface controller 126 may analyze the workload through profiling neural networks for object tracking and recognition.
  • the ISA core 112 and / or the interface controller 126 of the first calculator 110 may generate metadata through profiling.
  • ISA core 112 and / or interface controller 126 may generate metadata based on workload analysis.
  • the first operator 110 and / or the interface controller 126 may allocate a neural network to be processed by each of the first operator 110 and / or the second operator 120 using metadata.
  • the first operation unit 110 and / or the interface controller 126 may set a memory sharing scheme for sharing each neural network calculation result.
  • the first calculator 110 and / or the interface controller 126 may receive the pre-processed image from the ISP (eg, the camera calculator).
  • the preprocessed image may be referred to as input data.
  • Memory 114 and / or memory 128 may store input data.
  • the memory 114 and / or memory 128 may be a local memory.
  • the input data may be stored in the memory 114.
  • the second calculator 120 may obtain input data stored in the memory 114 through the interface controller 126.
  • the input data may be stored in the memory 128, and the interface controller 126 may transfer the input data stored in the memory 128 to the first calculator 110.
  • the input data may be stored in a memory 114 or a memory 128 having a remaining memory space.
  • the first calculator 110 may perform an assigned neural network operation.
  • the second calculator 120 may perform an assigned neural network operation.
  • the neural network computation in each computing unit may be performed simultaneously or sequentially.
  • the first calculator 110 may perform object tracking and the second calculator 120 may perform object recognition.
  • the operation result or the processing result of the first operation unit 110 may be stored in the memory 114.
  • the calculation result or the processing result of the second calculator 120 may be stored in the memory 128. Operational results or processing results stored in each of the memories 114 and 128 may be shared with each other.
  • the first calculator 110 may perform a final determination (eg, an image recognition result or an operation determination based on the image recognition result) on the input data.
  • the final determination on the input data may be performed by the processor 250 or 350 (eg, a CPU) of FIGS. 2 to 3.
  • the first calculator 110 may transmit a result of the final determination to a higher system such as a processor (eg, a CPU).
  • the first calculator 110 may control the system to perform an operation according to the result of the final determination.
  • the ISA corresponding to the first operator 110 may include a command for performing an operation according to a result of the final determination and / or a command for controlling the system.
  • the efficiency of the operation may be reduced, and when corresponding to various hardware, the operation may be difficult according to algorithm change.
  • Adding hardware for various neural network operations increases the area of the SoC and can increase costs.
  • the operation efficiency may be increased by using hardware designed to perform a specific neural network operation, and the flexibility of the operation may be increased by using a device that operates according to software to perform various neural network operations. have.
  • the present disclosure by sharing the local memory of each computing unit, it is possible to reduce the SoC area and prevent the bottleneck caused by the memory input and output. According to an embodiment of the present disclosure, it is possible to prevent an increase in the SoC area through memory sharing and to prevent an increase in the memory usage generated during neural network operations using local memory.
  • the system may be implemented in the form of SoC.
  • an operation unit that is responsible for operation using software may be connected to a hardware configuration such as a hardware accelerator through a local bus.
  • the configuration of the electronic device illustrated in FIG. 2 is exemplary, and various modifications may be implemented to implement various embodiments disclosed in the present disclosure.
  • the electronic device may include a configuration such as the user terminal 401 illustrated in FIG. 4 and the electronic device 501 illustrated in FIG. 5, or may be appropriately modified by utilizing these configurations.
  • an electronic device or neural network computing system includes an ISA core 212, a memory 214, at least one hardware accelerator 222-1, 222-2,..., 222-N, a mesh network 224. ), An interface controller 226, a memory 228, a system bus 230, a memory controller 242, a system on chip 200 including a processor 250, and a memory 244. .
  • the ISA core 212 and / or the memory 214 may be implemented as one chip (eg, an application processor (AP) chip).
  • AP application processor
  • at least one hardware accelerator 222-1, 222-2,..., 222-N, mesh network 224, interface controller 226, and / or memory 228 are one chip. (E.g., a dedicated chip for neural networks).
  • the interface controller 226, the memory 228 are the ISA core 112, the memory 114, at least one accelerator 122-1, 122-2,..., 122 -N, the mesh network 124 of FIG. 1. ), The interface controller 126, and the memory 128, respectively.
  • description of corresponding or overlapping contents will be omitted.
  • the ISA core 212 may request operation information of a hardware accelerator (eg, 222-1) from the interface controller 226 through the local bus.
  • the processor 250 may request operation information of the hardware accelerator 222-1 from the interface controller 226 through the system bus 230.
  • processor 250 may generate metadata.
  • processor 250 utilizes the results of operations at ISA core 212 and / or at least one hardware accelerator 222-1, 222-2,..., 222-N for input data. Judgment can be performed.
  • the processor 250 may generate control information about the external device or the internal device using the operation result.
  • processor 250 may correspond to a plurality of processors.
  • processor 250 may include a CPU and / or a GPU.
  • the interface controller 226 controls processes such as sharing data (e.g., calculation results) between the ISA core 212 and at least the hardware accelerators 222-1, 222-2,. can do.
  • the interface controller 226 may convert a protocol or perform data transfer rate control.
  • an operation unit eg, the ISA core 212 and the memory 214) in charge of calculation using software according to an embodiment may be configured in a hardware configuration (eg, the interface controller 226 or at least through a local bus).
  • Data stored in the memory 214 (eg, operation results) may be shared with the hardware accelerator (eg, 222-1) according to a request of the interface controller 226.
  • Data stored in memory 228 may be used in ISA core 212 at the request of interface controller 226.
  • the ISA core 212 and the hardware accelerator 222-1 may share data with each other through the interface controller 226 using a local bus.
  • the system bus 230 may serve as a passage for transmitting and receiving data.
  • the system bus 230 may transfer control information of the processor 250.
  • the system bus 230 may pass information stored in the memory 244 to the ISA core 212 and / or at least one hardware accelerator 222-1, 222-2,..., 222-N.
  • the system bus 230 may deliver metadata according to an embodiment.
  • the memory controller 242 may manage data input and output from the memory.
  • the memory controller 242 may be a DRAM controller.
  • Memory 244 may be system memory. In one embodiment, the memory 244 may be a DRAM. The memory 244 may be connected to the SoC 200.
  • FIG. 3 illustrates a configuration of an electronic device or a neural network calculation system according to another exemplary embodiment.
  • an operation unit eg, the ISA core 312 of FIG. 3 in charge of calculation using software may be configured through a local bus or a system bus (eg, hardware accelerator 322-1). )).
  • the ISA core 312 may be connected to a hardware accelerator (eg, 322-1) via the system bus 330 without a local bus.
  • the configuration of the electronic device illustrated in FIG. 3 is exemplary, and various modifications may be implemented to implement various embodiments disclosed in the present disclosure.
  • the electronic device may include a configuration such as the user terminal 401 illustrated in FIG. 4 and the electronic device 501 illustrated in FIG. 5, or may be appropriately modified by utilizing these configurations.
  • an electronic device or neural network computing system includes an ISA core 312, a memory 314, at least one hardware accelerator 322-1, 322-2,..., 322-N, and a mesh network 324. ), An interface controller 326, a memory 328, a system bus 330, a memory controller 342, and a SoC 300 and a memory 344 including at least one of the processor 350.
  • the interface controller 326, the memory 328, the memory controller 342, the memory 344, and the processor 350 may include the ISA core 212, the memory 214, and the at least one accelerator 222-1, FIG. 2. 222-2, ..., 222-N), mesh network 224, interface controller 226, memory 228, memory controller 242, memory 244, and processor 250, respectively.
  • description of corresponding or overlapping contents will be omitted.
  • the ISA core 312 may request operation information of a hardware accelerator (eg, 322-1) from the ISA controller 312 to the interface controller 326 through a local bus.
  • the processor 350 may request operation information of the hardware accelerator (eg, 322-1) from the processor 350 to the interface controller 326 through the system bus 330.
  • the processor 350 may be at least one processor 350. At least one processor may comprise a CPU and / or a GPU. In one embodiment, processor 350 performs profiling for at least one hardware accelerator 322-1, 322-2,..., 322-N, ISA core 312 and at least one hardware accelerator. A suitable calculation unit can be determined for the input data among the (322-1, 322-2, ..., 322-N). In one embodiment, the processor 350 may control the ISA core 312 via a system bus.
  • an operation unit eg, an ISA core 312 and a memory 314) that performs calculation using software according to an embodiment may include at least one hardware accelerator 322 through a local bus and / or a system bus. -1, 322-2,..., 322-N), the interface controller 326, and / or the memory 328.
  • the ISA core 312 uses at least one hardware accelerator 322-1, 322-2,..., 322-N, interface controller 326 and / or memory 328 using only a system bus. ) May be connected.
  • Data stored in the memory 314 connected to the ISA core 312 (eg, operation results) may be shared with the hardware accelerator (eg, 322-1) at the request of the interface controller 326.
  • Data stored in the memory 328 may be used in the ISA core 312 at the request of the interface controller 326.
  • the ISA core 312 and the hardware accelerator (eg, 322-2) may share data with each other through the interface controller 326.
  • the system bus 330 may serve as a passage for transmitting and receiving data.
  • system bus 330 may be used to transfer data between ISA core 312 and interface controller 326.
  • the system bus 330 may transfer the operation result of the ISA core 312 stored in the memory 314 to the interface controller 326.
  • the memory controller 342 may manage data input and output from the memory 344.
  • the memory controller 342 may be a DRAM controller.
  • Memory 344 may be system memory. In one embodiment, the memory 344 may be DRAM. The memory 344 may be connected to the SoC 300. In an embodiment, the memory 344 may be connected to the DRAM controller 342 included in the SoC 300.
  • the electronic device may simultaneously use two operator sources (eg, an ISA core 312 and a hardware accelerator (eg, 322-1)).
  • two operator sources eg, an ISA core 312 and a hardware accelerator (eg, 322-1)
  • a hardware accelerator eg, 322-1
  • the hardware accelerator may perform a simple operation of the neural network, and the ISA core 312 may perform another operation by using intermediate information.
  • the electronic device may store information of an intermediate level among calculation results of the hardware accelerator in the memory 314.
  • the ISA core 312 may use intermediate information stored in the memory 314.
  • the ISA core 312 may perform operations or processing based on the intermediate information.
  • the interface controller 326 may perform an operation according to a connection protocol to transfer intermediate information to the ISA core 312 or the memory 314.
  • each neural network may be operated by a hardware accelerator (eg, 322-1) and an ISA core 312.
  • the hardware accelerator can operate neural networks related to simple computations and the ISA core 312 can operate neural networks that require a large amount of control.
  • Computation suitable for the hardware accelerator may be determined by at least one of the ISA core 312, the interface controller 326, or the processor 350.
  • An operation suitable for the ISA core 312 may be determined by at least one of the ISA core 312, the interface controller 326, or the processor 350.
  • the electronic device may use two operator sources in succession. If two neural networks operate in succession (e.g., using the results of one neural network operation as input to another neural network), the ISA core 312 and the hardware accelerator (e.g. 322-1) can be used in succession.
  • the output at the ISA core 312 can be the input of the hardware accelerator or the output at the hardware accelerator can be the input of the ISA core 312.
  • neural network operations may be efficiently performed.
  • the ISA core it can cope with various neural network structures according to application fields and can increase the flexibility of computation by taking charge of intermediate information processing.
  • the energy efficiency can be improved by performing simple operation iterations.
  • FIG. 4 illustrates an electronic device in a network environment according to various embodiments of the present disclosure.
  • the electronic device 401, the first electronic device 402, the second electronic device 404, or the server 406 may communicate with the network 462 or the local area communication 464. Can be connected to each other.
  • the electronic device 401 may include a bus 410, a processor 420, a memory 430, an input / output interface 450, a display 460, and a communication interface 470.
  • the electronic device 401 may omit at least one of the components or additionally include other components.
  • the bus 410 may include, for example, circuitry that couples the components 410-470 to each other and communicates communication (eg, control messages and / or data) between the components.
  • the processor 420 may include one or more of a Central Processing Unit (CPU), an Application Processor (AP), or a Communication Processor (CP).
  • the processor 420 may execute, for example, an operation or data processing related to control and / or communication of at least one other component of the electronic device 401.
  • the memory 430 may include volatile and / or nonvolatile memory.
  • the memory 430 may store, for example, commands or data related to at least one other element of the electronic device 401.
  • the memory 430 may store software and / or a program 440.
  • the program 440 may be, for example, a kernel 441, middleware 443, an application programming interface (API) 445, and / or an application program (or “application”) 447, or the like. It may include. At least a portion of kernel 441, middleware 443, or API 445 may be referred to as an operating system (OS).
  • OS operating system
  • the kernel 441 may be, for example, system resources (e.g., used to execute an action or function implemented in other programs (e.g., middleware 443, API 445, or application program 447).
  • the bus 410, the processor 420, or the memory 430 may be controlled or managed.
  • the kernel 441 may provide an interface for controlling or managing system resources by accessing individual components of the electronic device 401 from the middleware 443, the API 445, or the application program 447. Can be.
  • the middleware 443 may serve as an intermediary for allowing the API 445 or the application program 447 to communicate with the kernel 441 to exchange data.
  • the middleware 443 may process one or more work requests received from the application program 447 according to priority.
  • the middleware 443 may use system resources (eg, the bus 410, the processor 420, or the memory 430, etc.) of the electronic device 401 for at least one of the application programs 447. Priority can be given.
  • the middleware 443 may perform scheduling or load balancing on the one or more work requests by processing the one or more work requests according to the priority given to the at least one.
  • the API 445 is, for example, an interface for the application 447 to control functions provided by the kernel 441 or the middleware 443, for example, file control, window control, image processing, or text. It may include at least one interface or function (eg, a command) for control.
  • the input / output interface 450 may serve as, for example, an interface capable of transferring a command or data input from a user or another external device to other component (s) of the electronic device 401.
  • the input / output interface 450 may output a command or data received from other component (s) of the electronic device 401 to a user or another external device.
  • the display 460 may be, for example, a liquid crystal display (LCD), a light-emitting diode (LED) display, an organic light emitting diode (OLED) display, or microelectromechanical. Microelectromechanical systems (MEMS) displays, or electronic paper displays.
  • the display 460 may display, for example, various contents (eg, text, an image, a video, an icon, or a symbol) to the user.
  • the display 460 may include a touch screen, and may receive a touch, gesture, proximity, or hovering input using, for example, an electronic pen or a part of a user's body.
  • the communication interface 470 may establish communication between the electronic device 401 and an external device (eg, the first electronic device 402, the second electronic device 404, or the server 406).
  • the communication interface 470 may be connected to the network 462 through wireless or wired communication to communicate with an external device (eg, the second electronic device 404 or the server 406).
  • Wireless communication is, for example, a cellular communication protocol, for example, Long-Term Evolution (LTE), LTE-Advanced (LTE-A), Code Division Multiple Access (CDMA), Wideband CDMA (WCDMA), and Universal Mobile (UMTS). At least one of Telecommunications System, WiBro, or Global System for Mobile Communications (GSM) may be used. Wireless communication may also include, for example, near field communication 464.
  • the short range communication 464 may include, for example, at least one of wireless fidelity (Wi-Fi), Bluetooth, near field communication (NFC), magnetic stripe transmission (MST), or GNSS.
  • the MST generates a pulse according to the transmission data using an electromagnetic signal, and the pulse may generate a magnetic field signal.
  • the electronic device 401 transmits the magnetic field signal to a point of sales, and the POS detects the magnetic field signal using an MST reader and converts the detected magnetic field signal into an electrical signal. Can be restored.
  • GNSS may be, for example, global positioning system (GPS), global navigation satellite system (Glonass), beidou navigation satellite system (“Beidou”), or Galileo (the European global satellite-based navigation system), depending on the region of use or bandwidth. It may include at least one of.
  • GPS global positioning system
  • Glonass global navigation satellite system
  • Beidou beidou navigation satellite system
  • Galileo the European global satellite-based navigation system
  • the wired communication may include, for example, at least one of a universal serial bus (USB), a high definition multimedia interface (HDMI), a reduced standard-232 (RS-232), a plain old telephone service (POTS), and the like.
  • the network 462 may include a telecommunications network, for example, at least one of a computer network (for example, a LAN or a WAN), the Internet, and a telephone network.
  • Each of the first electronic device 402 and the second electronic device 404 may be the same or different type of device as the electronic device 401.
  • the server 406 may include a group of one or more servers. According to various embodiments of the present disclosure, all or some of the operations performed by the electronic device 401 may be performed by one or more other electronic devices (eg, the first electronic device 402, the second electronic device 404, or the server 406). Can be run from According to an embodiment of the present disclosure, when the electronic device 401 needs to perform a function or service automatically or by request, the electronic device 401 may instead or additionally execute the function or service by itself.
  • At least some associated functions may be requested from another electronic device (eg, the first electronic device 402, the second electronic device 404, or the server 406).
  • the other electronic device may execute the requested function or the additional function and transmit the result to the electronic device 401.
  • the electronic device 401 may provide the requested function or service by processing the received result as it is or additionally.
  • cloud computing, distributed computing, or client-server computing technology may be used.
  • FIG. 5 is a block diagram of an electronic device according to various embodiments of the present disclosure.
  • the electronic device 501 may include, for example, all or part of the electronic device 401 illustrated in FIG. 4.
  • the electronic device 501 may include one or more processors (eg, an AP) 510, a communication module 520, a subscriber identification module 524, a memory 530, a sensor module 540, an input device 550, a display ( 560, an interface 570, an audio module 580, a camera module 591, a power management module 595, a battery 596, an indicator 597, and a motor 598.
  • processors eg, an AP
  • a communication module 520 e.g., a communication module 520, a subscriber identification module 524, a memory 530, a sensor module 540, an input device 550, a display ( 560, an interface 570, an audio module 580, a camera module 591, a power management module 595, a battery 596, an indicator 597, and a motor 598.
  • a display 560
  • the processor 510 may control, for example, a plurality of hardware or software components connected to the processor 510 by running an operating system or an application program, and may perform various data processing and operations.
  • the processor 510 may be implemented with, for example, a system on chip (SoC).
  • SoC system on chip
  • the processor 510 may further include a graphic processing unit (GPU) and / or an image signal processor.
  • the processor 510 may include at least some of the components illustrated in FIG. 5 (eg, the cellular module 521).
  • the processor 510 may load and process instructions or data received from at least one of the other components (eg, nonvolatile memory) into the volatile memory, and store various data in the nonvolatile memory. have.
  • the communication module 520 may have a configuration that is the same as or similar to that of the communication interface 470 of FIG. 4.
  • the communication module 520 may be, for example, a cellular module 521, a Wi-Fi module 522, a Bluetooth module 523, a GNSS module 524 (eg, a GPS module, a Glonass module, a Beidou module, or a Galileo). Module), NFC module 525, MST module 526, and RF (radio frequency) module 527.
  • the cellular module 521 may provide, for example, a voice call, a video call, a text service, or an internet service through a communication network. According to an embodiment of the present disclosure, the cellular module 521 may perform identification and authentication of the electronic device 501 in a communication network using a subscriber identification module (eg, a SIM card) 529. According to an embodiment of the present disclosure, the cellular module 521 may perform at least some of the functions that the processor 510 may provide. According to an embodiment of the present disclosure, the cellular module 521 may include a communication processor (CP).
  • CP communication processor
  • Each of the Wi-Fi module 522, the Bluetooth module 523, the GNSS module 524, the NFC module 525, or the MST module 526 processes data transmitted and received through the corresponding module. It may include a processor for. According to some embodiments, at least some of the cellular module 521, the Wi-Fi module 522, the Bluetooth module 523, the GNSS module 524, the NFC module 525, or the MST module 526 (eg, Two or more) may be included in one integrated chip (IC) or IC package.
  • IC integrated chip
  • the RF module 527 may transmit and receive a communication signal (for example, an RF signal), for example.
  • the RF module 527 may include, for example, a transceiver, a power amp module (PAM), a frequency filter, a low noise amplifier (LNA), an antenna, or the like.
  • PAM power amp module
  • LNA low noise amplifier
  • at least one of the cellular module 521, the Wi-Fi module 522, the Bluetooth module 523, the GNSS module 524, the NFC module 525, and the MST module 526 may be a separate RF.
  • the module can transmit and receive RF signals.
  • Subscriber identification module 529 may include, for example, a card containing a subscriber identification module and / or an embedded SIM, and may include unique identification information (eg, an integrated circuit card identifier (ICCID)) or It may include subscriber information (eg, international mobile subscriber identity).
  • ICCID integrated circuit card identifier
  • the memory 530 may include, for example, an internal memory 532 or an external memory 534.
  • the internal memory 532 may be, for example, volatile memory (eg, dynamic RAM (DRAM), static RAM (SRAM), or synchronous dynamic RAM (SDRAM), etc.), non-volatile memory (eg, One time programmable ROM (OTPROM), programmable ROM (PROM), erasable and programmable ROM (EPROM), electrically erasable and programmable ROM (EPEROM), mask ROM, flash ROM, flash memory (e.g., NAND flash) (NAND flash or NOR flash, etc.), a hard drive, or a solid state drive (SSD).
  • volatile memory eg, dynamic RAM (DRAM), static RAM (SRAM), or synchronous dynamic RAM (SDRAM), etc.
  • non-volatile memory eg, One time programmable ROM (OTPROM), programmable ROM (PROM), erasable and programmable ROM (EPROM), electrically
  • the external memory 534 may be a flash drive, for example, compact flash (CF), secure digital (SD), Micro-SD, Mini-SD, extreme digital (XD), MultiMediaCard (MMC), or memory. It may further include a stick (memory stick).
  • the external memory 534 may be functionally and / or physically connected to the electronic device 501 through various interfaces.
  • the security module 536 is a module including a storage space having a relatively higher security level than the memory 530, and may be a circuit that guarantees safe data storage and a protected execution environment.
  • the security module 536 may be implemented as a separate circuit and may include a separate processor.
  • the security module 536 may include, for example, an embedded secure element (eSE) existing in a removable smart chip, a secure digital (SD) card, or embedded in a fixed chip of the electronic device 501. It may include.
  • the security module 536 may be driven by an operating system different from the operating system (OS) of the electronic device 501.
  • OS operating system
  • the security module 536 may operate based on a java card open platform (JCOP) operating system.
  • JCOP java card open platform
  • the sensor module 540 may measure a physical quantity or detect an operation state of the electronic device 501 to convert the measured or detected information into an electrical signal.
  • the sensor module 540 includes, for example, a gesture sensor 540A, a gyro sensor 540B, an air pressure sensor 540C, a magnetic sensor 540D, an acceleration sensor 540E, a grip sensor 540F, and a proximity sensor ( 540G), at least one of a color sensor 540H (e.g., an RGB sensor), a biometric sensor 540I, a temperature / humidity sensor 540J, an illuminance sensor 540K, or an ultraviolet (ultra violet) sensor 540M. can do.
  • a gesture sensor 540A e.g., a gyro sensor 540B, an air pressure sensor 540C, a magnetic sensor 540D, an acceleration sensor 540E, a grip sensor 540F, and a proximity sensor ( 540G)
  • a color sensor 540H e.
  • the sensor module 540 may include, for example, an olfactory sensor, an electromyography sensor, an electroencephalogram sensor, an electrocardiogram sensor, an infrared sensor, an iris. Sensors and / or fingerprint sensors.
  • the sensor module 540 may further include a control circuit for controlling at least one or more sensors belonging therein.
  • the electronic device 501 further includes a processor configured to control the sensor module 540 as part of or separately from the processor 510, while the processor 510 is in a sleep state, The sensor module 540 may be controlled.
  • the input device 550 may be, for example, a touch panel 552, a (digital) pen sensor 554, a key 556, or an ultrasonic input device ( 558).
  • the touch panel 552 may use at least one of capacitive, resistive, infrared, or ultrasonic methods, for example.
  • the touch panel 552 may further include a control circuit.
  • the touch panel 552 may further include a tactile layer to provide a tactile response to the user.
  • the (digital) pen sensor 554 may be, for example, part of a touch panel or may include a separate sheet for recognition.
  • the key 556 may include, for example, a physical button, an optical key, or a keypad.
  • the ultrasonic input device 558 may detect ultrasonic waves generated by an input tool through a microphone (for example, a microphone 588) and check data corresponding to the detected ultrasonic waves.
  • Display 560 may include panel 562, hologram device 564, or projector 566.
  • the panel 562 may include a configuration that is the same as or similar to the display 460 of FIG. 4.
  • the panel 562 may be implemented to be, for example, flexible, transparent, or wearable.
  • the panel 562 may be configured as a single module with the touch panel 552.
  • the hologram device 564 may show a stereoscopic image in the air by using interference of light.
  • the projector 566 may display an image by projecting light onto a screen.
  • the screen may be located inside or outside the electronic device 501.
  • the display 560 may further include a control circuit for controlling the panel 562, the hologram device 564, or the projector 566.
  • the interface 570 may include, for example, an HDMI 572, a USB 574, an optical interface 576, or a D-subminiature 578.
  • the interface 570 may be included in, for example, the communication interface 470 illustrated in FIG. 4. Additionally or alternatively, the interface 570 may include, for example, a mobile high-definition link (MHL) interface, an SD card / MMC interface, or an infrared data association (IrDA) compliant interface.
  • MHL mobile high-definition link
  • IrDA infrared data association
  • the audio module 580 may bidirectionally convert, for example, a sound and an electrical signal. At least some components of the audio module 580 may be included in, for example, the input / output interface 450 illustrated in FIG. 4. The audio module 580 may process sound information input or output through, for example, a speaker 582, a receiver 584, an earphone 586, a microphone 588, or the like.
  • the camera module 591 is, for example, a device capable of capturing still images and moving images.
  • at least one image sensor eg, a front sensor or a rear sensor
  • a lens e.g., a lens
  • ISP image signal processor
  • flash e.g., LEDs or xenon lamps
  • the power management module 595 may manage power of the electronic device 501, for example.
  • the power management module 595 may include a power management integrated circuit (PMIC), a charger integrated circuit (ICC), or a battery or fuel gauge.
  • the PMIC may have a wired and / or wireless charging scheme.
  • the wireless charging method may include, for example, a magnetic resonance method, a magnetic induction method, an electromagnetic wave method, or the like, and may further include additional circuits for wireless charging, such as a coil loop, a resonance circuit, a rectifier, and the like. have.
  • the battery gauge may measure, for example, the remaining amount of the battery 596, the voltage, the current, or the temperature during charging.
  • the battery 596 may include, for example, a rechargeable battery and / or a solar battery.
  • the indicator 597 may display a specific state of the electronic device 501 or a part thereof (for example, the processor 510), for example, a booting state, a message state, or a charging state.
  • the motor 598 may convert an electrical signal into mechanical vibration, and may generate a vibration or haptic effect.
  • the electronic device 501 may include a processing device (eg, a GPU) for supporting mobile TV.
  • the processing device for supporting mobile TV may process media data according to a standard such as Digital Multimedia Broadcasting (DMB), Digital Video Broadcasting (DVB), or MediaFLO TM .
  • DMB Digital Multimedia Broadcasting
  • DVD Digital Video Broadcasting
  • MediaFLO TM MediaFLO
  • each of the components described in this document may be composed of one or more components, and the name of the corresponding component may vary according to the type of electronic device.
  • the electronic device may be configured to include at least one of the components described in this document, and some components may be omitted or further include other additional components.
  • some of the components of the electronic device according to various embodiments of the present disclosure may be combined to form one entity, and thus may perform the same functions of the corresponding components before being combined.
  • module may refer to a unit that includes one or a combination of two or more of hardware, software, or firmware.
  • a “module” may be interchangeably used with terms such as, for example, unit, logic, logical block, component, or circuit.
  • the module may be a minimum unit or part of an integrally constructed part.
  • the module may be a minimum unit or part of performing one or more functions.
  • the “module” can be implemented mechanically or electronically.
  • a “module” is one of application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), or programmable-logic devices that perform certain operations, known or developed in the future. It may include at least one.
  • ASIC application-specific integrated circuit
  • FPGAs field-programmable gate arrays
  • an apparatus eg, modules or functions thereof
  • a method eg, operations
  • computer-readable storage media in the form of a program module. It can be implemented as a command stored in.
  • the command is executed by a processor (eg, the processor 420)
  • the one or more processors may perform a function corresponding to the command.
  • the computer-readable storage medium may be, for example, the memory 430.
  • Computer-readable recording media include hard disks, floppy disks, magnetic media (e.g. magnetic tapes), optical media (e.g. CD-ROMs, digital versatile discs), magnetic- Optical media (eg floptical disks), hardware devices (eg ROM, RAM, flash memory, etc.), etc.
  • program instructions may be created by a compiler. It may include not only machine code, such as losing, but also high-level language code executable by a computer using an interpreter, etc.
  • the hardware device described above may be configured to operate as one or more software modules to perform the operations of various embodiments. And vice versa.
  • Modules or program modules according to various embodiments of the present disclosure may include at least one or more of the above components, some of them may be omitted, or may further include other additional components.
  • Operations performed by a module, program module, or other component according to various embodiments of the present disclosure may be executed in a sequential, parallel, repetitive, or heuristic manner. In addition, some operations may be executed in a different order, may be omitted, or other operations may be added.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)
  • Image Analysis (AREA)

Abstract

전자 장치가 개시된다. 상기 전자 장치는, 복수의 신경망 연산 중 어느 하나의 신경망 연산을 수행할 수 있는 제1 연산부, 지정된 신경망 연산을 수행하도록 설정된 하드웨어 가속기를 포함하는 제2 연산부, 및 상기 제1 연산부 및 상기 제2 연산부 사이에 연결되는 인터페이스 컨트롤러(interface controller)를 포함할 수 있다. 이 외에도 명세서를 통해 파악되는 다양한 실시 예가 가능하다.

Description

신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치
본 문서에서 개시되는 실시 예들은, 신경망 연산을 이용하여 입력 데이터를 처리하는 기술과 관련된다.
최근 머신 러닝(machine learning)의 응용분야가 확장됨에 따라 다양한 신경망 구조가 제안되고 있다. 계층 별로 활용 가능한 정보가 상이하여 최종 단계의 결과뿐만 아니라 중간 단계의 정보도 활용하는 신경망 구조에 대하여도 연구가 진행되고 있다. 또한, 응용분야별로 신경망의 종류가 상이할 수 있으며, 두 개 이상의 이종 신경망이 동시에 사용될 수도 있다. 이종 신경망 연산의 연산 결과는 응용분야에 따라 독립적으로 사용될 수도 있으며 선후관계를 가지며 서로 영향을 줄 수도 있다.
머신 러닝 분야에서는, 신경망 연산의 연산효율을 향상시키고 메모리 사용량을 절감시키기 위한 전용 하드웨어 설계 연구가 진행되고 있다. 이종 신경망 연산 등 다양한 신경망 연산이 제안됨에 따라 신경망 연산을 위한 다양한 알고리즘이 개발되고 있다.
종래의 신경망 연산을 위해 설계된 하드웨어는 단순 연산을 가속하기 때문에 다양한 신경망 구조에 대응하기에는 한계가 있다. 계층 중간 단계의 정보를 제어하거나 활용하는 경우 유연성 제약으로 처리속도가 저하될 수 있다. 종래의 신경망 연산을 위해 설계된 하드웨어만을 이용하는 경우에는 신경망 모델이 대략 수백 MB를 차지하므로, 다양한 신경망 연산이 필요한 경우에 SOC(system on chip)의 면적이 증가할 수 있다. 또한, 신경망 연산을 위해 큰 용량의 메모리가 필요하므로, 소프트웨어에 따른 동작을 수행하는 신경망 연산 장치 및 특정 신경망 연산을 수행하도록 설계된 하드웨어를 모두 이용하더라도 로컬 메모리 용량은 수백 KB이상이 된다. 로컬 메모리 용량을 증대시키는 경우에도 SoC의 용량이 증가하게 된다. 계층 중간 단계의 데이터를 공유하기 위해 외부 메모리를 도입하는 경우에는 처리 속도의 저하로 이어질 수 있다.
본 문서에서 개시되는 다양한 실시 예들은, 위에서 언급한 기존의 신경망 연산을 수행하는 하드웨어가 가지는 문제점을 해결하고, 제한된 시스템 환경에서도 유연한 신경망 연산을 보장할 수 있는 새로운 시스템과 운영 방법을 제시한다.
본 문서에 개시되는 일 실시 예에 따른 전자 장치는, 복수의 신경망 연산 중 어느 하나의 신경망 연산을 수행할 수 있는 제1 연산부, 지정된 신경망 연산을 수행하도록 설정된 하드웨어 가속기를 포함하는 제2 연산부, 및 상기 제1 연산부 및 상기 제2 연산부 사이에 연결되는 인터페이스 컨트롤러(interface controller)를 포함할 수 있다.
본 문서에 개시되는 다른 실시 예에 따른 전자 장치는, SoC(system on chip), 및 상기 SoC와 전기적으로 연결된 제1 메모리를 포함할 수 있다. 상기 SoC는, 적어도 하나의 프로세서, 복수개의 신경망 연산 중 어느 하나를 수행하도록 설정된 코어, 지정된 신경망 연산을 수행하도록 설정된 하드웨어 가속기, 상기 코어에서의 제1 신경망 연산 결과를 저장하기 위한 제2 메모리, 상기 하드웨어 가속기의 연산 결과를 저장하기 위한 제3 메모리, 및 상기 제2 메모리 및 상기 제3 메모리 사이에 연결되는 인터페이스 컨트롤러(interface controller)를 포함할 수 있다.
또한, 본 문서에 개시되는 일 실시 예에 따른 방법은, 공통된 하드웨어를 이용하여 복수의 신경망 연산을 수행할 수 있는 제1 연산부 또는 지정된 신경망 연산을 수행하도록 설정된 하드웨어 가속기를 포함하는 제2 연산부 중 입력 데이터에 대한 신경망 연산을 수행하기 위한 적어도 하나의 연산부를 결정하는 동작, 및 상기 결정된 적어도 하나의 연산부를 이용하여 상기 입력 데이터에 대한 신경망 연산을 수행하는 동작을 포함할 수 있다.
본 문서에 개시되는 실시 예들에 따르면, 적은 시스템 공간을 이용하여 다양한 신경망 연산을 수행할 수 있다.
본 문서에 개시되는 실시 예들에 따르면, 다양한 상황별로 신경망 연산을 유연하게 수행할 수 있다.
이 외에, 본 문서를 통해 직접적 또는 간접적으로 파악되는 다양한 효과들이 제공될 수 있다.
도 1은 일 실시 예에 따른 신경망 연산을 수행하는 전자 장치의 구성을 나타내는 블록도이다.
도 2는 다른 실시 예에 따른 신경망 연산을 수행하는 전자 장치의 구성을 나타내는 블록도이다.
도 3은 또 다른 실시 예에 따른 신경망 연산을 수행하는 전자 장치의 구성을 나타내는 블록도이다.
도 4는 일 실시 예에 따른 네트워크 환경 내의 전자 장치를 나타낸다.
도 5는 일 실시 예에 따른 전자 장치의 블록도를 나타낸다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시 예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다", "가질 수 있다", "포함한다", 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B", "A 또는/및 B 중 적어도 하나", 또는 "A 또는/및 B 중 하나 또는 그 이상" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B", "A 및 B 중 적어도 하나", 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (7) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 문서에서 사용된 "제1", "제2", "첫째", 또는 "둘째" 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 예를 들면, 제1 사용자 기기와 제2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 문서에 기재된 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)", "~하는 능력을 가지는(having the capacity to)", "~하도록 설계된(designed to)", "~하도록 변경된(adapted to)", "~하도록 만들어진(made to)", 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성(또는 설정)된"은 하드웨어적으로 "특별히 설계된(specifically designed to)"것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성(또는 설정)된 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시 예들을 배제하도록 해석될 수 없다.
본 문서의 다양한 실시 예들에 따른 전자 장치는, 예를 들면, 스마트폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 영상 전화기, 전자책 리더기(e-book reader), 데스크톱 PC (desktop PC), 랩탑 PC(laptop PC), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라, 또는 웨어러블 장치(wearable device) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예에 따르면 웨어러블 장치는 엑세서리 형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체 형(예: 전자 의복), 신체 부착 형(예: 스킨 패드(skin pad) 또는 문신), 또는 생체 이식 형(예: implantable circuit) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에서, 전자 장치는 가전 제품(home appliance)일 수 있다. 가전 제품은, 예를 들면, 텔레비전, DVD 플레이어(Digital Video Disk player), 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), 홈 오토매이션 컨트롤 패널(home automation control panel), 보안 컨트롤 패널(security control panel), TV 박스(예: 삼성 HomeSync™, 애플TV™, 또는 구글 TV™), 게임 콘솔(예: Xbox™, PlayStation™), 전자 사전, 전자 키, 캠코더, 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시 예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 내비게이션(navigation) 장치, 위성 항법 시스템(GNSS(Global Navigation Satellite System)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller's machine), 상점의 POS(point of sales), 또는 사물 인터넷 장치(internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기(thermostat), 가로등, 토스터(toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예에 따르면, 전자 장치는 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시 예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한, 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시 예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
일 실시 예에 따른 전자 장치는 ISA(instruction set architecture) 코어(core)와 하드웨어 가속기(hardware accelerator)를 포함하는 신경망 연산기를 포함할 수 있다. 예를 들어, 도 1을 참조하면, 전자 장치는 ISA 코어(112)를 포함하는 제1 연산부(110) 및/또는 하드웨어 가속기를 포함하는 제2 연산부(120)를 포함할 수 있다. 도 1에 도시된 전자 장치의 구성은 예시적인 것이며, 본 문서에 개시되는 다양한 실시 예를 구현할 수 있는 다양한 변형이 가능하다. 예를 들어, 전자 장치는 도 2 내지 도 3의 전자 장치, 도 4에 도시된 사용자 단말(401), 도 5에 도시된 전자 장치(501)와 같은 구성을 포함하거나, 이 구성들을 활용하여 적절하게 변형될 수 있다.
제1 연산부(110)는 공통된 하드웨어를 이용하여 복수의 신경망 연산을 수행할 수 있다. 제1 연산부(110)는 소정 명령어 세트에 따라 다양한 신경망 구조에 대응하는 연산을 수행할 수 있다. 제1 연산부(110)는 계층 중간 단계의 정보를 처리할 수 있다. 제1 연산부(110)는 제2 연산부(120)의 신경망 연산을 제어할 수 있다. 제1 연산부(110)는 ISA 코어(112) 및/또는 메모리(114)를 포함할 수 있다.
ISA 코어(112)는 중앙 처리 장치(CPU; central processing unit) 또는 프로세서가 구동하기 위한 필수적인 요소일 수 있다. ISA 코어(112)는 프로세서에 대응할 수 있다. 일 실시 예에서, ISA 코어(112)는 프로세서의 일부분일 수 있다. ISA 코어(112)는 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치한 논리 블록을 나타낼 수 있다.
ISA는 명령어 집합 구조 또는 명령어를 처리하는 방식을 나타낼 수 있다. ISA는 프로세서 또는 ISA 코어(112)가 이해할 수 있는 명령어를 나타낼 수 있다. ISA는 하드웨어와 하위 레벨 소프트웨어 사이의 추상화된 인터페이스(interface)일 수 있다. ISA는 OS(operating system)와 하드웨어 사이의 계층에 위치해 양자 간의 의사소통을 도울 수 있다. 명령어 집합 구조는 자료형, 명령어, 레지스터, 어드레싱 모드(addressing mode), 메모리 구조, 예외 처리, 외부 입출력을 포함한 프로그래밍 관련 컴퓨터 아키텍처의 일부일 수 있다. ISA는 연산어 종류, 피연산자 타입, 레지스터 개수, 인코딩 방법 등 여러가지를 정의할 수 있다. 프로세서가 이해하는 명령어 각각은 인스트럭션(instruction)으로 참조될 수 있다. DSP(digital signal processor) 또는 GPU(graphic processing unit)와 같은 프로세서는 특정 ISA를 구현할 수 있다. 상이한 타입의 OS(operating system)는 상이한 ISA에 따라 설계된 프로세서 상에서 실행될 수 있다.
ISA 코어(112)는 특정 ISA 타입에 따라 설계된 코어일 수 있다. 예를 들어, ISA 코어(112)는 CISC(complex instruction set computer) 코어 또는 RISC(reduced instruction set computer) 코어일 수 있다. ISA 코어(112)는 프로세서에서 실행 가능한 명령어를 정의하는 ISA와 연관되어 있다. ISA 코어(112)는 상기 명령어를 인식하고 상기 ISA에 의해 정의된 대로 처리하기 위해, 파이프 라인(pipeline)의 동작을 수행할 수 있다.
ISA 코어(112)는 실행 사이클(execution cycle) 또는 추출 사이클(extraction cycle)을 수행할 수 있다. 파이프 라인은 실행 사이클과 추출 사이클을 중첩시켜 하나의 명령이 프로세스 내에서 수행되고 있는 동안 메모리에서 다른 명령을 가져오는 동작을 의미할 수 있다. 파이프 라인은 프로세서의 처리 속도를 빠르게 하기 위하여 1개의 명령 실행을 복수의 처리 단위로 나누어 병렬로 처리하는 방법일 수 있다. 명령 파이프 라인은 다른 프로세서 사이클을 포함하도록 확장될 수 있다. 명령 파이프 라인은 대기 형렬(queue)의 성격을 가지는 FIFO(first in first out) 버퍼를 이용하여 구성될 수 있다. 다양한 실시 예에 따르면, 프로세서는 하나 또는 다수의 ISA 코어(예: 112)를 포함할 수 있다. 프로세서는 마이크로 프로세서(microprocessor), 임베디드 프로세서(embedded processor), DSP, 네트워크 프로세서(network processor) 또는 코드를 실행하는 임의의 프로세서를 포함할 수 있다.
ISA 코어(112)는 신경망 연산을 효율적으로 활용하기 위해 프로파일링(profiling)을 수행할 수 있다. 적어도 하나의 신경망을 동작시킬 경우, ISA 코어(112)는 동작 전에 프로파일링을 수행할 수 있다. ISA 코어(112)는 신경망의 특징을 분석할 수 있다. ISA 코어(112)는 분석한 신경망의 특징을 메타데이터로 저장할 수 있다. ISA 코어(112)는 메타데이터 또는 명령어를 각각의 연산부(110, 120)에 로딩할 수 있다. ISA 코어(112)는 상기 ISA 코어(112)에서의 연산과 적어도 하나의 하드웨어 가속기(122-1, 122-2, ……, 122-N)에서의 시작과 종료를 제어하는 스케줄링을 수행할 수 있다. ISA 코어(112)는 API(application programming interface)를 통해 로딩 또는 스케줄링 등을 수행할 수 있다.
ISA 코어(112)는 프로파일링 결과를 연산부 간의 동기화 시점 결정, 각 신경망의 스케줄링 등에 활용할 수 있다. ISA 코어(112)는 프로파일링 결과를 이용하여 제2 연산부(120)의 동작을 제어할 수 있다. ISA 코어(112)는 제2 연산부(120)의 동작을 제어하기 위한 신호 또는 명령을 생성할 수 있다. ISA 코어(112)의 기능 중 적어도 일부 기능은 다른 구성에 의해 수행될 수 있다. 예를 들어, 신경망의 프로파일링은 인터페이스 컨트롤러(interface controller, 126), 도 2의 프로세서(250), 또는 도 3의 프로세서(350)에 의해 수행될 수도 있다.
일 실시 예에서, 메타데이터는 해당 신경망의 종류, 계층 수, 연산 별로 적합한 연산부(예: 110 또는 120), 예상 연산 시간, 연산부 간 데이터 공유 양식, 연산부간 데이터 공유 시점, 신경망 모델 및/또는 데이터 압축 방식 등의 정보를 포함할 수 있다. 일 실시 예에서, 두 개 이상의 신경망이 동작할 수 있다. 이 경우, 메타데이터는 동작할 연산부에 대한 정보, 스케줄링 및/또는 동기화 방식, 연산 결과 공유 양식, 연산 결과 공유 시점 및/또는 연산 결과 통합 방법 등의 정보를 포함할 수 있다.
일 실시 예에서, ISA 코어(112)는 메모리(114) 또는 메모리(128) 중 연산 결과를 저장하기 위한 메모리를 결정할 수도 있다. ISA 코어(112)는 메모리(114) 또는 메모리(128) 중 메모리 공간이 남아있는 메모리에 연산 결과를 저장하도록 할 수 있다.
메모리(114)는 제1 연산부(110)에서의 연산 결과를 저장할 수 있다. 일 실시 예에서, 메모리(114)는 제2 연산부(120)에서의 연산 결과를 저장할 수도 있다. 연산 결과는, 신경망 연산의 중간 계층의 결과, 출력 계층의 결과를 포함할 수 있다. 중간 계층의 결과는 숨은 계층(hidden layer)의 연산 결과일 수 있다. 중간 계층의 결과는 숨은 계층의 픽셀 값 중 적어도 하나를 포함할 수 있다. 메모리(114)는 저장된 정보를 ISA 코어(112)로 전달할 수 있다. 메모리(114)에 저장된 정보는 인터페이스 컨트롤러(126)를 통해 외부 장치(예: 하드웨어 가속기1(122-1))와 공유될 수 있다. 일 실시 예에서, 메모리(114)는 캐시(cache) 메모리, 버퍼(buffer) 메모리 또는 로컬(local) 메모리일 수 있다. 일 실시 예에서, 메모리(114)는 SRAM(static random access memory)일 수 있다. 메모리(114)는 본 문서에 기재된 실시 예들에 따른 메타데이터를 저장할 수도 있다. 일 실시 예에서, 메모리(114)는 스크래치 패드(scratch pad) 및/또는 원형 버퍼(circular buffer)를 포함할 수 있다.
제2 연산부(120)는 하드웨어 가속기 1, 2, ……, N(122-1, 122-2, ……, 122-N)를 포함할 수 있다. 제2 연산부(120)는 지정된 신경망 연산을 수행하도록 설정된 하드웨어 가속기를 포함할 수 있다. 서로 다른 하드웨어 가속기(예: 122-1, 122-2)는 이종 신경망 연산을 수행할 수 있다.
적어도 하나의 하드웨어 가속기(122-1, 122-2, ……, 122-N)는 전자 장치의 일부 기능을 수행하는 하드웨어 구성일 수 있다. 적어도 하나의 하드웨어 가속기(122-1, 122-2, ……, 122-N)는 전자 장치의 일부 기능을, 특정 프로세서(예: CPU)에서 구현되는 소프트웨어 방식에 비해 더욱 빠르게 수행할 수 있다. 일 예로, 하드웨어 가속기(122-1, 122-2, ……, 122-N) 중 적어도 하나는 CPU, GPU, DSP 또는 ISA, 그래픽 카드(또는 비디오 카드) 중 적어도 하나를 포함할 수 있다
적어도 하나의 하드웨어 가속기(122-1, 122-2,.., 122-N)의 처리 속도는 동일한 기능이 소프트웨어에 의해 구현되는 경우에 비해 빠를 수 있다. 복수개의 하드웨어 가속기(122-1, 122-2,.., 122-N)에서 동시에 신경망 연산을 수행할 수 있다.
인터페이스 컨트롤러(interface controller, 126)는 일 구성 요소에서 다른 구성 요소로의 자원 요청 또는 전달을 중계할 수 있다. 인터페이스 컨트롤러(126)는 클라이언트(예: 제1 연산부(110), ISA 코어(112), 제2 연산부(120))의 자원 요청을 중계할 수 있다. 인터페이스 컨트롤러(126)는 상기 제1 연산부(110) 및/또는 제2 연산부(120)로 입력 데이터의 처리 요청을 전달할 수 있다. 일 실시 예에서, 인터페이스 컨트롤러(126)는 제1 연산부(110)로부터 특정 하드웨어 가속기(예: 122-1)에 대한 연산 요청을 획득한 경우, 상기 특정 하드웨어 가속기로 연산 요청을 전달할 수 있다.
인터페이스 컨트롤러(126)는 제1 연산부(110) 및/또는 제2 연산부(120)로 연산을 요청할 수도 있다. 인터페이스 컨트롤러(126)는 입력 데이터의 처리에 적합한 연산부를 결정할 수 있다. 예를 들어, 인터페이스 컨트롤러(126)는 상기 적어도 하나의 하드웨어 가속기(122-1, 122-2, ……, 122-N) 중 입력 데이터에 적합한 하드웨어 가속기가 없는 경우, 제1 연산부(110)로 입력 데이터의 처리를 요청할 수 있다.
인터페이스 컨트롤러(126)는 각 연산부(110, 120)의 로컬 메모리(예: 114, 128)를 공유할 수 있도록 프로토콜 변환, 플로우 제어 등을 수행할 수 있다. 인터페이스 컨트롤러(126)는 다른 연산부 내의 메모리를 소프트웨어 제어할 필요 없이 사용할 수 있다. 인터페이스 컨트롤러(126)는 데이터 송수신시 크기 감소를 위해 압축 또는 해제를 수행할 수 있다.
인터페이스 컨트롤러(126)는 접속 프로토콜(예: AXI, OCP, Mesh 등) 및/또는 보안 컨트롤러(protection controller)(127)를 포함할 수 있다. 인터페이스 컨트롤러(126)는 접속 프로토콜(127)에 따라 ISA 코어(112) 또는 적어도 하나의 하드웨어 가속기(122-1, 122-2, ……, 122-N)로 입력 데이터에 대한 처리를 요청할 수 있다. 인터페이스 컨트롤러(126)는 제1 연산부(110)의 신호, 정보 또는 명령어 상기 제2 연산부(120)가 읽을 수 있는 형태의 신호, 정보 또는 명령어로 변환할 수 있다. 인터페이스 컨트롤러(126)는 제2 연산부(120)에서 생성된 정보 또는 저장된 정보를 제1 연산부(110)에서 읽을 수 있는 형태의 정보로 변환할 수 있다.
인터페이스 컨트롤러(126)는 특정 목적(예: 얼굴 인식, 홍채 인식 등)의 연산을 위해 보안 컨트롤러(127)를 포함할 수 있다.
일 실시 예에서, 인터페이스 컨트롤러(126)는 사용자 인증을 위해 신경망 연산을 사용하는 경우 등 보안이 필요한 경우, 보안 컨트롤러(127)를 이용할 수 있다. 인터페이스 컨트롤러(126)는 정상적인 경로를 통해 권한을 부여 받은 경우에 한하여, 전자 장치가 본 문서에 기재된 구성(예: 제1 연산부, 제2 연산부) 또는 본 문서에 기재된 구성에서 수행되는 기능 중 적어도 일부를 사용하도록 할 수 있다. 일 실시 예에서, 전자 장치는 전자 장치의 보호 영역에서만 보안이 필요한 데이터에 접근할 수 있다.
일 실시 예에서, 인터페이스 컨트롤러(126)는 제1 연산부(110) 또는 제2 연산부(120) 내에 위치할 수 있다. 다른 실시 예에서, 인터페이스 컨트롤러(126)는 제1 연산부(110) 또는 제2 연산부(120)를 연결할 수 있는 장소에 위치할 수 있다. 일 실시 예에서, 인터페이스 컨트롤러(126)는 중계 회로 또는 프록시 회로로 참조될 수 있다.
인터페이스 컨트롤러(interface controller, 126)는 제1 연산부(110) 및 제2 연산부(120)에 연결될 수 있다. 인터페이스 컨트롤러(126)는 제2 연산부(120) 및 제2 메모리를 연결할 수 있다. 일 실시 예에서, 인터페이스 컨트롤러(126)는 로컬 버스를 통해 제1 연산부(110) 및 제2 연산부(120)에 연결될 수 있다. 인터페이스 컨트롤러(126)는 로컬 버스를 통해 제2 연산부(120) 및 제2 메모리를 연결할 수 있다. 인터페이스 컨트롤러(126)는 로컬 버스를 통해 제1 연산부(110) 및 제2 메모리를 연결할 수 있다.
메모리(128)는 제2 연산부(120)에서의 연산 결과를 저장할 수 있다. 일 실시 예에서, 메모리(128)는 제1 연산부(110)에서의 연산 결과를 저장할 수도 있다. 연산 결과는, 중간 계층의 결과, 출력 계층의 결과를 포함할 수 있다. 메모리(128)는 적어도 하나의 하드웨어 가속기(122-1, 122-2, ……, 122-N) 중 하나 이상의 하드웨어 가속기(예: 122-1)에서의 연산 결과를 저장할 수 있다. 메모리(128)는 저장된 정보를 인터페이스 컨트롤러(126)에 전달할 수 있다. 메모리(128)에 저장된 정보는 인터페이스 컨트롤러(126)를 통해 외부 장치(예: 제1 연산부(110)의 메모리(114))와 공유될 수 있다. 일 실시 예에서, 메모리(128)는 캐시 메모리, 버퍼 메모리 또는 로컬 메모리일 수 있다. 일 실시 예에서, 메모리(128)는 SRAM(static random access memory)일 수 있다. 일 실시 예에서, 메모리(128)는 스크래치 패드(scratch pad) 및/또는 원형 버퍼(circular buffer)를 포함할 수 있다. 전자 장치는 로컬 메모리에 저장된 정보를 공유 함에 따라 시스템 처리 속도가 향상될 수 있다.
메쉬 네트워크(mesh network, 124)는 노드나 센서 등의 네트워크 기기들이 주위의 컴퓨터나 네트워크 허브에 연결이 되지 않아도 서로 통신이 가능한 네트워크를 의미할 수 있다. 제1 연산부(110) 및 제2 연산부(120)는 자원, 신호 또는 데이터를 메쉬 네트워크(124)를 통해 서로 공유할 수 있다. 제2 연산부(120)는 메쉬 네트워크(124)를 통해 인터페이스 컨트롤러(126) 및/또는 메모리(128)로 자원, 신호 또는 데이터를 전달하거나 획득할 수 있다.
일 실시 예에서, 제2 연산부(120)는 인터페이스 컨트롤러(interface controller, 126) 및/또는 메모리(128)를 더 포함할 수 있다. 일 실시 예에서, 제2 연산부(120)는 로컬 연결을 수행하는 메쉬 네트워크(124)를 통해 각 구성간 통신을 수행할 수 있다.
이하, 도 1을 참조하여 일 실시 예에 따른 전자 장치의 동작을 설명한다.
일 실시 예에서, 전자 장치는 제1 연산부(110)의 메모리(114) 및 상기 메모리(128) 간 정보를 공유할 수 있다. 일 실시 예에서, 메모리(114) 및 메모리(128)는 로컬 메모리일 수 있다.
인터페이스 컨트롤러(126)는 제1 연산부(110) 또는 제2 연산부(120)의 연산 결과를 참조할 수 있다. 제1 연산부(110)는 인터페이스 컨트롤러(126)를 통해 제2 연산부(120)의 연산 결과 또는 메모리(128)에 저장된 연산 결과를 참조할 수 있다. 제2 연산부(120)는 인터페이스 컨트롤러(126)를 통해 제1 연산부(110)의 연산 결과 또는 메모리(114)에 저장된 연산 결과를 참조할 수 있다.
전자 장치는 인터페이스 컨트롤러(126)를 이용하여 메모리(114) 및 메모리(128)에 저장된 데이터를 공유할 수 있다. 일 실시 예에서, 인터페이스 컨트롤러(126)는 메모리 공유를 위해 프로토콜의 변환을 수행할 수 있다. 일 실시 예에서, 인터페이스 컨트롤러(126)는 메모리 공유를 위해 플로우(flow) 제어를 수행할 수 있다. 일 실시 예에서, 인터페이스 컨트롤러(126)는 메모리 공유를 위해 데이터 압축 및/또는 해제를 수행할 수 있다. 인터페이스 컨트롤러(126)에 기초한 메모리 간 데이터 공유를 통해 SoC(system on chip) 면적이 절감되고 처리속도가 향상될 수 있다.
일 실시 예에서, 전자 장치는 인터페이스 컨트롤러(126)를 통해 메모리(114)에 저장된 데이터를 메모리(128) 및/또는 특정 하드웨어 가속기(예: 122-1)로 전달할 수 있다. 일 실시 예에서, 전자 장치는 인터페이스 컨트롤러(126)를 통해 메모리(128)에 저장된 데이터를 메모리(114) 및/또는 ISA 코어(112)로 전달할 수 있다. 전자 장치는 인터페이스 컨트롤러(126)를 통해 제1 연산부(110)로부터 데이터를 가져오거나 제1 연산부(110)로 데이터를 전달할 수 있다. 전자 장치는 인터페이스 컨트롤러(126)를 통해 제2 연산부(120)로부터 데이터를 가져오거나 제2 연산부(120)로 데이터를 전달할 수 있다.
일 실시 예에서, 전자 장치는 신경망의 특징을 고려하여 연산부를 할당하거나 데이터를 공유할 수 있다. 전자 장치는 연산부 할당 및/또는 데이터 공유를 위한 정보를 메타데이터로 관리할 수 있다.
전자 장치는 신경망 연산을 수행하기 전에 프로파일링을 수행할 수 있다. 전자 장치는 신경망의 특징을 분석하고 메타데이터로 저장할 수 있다. 전자 장치는 상기 메타데이터를 이용하여 입력 데이터의 연산에 적합한 연산부를 결정할 수 있다.
일 실시 예에서, 전자 장치는 제1 연산부(110) 및/또는 제2 연산부(120)를 적합한 연산부로 결정할 수 있다. 일 실시 예에서, 전자 장치는 제2 연산부(120) 중 특정 하드웨어 가속기(예: 122-2)를 적합한 연산부로 결정할 수 있다.
일 실시 예에서, 전자 장치가 제1 연산부(110) 및 제2 연산부(120)를 모두 이용하여 연산하는 경우, 전자 장치는 상기 제1 연산부(110)와 제2 연산부(120)의 동기화 시점, 스케줄링 정보 및/또는 연산 결과 공유 양식 등의 정보를 메타데이터로 저장하고 이용할 수 있다. 일 실시 예에서, 전자 장치가 제2 연산부(120)의 복수개의 하드웨어 가속기를 이용하는 경우 상기 전자 장치는 상기 특정 하드웨어 가속기 간의 동기화 시점, 스케줄링 정보 및/또는 연산 결과 공유 양식을 포함하는 정보를 메타데이터로 저장하고 이용할 수 있다. 일 실시 예에서, ISA 코어(112), 별도의 프로세서(예: 도 2의 프로세서(250)), 및/또는 인터페이스 컨트롤러(126)는 메타데이터를 생성할 수 있다.
일 실시 예에서, 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 다음과 같은 동작을 수행할 수 있다. 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 DNN(deep neural network)에서 사용하는 4-D(4-division) 형태의 컨벌루션(convolution)을 위한 데이터가 저장된 메모리의 주소를 계산하고 데이터를 배열(arrange)하여 DSP에서 래스터 오더(raster order) 등의 일반적인 형태로 사용하게 할 수 있다. DSP에서는 FIFO(first input first output)을 지원할 수 있다. 일 실시 예에서, 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 비트수를 줄이거나 압축된 희소 행렬(sparse matrix) 형태 등으로 저장된 DNN(deep neural network) 필터 계수를 읽고, ISA 코어(112)로 전달할 수 있다.
일 실시 예에서, 전자 장치는 머신 러닝(machine learning)을 활용한 파이프 라인 동작을 수행할 수 있다. 일 예로, 영상처리 파이프 라인 동작을 설명한다.
영상처리 파이프 라인에 따른 동작은 전처리(pre-processing), ROI(region of interest) 선택, ROI의 상세 모델링(precise modeling), 결정(decision making)의 동작을 포함할 수 있다.
일 실시 예에서, 노이즈 제거, 색상 공간 변환(color space conversion), 이미지 스케일링(image scaling) 및/또는 가우시안 피라미드(gaussian pyramid) 등의 신호 전처리(pre-processing)는 ISP(image signal processor)에서 수행할 수 있다. ISP는 카메라 연산부로 참조될 수 있다.
일 실시 예에서, 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 물체 감지(object detection), 배경 분리(background subtraction), 특징 추출(feature extraction), 이미지 세그멘테이션(image segmentation) 및/또는 레이블링 알고리즘(예: connected-component labeling)을 포함하는 ROI 선택을 수행할 수 있다.
일 실시 예에서, 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 물체 인식(object recognition), 트랙킹(tracking), 특징 매칭(feature matching) 및/또는 제스처 인식(gesture recognition)을 포함하는 ROI의 상세 모델링을 수행할 수 있다. ROI 선택 및 ROI의 상세 모델링은 이미지 처리 및 신경망 연산에 대응할 수 있다.
일 실시 예에서, 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 움직임 분석(motion analysis), 정합성 판단(예: 매치/비매치(match/no match))을 수행하거나 플래그 이벤트(flag event)를 결정하는 결정(decision making) 동작을 수행할 수 있다. 결정 동작은, 비전(vision) 및 제어 프로세싱으로 참조될 수 있다.
영상처리 파이프 라인에서 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 물체감지, 인식 및/또는 추적과 같은 ROI(region of interest) 처리를 수행할 수 있다. 일 실시 예에서, 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 ROI 처리 결과에 기반한 판단을 수행할 수 있다. 제1 연산부(110), 제2 연산부(120) 및/또는 인터페이스 컨트롤러(126)는 움직임, 정합성 등의 판단을 수행할 수 있다. 일 실시 예에서, 상기 설명한 각 동작은 ISA 코어(112) 및/또는 하드웨어 가속기(예: 122-1)에서 수행될 수 있다.
이하, 물체추적과 인식을 동시에 사용하는 전자 장치의 동작을 설명한다.
제1 연산부(110) 및/또는 인터페이스 컨트롤러(126)는 물체추적과 인식 용도의 신경망의 프로파일링을 통해 워크로드를 분석할 수 있다. 일 실시 예에서, 제1 연산부(110)의 ISA 코어(112) 및/또는 인터페이스 컨트롤러(126)는 프로파일링을 통해 메타데이터를 생성할 수 있다. ISA 코어(112) 및/또는 인터페이스 컨트롤러(126)는 워크로드 분석에 기초하여 메타데이터를 생성할 수 있다.
제1 연산부(110) 및/또는 인터페이스 컨트롤러(126)는 메타데이터를 이용하여 제1 연산부(110) 및/또는 제2 연산부(120) 각각에서 처리할 신경망을 할당할 수 있다. 제1 연산부(110) 및/또는 인터페이스 컨트롤러(126)에서 각 신경망 연산 결과 등을 공유하기 위한 메모리 공유 방식을 설정할 수 있다.
제1 연산부(110) 및/또는 인터페이스 컨트롤러(126)는 ISP(예: 카메라 연산부)로부터 전처리가 완료된 영상을 전달 받을 수 있다. 이하, 상기 전처리가 완료된 영상은 입력 데이터로 참조될 수 있다. 메모리(114) 및/또는 메모리(128)는 입력 데이터를 저장할 수 있다. 여기서, 상기 메모리(114) 및/또는 메모리(128)는 로컬 메모리일 수 있다. 일 실시 예에서, 메모리(114)에서 입력 데이터를 저장할 수 있다. 제2 연산부(120)는 인터페이스 컨트롤러(126)를 통해 메모리(114)에 저장된 입력 데이터를 획득할 수 있다. 다른 실시 예에서, 메모리(128)에서 입력 데이터를 저장하고, 인터페이스 컨트롤러(126)는 제1 연산부(110)로 메모리(128)에 저장된 입력 데이터를 전달할 수 있다. 또 다른 실시 예에서, 입력 데이터는 메모리(114) 또는 메모리(128) 중 잔여 메모리 공간이 있는 메모리에 저장될 수 있다.
제1 연산부(110)는 할당된 신경망 연산을 수행할 수 있다. 제2 연산부(120)는 할당된 신경망 연산을 수행할 수 있다. 각 연산부에서의 신경망 연산은 동시에 또는 연속적으로 수행될 수 있다. 예를 들어, 제1 연산부(110)는 물체 추적을 수행하고 제2 연산부(120)는 물체 인식을 수행할 수 있다.
제1 연산부(110)의 연산 결과 또는 처리 결과는 메모리(114)에 저장될 수 있다. 제2 연산부(120)의 연산 결과 또는 처리 결과는 상기 메모리(128)에 저장될 수 있다. 각 메모리(114, 128)에 저장된 연산 결과 또는 처리 결과는 상호 공유될 수 있다.
일 실시 예에서, 제1 연산부(110)에서 입력 데이터에 대한 최종 판단 (예: 이미지 인식 결과, 이미지 인식 결과에 따른 동작 결정)을 수행할 수 있다. 상기 입력 데이터에 대한 최종 판단은 도 2 내지 도 3의 프로세서(250 또는 350)(예: CPU)에서 수행할 수도 있다.
일 실시 예에서, 제1 연산부(110)는 상기 최종 판단의 결과를 프로세서(예: CPU)와 같은 상위 시스템에 전달할 수 있다. 일 실시 예에서, 제1 연산부(110)는 최종 판단의 결과에 따른 동작을 수행하도록 시스템을 제어할 수도 있다. 제1 연산부(110)에 대응하는 ISA는 최종 판단의 결과에 따른 동작을 수행하도록 하는 명령어 및/또는 시스템을 제어할 수 있는 명령어를 포함할 수 있다.
다양한 신경망 연산을 소프트웨어에 따라 수행하는 경우 연산의 효율성이 저하될 수 있고, 다양한 하드웨어로 대응하는 경우 알고리즘 변화에 따라 연산이 어려울 수 있다. 다양한 신경망 연산을 위해 하드웨어를 추가하는 경우에는 SoC의 면적이 증가하며, 비용이 상승할 수 있다. 본 문서에 개시된 다양한 실시 예에 따르면, 특정 신경망 연산을 수행하도록 설계된 하드웨어를 이용하여 연산의 효율성을 높이고, 다양한 신경망 연산을 수행할 수 있도록 소프트웨어에 따라 동작하는 장치를 이용하여 연산의 유연성을 높일 수 있다.
일 실시 예에 따르면, 각 연산부의 로컬 메모리를 공유함으로써 SoC 면적을 절감하고 메모리 입출력에 따른 병목 현상을 막을 수 있다. 일 실시 예에 따르면, 메모리 공유를 통한 SoC 면적 증가를 방지할 수 있고, 신경망 연산 중에 발생하는 메모리 사용량 증가를 로컬메모리를 이용하여 방지할 수 있다.
이하, 도 2 및 도 3를 참조하여 다양한 실시 예가 구현될 수 있는 신경망 연산 시스템 구조를 설명한다. 일 실시 예에서, 상기 시스템은 SoC 형태로 구현될 수 있다.
도 2를 참조하면, 일 실시 예에 따라 소프트웨어를 이용한 연산을 담당하는 연산부는 로컬 버스를 통해 하드웨어 가속기와 같은 하드웨어 구성과 연결될 수 있다.
도 2에 도시된 전자 장치의 구성은 예시적인 것이며, 본 문서에 개시되는 다양한 실시 예를 구현할 수 있는 다양한 변형이 가능하다. 예를 들어, 전자 장치는 도 4에 도시된 사용자 단말(401), 도 5에 도시된 전자 장치(501)와 같은 구성을 포함하거나, 이 구성들을 활용하여 적절하게 변형될 수 있다.
도 2를 참조하면, 전자 장치 또는 신경망 연산 시스템은 ISA 코어(212), 메모리(214), 적어도 하나의 하드웨어 가속기(222-1, 222-2, ……, 222-N), 메쉬 네트워크(224), 인터페이스 컨트롤러(226), 메모리(228), 시스템 버스(230), 메모리 컨트롤러(242), 프로세서(250)를 포함하는 SoC(system on chip, 200) 및 메모리(244)를 포함할 수 있다. 일 실시 예에서, ISA 코어(212) 및/또는 메모리(214)는 하나의 칩(예: AP(application processor) 칩)으로 구현될 수 있다. 일 실시 예에서, 적어도 하나의 하드웨어 가속기(222-1, 222-2, ……, 222-N), 메쉬 네트워크(224), 인터페이스 컨트롤러(226), 및/또는 메모리(228)는 하나의 칩(예: 신경망 전용 칩)으로 구현될 수 있다.
각 구성이 수행하는 기능에 있어서, 도 2의 ISA 코어(212), 메모리(214), 적어도 하나의 가속기(222-1, 222-2, ……, 222-N), 메쉬 네트워크(224), 인터페이스 컨트롤러(226), 메모리(228)는 도 1의 ISA 코어(112), 메모리(114), 적어도 하나의 가속기(122-1, 122-2, ……, 122-N), 메쉬 네트워크(124), 인터페이스 컨트롤러(126), 메모리(128)에 각각 대응하는 것으로 이해될 수 있다. 이하에서 대응되거나 중복되는 내용의 설명은 생략한다.
상기 도 1의 ISA 코어(112)의 기능 중 일부는 ISA 코어(212)에서 수행될 수도 있고, 일부 기능은 프로세서(250)에서 수행될 수도 있다. 일 실시 예에서, ISA 코어(212)는 로컬 버스를 통해 인터페이스 컨트롤러(226)로 하드웨어 가속기(예: 222-1)의 연산 정보를 요청할 수 있다. 다른 실시 예에서, 프로세서(250)는 시스템 버스(230)를 통해 인터페이스 컨트롤러(226)로 상기 하드웨어 가속기(222-1)의 연산 정보를 요청할 수도 있다. 일 실시 예에서, 프로세서(250)는 메타데이터를 생성할 수 있다. 일 실시 예에서, 프로세서(250)는 ISA 코어(212) 및/또는 적어도 하나의 하드웨어 가속기(222-1, 222-2, ……, 222-N)에서의 연산 결과를 이용하여 입력 데이터에 대한 판단을 수행할 수 있다. 일 실시 예에서, 프로세서(250)는 연산 결과를 이용하여 외부 장치 또는 내부 장치에 대한 제어 정보를 생성할 수도 있다.
도 2에서 프로세서는 하나인 경우를 도시하였으나, 일 실시 예에서 프로세서(250)는 복수 개의 프로세서에 해당할 수 있다. 예를 들어, 프로세서(250)는 CPU 및/또는 GPU를 포함할 수 있다.
인터페이스 컨트롤러(226)는 ISA 코어(212)와 적어도 하드웨어 가속기(222-1, 222-2, ……, 222-N) 사이의 데이터(예: 연산 결과) 공유, 상호간의 접속 등의 프로세스를 제어할 수 있다. 예를 들어, 인터페이스 컨트롤러(226)는 프로토콜을 변환하거나 데이터 전송 속도 제어를 수행할 수 있다.
도 2를 참조하면, 일 실시 예에 따라 소프트웨어를 이용한 연산을 담당하는 연산부(예: ISA 코어(212), 메모리(214))는 로컬 버스를 통해 하드웨어 구성(예: 인터페이스 컨트롤러(226) 또는 적어도 하나의 하드웨어 가속기(222-1, 222-2, ……, 222-N))과 연결될 수 있다. 메모리(214)에 저장된 데이터(예: 연산 결과)는 인터페이스 컨트롤러(226)의 요청에 따라 하드웨어 가속기(예: 222-1)와 공유될 수 있다. 메모리(228)에 저장된 데이터는 인터페이스 컨트롤러(226)의 요청에 따라 ISA 코어(212)에서 사용될 수 있다. ISA 코어(212)와 상기 하드웨어 가속기(222-1)는 로컬 버스를 이용하여 인터페이스 컨트롤러(226)를 통해 상호간에 데이터를 공유할 수 있다.
시스템 버스(230)는 데이터를 주고 받기 위한 통로 역할을 수행할 수 있다. 일 실시 예에서, 시스템 버스(230)는 프로세서(250)의 제어 정보를 전달할 수 있다. 시스템 버스(230)는 메모리(244)에 저장된 정보를 ISA 코어(212) 및/또는 적어도 하나의 하드웨어 가속기(222-1, 222-2, ……, 222-N)로 전달할 수 있다. 시스템 버스(230)는 일 실시 예에 따른 메타데이터를 전달할 수 있다.
메모리 컨트롤러(242)는 메모리에서 입출력되는 데이터를 관리할 수 있다. 메모리 컨트롤러(242)는 DRAM 컨트롤러일 수 있다.
메모리(244)는 시스템 메모리일 수 있다. 일 실시 예에서, 메모리(244)는 DRAM일 수 있다. 메모리(244)는 상기 SoC(200)과 연결될 수 있다.
도 3은 다른 실시 예에 따른 전자 장치 또는 신경망 연산 시스템의 구성을 나타낸다.
도 3을 참조하면, 일 실시 예에 따라 소프트웨어를 이용한 연산을 담당하는 연산부(예: 도 3의 ISA 코어(312))는 로컬 버스 또는 시스템 버스를 통해 하드웨어 구성(예: 하드웨어 가속기(322-1))과 연결될 수 있다. 일 실시 예에서, ISA 코어(312)는 로컬 버스 없이 시스템 버스(330)를 통해 하드웨어 가속기(예: 322-1)와 연결될 수 있다.
도 3에 도시된 전자 장치의 구성은 예시적인 것이며, 본 문서에 개시되는 다양한 실시 예를 구현할 수 있는 다양한 변형이 가능하다. 예를 들어, 전자 장치는 도 4에 도시된 사용자 단말(401), 도 5에 도시된 전자 장치(501)와 같은 구성을 포함하거나, 이 구성들을 활용하여 적절하게 변형될 수 있다.
도 3를 참조하면, 전자 장치 또는 신경망 연산 시스템은 ISA 코어(312), 메모리(314), 적어도 하나의 하드웨어 가속기(322-1, 322-2, ……, 322-N), 메쉬 네트워크(324), 인터페이스 컨트롤러(326), 메모리(328), 시스템 버스(330), 메모리 컨트롤러(342), 프로세서(350) 중 적어도 하나를 포함하는 SoC(300) 및 메모리(344)를 포함할 수 있다
각 구성이 수행하는 기능에 있어서, 도 3의 ISA 코어(312), 메모리(314), 적어도 하나의 가속기(322-1, 322-2, ……, 322-N), 메쉬 네트워크(324), 인터페이스 컨트롤러(326), 메모리(328), 메모리 컨트롤러(342), 메모리(344) 및 프로세서(350)는 도 2의 ISA 코어(212), 메모리(214), 적어도 하나의 가속기(222-1, 222-2, ……, 222-N), 메쉬 네트워크(224), 인터페이스 컨트롤러(226), 메모리(228), 메모리 컨트롤러(242), 메모리(244) 및 프로세서(250)에 각각 대응하는 것으로 이해될 수 있다. 이하에서 대응되거나 중복되는 내용의 설명은 생략한다.
상기 도 1의 ISA 코어(112)의 기능 중 일부는 도 3의 ISA 코어(312)에서 수행될 수도 있고, 일부 기능은 프로세서(350)에서 수행될 수도 있다. 일 실시 예에서, ISA 코어(312)에서 로컬 버스를 통해 인터페이스 컨트롤러(326)로 하드웨어 가속기(예: 322-1)의 연산 정보를 요청할 수 있다. 다른 실시 예에서, 프로세서(350)에서 시스템 버스(330)를 통해 인터페이스 컨트롤러(326)로 상기 하드웨어 가속기(예: 322-1)의 연산 정보를 요청할 수도 있다.
도 3에서 프로세서는 하나인 경우를 도시하였으나, 일 실시 예에서 프로세서(350)는 적어도 하나의 프로세서(350)일 수 있다. 적어도 하나의 프로세서는 CPU 및/또는 GPU을 포함할 수 있다. 일 실시 예에서, 프로세서(350)는 적어도 하나의 하드웨어 가속기(322-1, 322-2, ……, 322-N)에 대한 프로파일링을 수행하고, ISA 코어(312)와 적어도 하나의 하드웨어 가속기(322-1, 322-2, ……, 322-N) 중 입력 데이터에 대하여 적합한 연산부를 결정할 수 있다. 일 실시 예에서, 프로세서(350)는 시스템 버스를 통해 ISA 코어(312)를 제어할 수 있다.
도 3를 참조하면, 일 실시 예에 따라 소프트웨어를 이용한 연산을 수행하는 연산부(예: ISA 코어(312), 메모리(314))는 로컬 버스 및/또는 시스템 버스를 통해 적어도 하나의 하드웨어 가속기(322-1, 322-2, ……, 322-N), 인터페이스 컨트롤러(326) 및/또는 메모리(328)와 연결될 수 있다. 일 실시 예에서, 상기 ISA 코어(312)는 시스템 버스만을 이용하여 적어도 하나의 하드웨어 가속기(322-1, 322-2, ……, 322-N), 인터페이스 컨트롤러(326) 및/또는 메모리(328)와 연결될 수도 있다. ISA 코어(312)에 연결된 메모리(314)에 저장된 데이터(예: 연산 결과)는 인터페이스 컨트롤러(326)의 요청에 따라 하드웨어 가속기(예: 322-1)와 공유될 수 있다. 메모리(328)에 저장된 데이터는 인터페이스 컨트롤러(326)의 요청에 따라 ISA 코어(312)에서 사용될 수 있다. ISA 코어(312)와 하드웨어 가속기(예: 322-2)는 인터페이스 컨트롤러(326)를 통해 상호간에 데이터를 공유할 수 있다.
시스템 버스(330)는 데이터를 주고 받기 위한 통로 역할을 수행할 수 있다. 일 실시 예에서, 시스템 버스(330)는 ISA 코어(312)와 인터페이스 컨트롤러(326) 간의 데이터를 전달하기 위해 사용될 수 있다. 일 실시 예에서, 시스템 버스(330)는 메모리(314)에 저장된 ISA 코어(312)의 연산 결과를 인터페이스 컨트롤러(326)로 전달할 수 있다.
메모리 컨트롤러(342)는 메모리(344)에서 입출력되는 데이터를 관리할 수 있다. 메모리 컨트롤러(342)는 DRAM 컨트롤러일 수 있다.
메모리(344)는 시스템 메모리일 수 있다. 일 실시 예에서, 메모리(344)는 DRAM일 수 있다. 메모리(344)는 SoC(300)와 연결될 수 있다. 일 실시 예에서, 메모리(344)는 SoC(300)에 포함된 DRAM 컨트롤러(342)와 연결될 수 있다.
이하, 상기 설명한 도 1 내지 도 3의 전자 장치에서의 연산 동작을 도 3의 전자 장치를 기준으로 설명한다.
일 실시 예에서, 전자 장치는 두 연산자원(예: ISA 코어(312) 및 하드웨어 가속기(예: 322-1))를 동시에 사용할 수 있다.
일 예로, 하드웨어 가속기는 신경망의 단순 연산을 수행하고, ISA 코어(312)는 중간 단계의 정보를 이용하여 또 다른 연산을 수행할 수 있다. 일 실시 예에서 전자 장치는 하드웨어 가속기에서의 연산 결과 중 중간 단계의 정보를 메모리(314)에 저장할 수 있다. ISA 코어(312)는 메모리(314)에 저장된 중간 단계의 정보를 이용할 수 있다. ISA 코어(312)는 중간 단계의 정보 기초하여 연산 또는 처리를 수행할 수 있다. 인터페이스 컨트롤러(326)는 중간 단계의 정보를 ISA 코어(312) 또는 메모리(314)로 전달하기 위해 접속 프로토콜에 따른 동작을 수행할 수 있다.
다른 예로, 서로 다른 신경망 2개를 동시에 동작시켜야 하는 경우, 하드웨어 가속기(예: 322-1) 및 ISA 코어(312)에서 각각의 신경망을 동작시킬 수 있다. 하드웨어 가속기는 단순 연산에 관계된 신경망을 동작시키고 ISA 코어(312)는 많은 양의 제어가 필요한 신경망을 동작시킬 수 있다. 하드웨어 가속기에 적합한 연산은 ISA 코어(312), 인터페이스 컨트롤러(326) 또는 프로세서(350) 중 적어도 하나에서 결정할 수 있다. ISA 코어(312)에 적합한 연산은 ISA 코어(312), 인터페이스 컨트롤러(326) 또는 프로세서(350) 중 적어도 하나에서 결정할 수 있다.
다른 실시 예에서, 상기 전자 장치는 두 연산자원을 연속적으로 사용할 수 있다. 두 개의 신경망이 연속적으로 동작하는 경우(예: 하나의 신경망 연산 결과를 다른 신경망에 입력으로 사용하는 경우) ISA 코어(312)와 하드웨어 가속기(예: 322-1)를 연속적으로 사용할 수 있다. ISA 코어(312)에서의 출력이 하드웨어 가속기의 입력이 되거나 하드웨어 가속기에서의 출력이 ISA 코어(312)의 입력이 될 수 있다.
본 문서에 기재된 다양할 실시 예들에 따라 ISA 코어와 하드웨어 가속기로 구성된 전자 장치 또는 전자 장치의 동작에 따르면 효율적으로 신경망 연산을 수행할 수 있다. ISA 코어에서는 응용분야 별로 다양한 신경망 구조에 대응할 수 있고 중간단계의 정보 처리를 담당하여 연산의 유연성을 높일 수 있다. 하드웨어 가속기에서는 단순 연산의 반복 등을 담당하여 에너지 효율을 향상시킬 수 있다.
도 4는 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치를 나타낸다.
도 4를 참조하면, 다양한 실시 예에서의 전자 장치(401), 제1 전자 장치(402), 제2 전자 장치(404) 또는 서버(406)가 네트워크(462) 또는 근거리 통신(464)을 통하여 서로 연결될 수 있다. 전자 장치(401)는 버스(410), 프로세서(420), 메모리(430), 입출력 인터페이스(450), 디스플레이(460), 및 통신 인터페이스(470)를 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(401)는, 구성요소들 중 적어도 하나를 생략하거나 다른 구성 요소를 추가적으로 구비할 수 있다.
버스(410)는, 예를 들면, 구성요소들(410-470)을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
프로세서(420)는, 중앙처리장치(Central Processing Unit (CPU)), 어플리케이션 프로세서(Application Processor (AP)), 또는 커뮤니케이션 프로세서(Communication Processor (CP)) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서(420)는, 예를 들면, 전자 장치(401)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
메모리(430)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(430)는, 예를 들면, 전자 장치(401)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시 예에 따르면, 메모리(430)는 소프트웨어 및/또는 프로그램(440)을 저장할 수 있다. 프로그램(440)은, 예를 들면, 커널(441), 미들웨어(443), 어플리케이션 프로그래밍 인터페이스(Application Programming Interface (API))(445), 및/또는 어플리케이션 프로그램(또는 "어플리케이션")(447) 등을 포함할 수 있다. 커널(441), 미들웨어(443), 또는 API(445)의 적어도 일부는, 운영 시스템(Operating System (OS))으로 지칭될 수 있다.
커널(441)은, 예를 들면, 다른 프로그램들(예: 미들웨어(443), API(445), 또는 어플리케이션 프로그램(447))에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스(410), 프로세서(420), 또는 메모리(430) 등)을 제어 또는 관리할 수 있다. 또한, 커널(441)은 미들웨어(443), API(445), 또는 어플리케이션 프로그램(447)에서 전자 장치(401)의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어(443)는, 예를 들면, API(445) 또는 어플리케이션 프로그램(447)이 커널(441)과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다.
또한, 미들웨어(443)는 어플리케이션 프로그램(447)으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어(443)는 어플리케이션 프로그램(447) 중 적어도 하나에 전자 장치(401)의 시스템 리소스(예: 버스(410), 프로세서(420), 또는 메모리(430) 등)를 사용할 수 있는 우선 순위를 부여할 수 있다. 예컨대, 미들웨어(443)는 상기 적어도 하나에 부여된 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케쥴링 또는 로드 밸런싱 등을 수행할 수 있다.
API(445)는, 예를 들면, 어플리케이션(447)이 커널(441) 또는 미들웨어(443)에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다.
입출력 인터페이스(450)는, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치(401)의 다른 구성요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한, 입출력 인터페이스(450)는 전자 장치(401)의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
디스플레이(460)는, 예를 들면, 액정 디스플레이(Liquid Crystal Display (LCD)), 발광 다이오드(Light-Emitting Diode (LED)) 디스플레이, 유기 발광 다이오드(Organic LED (OLED)) 디스플레이, 또는 마이크로 전자기계 시스템(microelectromechanical systems, MEMS) 디스플레이, 또는 전자 종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이(460)는, 예를 들면, 사용자에게 각종 컨텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 또는 심볼 등)을 표시할 수 있다. 디스플레이(460)는, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스처, 근접, 또는 호버링(hovering) 입력을 수신할 수 있다.
통신 인터페이스(470)는, 예를 들면, 전자 장치(401)와 외부 장치(예: 제1 전자 장치(402), 제2 전자 장치(404), 또는 서버(406)) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스(470)는 무선 통신 또는 유선 통신을 통해서 네트워크(462)에 연결되어 외부 장치(예: 제2 전자 장치(404) 또는 서버(406))와 통신할 수 있다.
무선 통신은, 예를 들면 셀룰러 통신 프로토콜로서, 예를 들면 LTE(Long-Term Evolution), LTE-A(LTE-Advanced), CDMA(Code Division Multiple Access), WCDMA(Wideband CDMA), UMTS(Universal Mobile Telecommunications System), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 중 적어도 하나를 사용할 수 있다. 또한 무선 통신은, 예를 들면, 근거리 통신(464)을 포함할 수 있다. 근거리 통신(464)는, 예를 들면, Wi-Fi(Wireless Fidelity), Bluetooth, NFC(Near Field Communication), MST(magnetic stripe transmission), 또는 GNSS 중 적어도 하나를 포함할 수 있다.
MST는 전자기 신호를 이용하여 전송 데이터에 따라 펄스를 생성하고, 상기 펄스는 자기장 신호를 발생시킬 수 있다. 전자 장치(401)는 상기 자기장 신호를 POS(point of sales)에 전송하고, POS는 MST 리더(MST reader)를 이용하여 상기 자기장 신호는 검출하고, 검출된 자기장 신호를 전기 신호로 변환함으로써 상기 데이터를 복원할 수 있다.
GNSS는 사용 지역 또는 대역폭 등에 따라, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 "Beidou") 또는 Galileo(the European global satellite-based navigation system) 중 적어도 하나를 포함할 수 있다. 이하, 본 문서에서는, "GPS"는 "GNSS"와 혼용되어 사용(interchangeably used)될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard-232), 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크(462)는 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷, 또는 전화 망(telephone network) 중 적어도 하나를 포함할 수 있다.
제1 전자 장치(402) 및 제2 전자 장치(404) 각각은 전자 장치(401)와 동일한 또는 다른 종류의 장치일 수 있다. 한 실시 예에 따르면, 서버(406)는 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시 예에 따르면, 전자 장치(401)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 제1 전자 장치(402), 제2 전자 장치(404), 또는 서버(406))에서 실행될 수 있다. 한 실시 예에 따르면, 전자 장치(401)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(401)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 전자 장치(예: 제1 전자 장치(402), 제2 전자 장치(404), 또는 서버(406))에게 요청할 수 있다. 다른 전자 장치는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(401)로 전달할 수 있다. 전자 장치(401)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 5은 다양한 실시 예에 따른 전자 장치의 블록도를 나타낸다.
도 5을 참조하면, 전자 장치(501)는, 예를 들면, 도 4에 도시된 전자 장치(401)의 전체 또는 일부를 포함할 수 있다. 전자 장치(501)는 하나 이상의 프로세서(예: AP)(510), 통신 모듈(520), 가입자 식별 모듈(524), 메모리(530), 센서 모듈(540), 입력 장치(550), 디스플레이(560), 인터페이스(570), 오디오 모듈(580), 카메라 모듈(591), 전력 관리 모듈(595), 배터리(596), 인디케이터(597), 및 모터(598)를 포함할 수 있다.
프로세서(510)는, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 프로세서(510)에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서(510)는, 예를 들면, SoC(system on chip)로 구현될 수 있다. 한 실시 예에 따르면, 프로세서(510)는 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서(image signal processor)를 더 포함할 수 있다. 프로세서(510)는 도 5에 도시된 구성요소들 중 적어도 일부(예: 셀룰러 모듈(521))를 포함할 수도 있다. 프로세서(510)는 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리하고, 다양한 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
통신 모듈(520)은, 도 4의 통신 인터페이스(470)와 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈(520)은, 예를 들면, 셀룰러 모듈(521), Wi-Fi 모듈(522), 블루투스 모듈(523), GNSS 모듈(524)(예: GPS 모듈, Glonass 모듈, Beidou 모듈, 또는 Galileo 모듈), NFC 모듈(525), MST 모듈(526), 및 RF(radio frequency) 모듈(527)을 포함할 수 있다.
셀룰러 모듈(521)은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈(521)은 가입자 식별 모듈(예: SIM 카드)(529)를 이용하여 통신 네트워크 내에서 전자 장치(501)의 구별 및 인증을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈(521)은 프로세서(510)가 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈(521)은 커뮤니케이션 프로세서(CP)를 포함할 수 있다.
Wi-Fi 모듈(522), 블루투스 모듈(523), GNSS 모듈(524), NFC 모듈(525), 또는 MST 모듈(526) 각각은, 예를 들면, 해당하는 모듈을 통해서 송수신되는 데이터를 처리하기 위한 프로세서를 포함할 수 있다. 어떤 실시 예에 따르면, 셀룰러 모듈(521), Wi-Fi 모듈(522), 블루투스 모듈(523), GNSS 모듈(524), NFC 모듈(525), 또는 MST 모듈(526) 중 적어도 일부(예: 두 개 이상)는 하나의 IC(integrated chip) 또는 IC 패키지 내에 포함될 수 있다.
RF 모듈(527)은, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈(527)은, 예를 들면, 트랜시버(transceiver), PAM(power amp module), 주파수 필터(frequency filter), LNA(low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시 예에 따르면, 셀룰러 모듈(521), Wi-Fi 모듈(522), 블루투스 모듈(523), GNSS 모듈(524), NFC 모듈(525), MST 모듈(526) 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다.
가입자 식별 모듈(529)은, 예를 들면, 가입자 식별 모듈을 포함하는 카드 및/또는 내장 SIM(embedded SIM)을 포함할 수 있으며, 고유한 식별 정보(예: ICCID (integrated circuit card identifier)) 또는 가입자 정보(예: IMSI (international mobile subscriber identity))를 포함할 수 있다.
메모리(530)(예: 메모리(430))는, 예를 들면, 내장 메모리(532) 또는 외장 메모리(534)를 포함할 수 있다. 내장 메모리(532)는, 예를 들면, 휘발성 메모리(예: DRAM(dynamic RAM), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등), 비-휘발성(non-volatile) 메모리(예: OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), 마스크(mask) ROM, 플래시(flash) ROM, 플래시 메모리(예: 낸드플래시(NAND flash) 또는 노아플래시(NOR flash) 등), 하드 드라이브, 또는 SSD(solid state drive) 중 적어도 하나를 포함할 수 있다.
외장 메모리(534)는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(MultiMediaCard), 또는 메모리 스틱(memory stick) 등을 더 포함할 수 있다. 외장 메모리(534)는 다양한 인터페이스를 통하여 전자 장치(501)와 기능적으로 및/또는 물리적으로 연결될 수 있다.
보안 모듈(536)은 메모리(530)보다 상대적으로 보안 레벨이 높은 저장 공간을 포함하는 모듈로써, 안전한 데이터 저장 및 보호된 실행 환경을 보장해주는 회로일 수 있다. 보안 모듈(536)은 별도의 회로로 구현될 수 있으며, 별도의 프로세서를 포함할 수 있다. 보안 모듈(536)은, 예를 들면, 탈착 가능한 스마트 칩, SD(secure digital) 카드 내에 존재하거나, 또는 전자 장치(501)의 고정 칩 내에 내장된 내장형 보안 요소(embedded secure element(eSE))를 포함할 수 있다. 또한, 보안 모듈(536)은 전자 장치(501)의 운영 체제(OS)와 다른 운영 체제로 구동될 수 있다. 예를 들면, 보안 모듈(536)은 JCOP(java card open platform) 운영 체제를 기반으로 동작할 수 있다.
센서 모듈(540)은, 예를 들면, 물리량을 계측하거나 전자 장치(501)의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈(540)은, 예를 들면, 제스처 센서(540A), 자이로 센서(540B), 기압 센서(540C), 마그네틱 센서(540D), 가속도 센서(540E), 그립 센서(540F), 근접 센서(540G), 컬러 센서(540H)(예: RGB 센서), 생체 센서(540I), 온/습도 센서(540J), 조도 센서(540K), 또는 UV(ultra violet) 센서(540M) 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로, 센서 모듈(540)은, 예를 들면, 후각 센서(E-nose sensor), EMG(electromyography) 센서, EEG(electroencephalogram) 센서, ECG(electrocardiogram) 센서, IR(infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 센서 모듈(540)은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(501)는 프로세서(510)의 일부로서 또는 별도로, 센서 모듈(540)을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서(510)가 슬립(sleep) 상태에 있는 동안, 센서 모듈(540)을 제어할 수 있다.
입력 장치(550)는, 예를 들면, 터치 패널(touch panel)(552), (디지털) 펜 센서(pen sensor)(554), 키(key)(556), 또는 초음파(ultrasonic) 입력 장치(558)를 포함할 수 있다. 터치 패널(552)은, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널(552)은 제어 회로를 더 포함할 수도 있다. 터치 패널(552)은 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다.
(디지털) 펜 센서(554)는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 시트(sheet)를 포함할 수 있다. 키(556)는, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 초음파 입력 장치(558)는 마이크(예: 마이크(588))를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.
디스플레이(560)(예: 디스플레이(460))는 패널(562), 홀로그램 장치(564), 또는 프로젝터(566)을 포함할 수 있다. 패널(562)은, 도 4의 디스플레이(460)과 동일 또는 유사한 구성을 포함할 수 있다. 패널(562)은, 예를 들면, 유연하게(flexible), 투명하게(transparent), 또는 착용할 수 있게(wearable) 구현될 수 있다. 패널(562)은 터치 패널(552)과 하나의 모듈로 구성될 수도 있다. 홀로그램 장치(564)는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터(566)는 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치(501)의 내부 또는 외부에 위치할 수 있다. 한 실시 예에 따르면, 디스플레이(560)는 패널(562), 홀로그램 장치(564), 또는 프로젝터(566)를 제어하기 위한 제어 회로를 더 포함할 수 있다.
인터페이스(570)는, 예를 들면, HDMI(572), USB(574), 광 인터페이스(optical interface)(576), 또는 D-sub(D-subminiature)(578)을 포함할 수 있다. 인터페이스(570)는, 예를 들면, 도 4에 도시된 통신 인터페이스(470)에 포함될 수 있다. 추가적으로 또는 대체적으로, 인터페이스(570)는, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD 카드/MMC 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
오디오 모듈(580)은, 예를 들면, 소리(sound)와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈(580)의 적어도 일부 구성요소는, 예를 들면, 도 4에 도시된 입출력 인터페이스(450)에 포함될 수 있다. 오디오 모듈(580)은, 예를 들면, 스피커(582), 리시버(584), 이어폰(586), 또는 마이크(588) 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
카메라 모듈(591)은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시 예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, ISP(image signal processor), 또는 플래시(flash)(예: LED 또는 제논 램프(xenon lamp))를 포함할 수 있다.
전력 관리 모듈(595)은, 예를 들면, 전자 장치(501)의 전력을 관리할 수 있다. 한 실시 예에 따르면, 전력 관리 모듈(595)은 PMIC(power management integrated circuit), 충전 IC(charger integrated circuit), 또는 배터리 또는 연료 게이지(battery or fuel gauge)를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리(596)의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리(596)은, 예를 들면, 충전식 전지(rechargeable battery) 및/또는 태양 전지(solar battery)를 포함할 수 있다.
인디케이터(597)는 전자 장치(501) 혹은 그 일부(예: 프로세서(510))의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터(598)는 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동(vibration), 또는 햅틱(haptic) 효과 등을 발생시킬 수 있다. 도시되지는 않았으나, 전자 장치(501)는 모바일 TV 지원을 위한 처리 장치(예: GPU)를 포함할 수 있다. 모바일 TV 지원을 위한 처리 장치는, 예를 들면, DMB(Digital Multimedia Broadcasting), DVB(Digital Video Broadcasting), 또는 미디어플로(MediaFLOTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있다.
본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시 예에서, 전자 장치는 본 문서에서 기술된 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시 예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "모듈"은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면, "모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시 예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서(420))에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 메모리(430)이 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM, DVD(Digital Versatile Disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM, RAM, 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시 예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시 예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
그리고 본 문서에 개시된 실시 예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 발명의 범위를 한정하는 것은 아니다. 따라서, 본 문서의 범위는, 본 발명의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시 예를 포함하는 것으로 해석되어야 한다.

Claims (15)

  1. 전자 장치에 있어서,
    복수의 신경망 연산 중 어느 하나의 신경망 연산을 수행하도록 설정된 제1 연산부,
    지정된 신경망 연산을 수행하도록 설정된 하드웨어 가속기를 포함하는 제2 연산부, 및
    상기 제1 연산부 및 상기 제2 연산부 사이에 연결되는 인터페이스 컨트롤러(interface controller)를 포함하는, 전자 장치.
  2. 청구항 1에 있어서,
    상기 제1 연산부 및 상기 인터페이스 컨트롤러는 로컬 버스를 통해 연결되는, 전자 장치.
  3. 청구항 1에 있어서,
    상기 제1 연산부는 인스트럭션(instruction)들에 따라 신경망 연산을 수행하도록 설정된 코어, 및
    상기 코어에서의 신경망 연산 결과를 저장하기 위한 제1 메모리를 포함하고,
    상기 제2 연산부는 상기 하드웨어 가속기에서의 신경망 연산 결과를 저장하기 위한 제2 메모리에 연결되는, 전자 장치.
  4. 청구항 3에 있어서,
    상기 인터페이스 컨트롤러는 상기 제2 메모리 및 제2 연산부에 연결되는, 전자 장치.
  5. 청구항 1에 있어서,
    상기 제1 연산부 또는 상기 인터페이스 컨트롤러는, 입력 데이터를 획득하고,
    상기 제1 연산부 또는 상기 제2 연산부 중 상기 입력 데이터에 대한 신경망 연산을 수행하는 연산부를 결정하도록 설정되는, 전자 장치.
  6. 청구항 3에 있어서,
    상기 제2 연산부는, 상기 인터페이스 컨트롤러를 통해 상기 제1 메모리에 저장된 정보를 참조하도록 설정되는, 전자 장치.
  7. 청구항 3에 있어서,
    상기 제2 연산부는, 상기 인터페이스 컨트롤러를 통해 상기 제1 메모리에 저장된 정보를 참조하도록 설정되는, 전자 장치.
  8. 청구항 3에 있어서,
    상기 인터페이스 컨트롤러는 상기 제1 연산부 또는 제2 연산부에서의 연산 결과를, 상기 제1 메모리 또는 제2 메모리 중 잔여 메모리 공간이 있는 메모리에 저장하도록 하는, 전자 장치.
  9. 청구항 3에 있어서,
    상기 제1 연산부의 신경망 연산 결과는 신경망의 숨은 계층의 연산 결과 또는 출력 계층의 연산 결과 중 적어도 하나를 포함하고,
    상기 제2 연산부의 신경망 연산 결과는 신경망의 숨은 계층의 연산 결과 또는 상기 출력 계층의 연산 결과 중 적어도 하나를 포함하는 전자 장치.
  10. 청구항 3에 있어서,
    상기 인터페이스 컨트롤러는 로컬 버스를 통해 상기 제2 연산부 및 상기 제2 메모리에 연결되는, 전자 장치.
  11. 전자 장치에 있어서,
    SoC(system on chip), 및
    상기 SoC와 전기적으로 연결된 제1 메모리를 포함하고, 상기 SoC는,
    적어도 하나의 프로세서,
    복수개의 신경망 연산 중 어느 하나의 신경망 연산을 수행하도록 설정된 코어,
    지정된 신경망 연산을 수행하도록 설정된 하드웨어 가속기,
    상기 코어에서의 신경망 연산 결과를 저장하기 위한 제2 메모리, 상기 하드웨어 가속기의 신경망 연산 결과를 저장하기 위한 제3 메모리, 및
    상기 제2 메모리 및 상기 제3 메모리 사이에 연결되는 인터페이스 컨트롤러(interface controller)를 포함하는, 전자 장치.
  12. 청구항 11에 있어서,
    상기 제1 메모리는 DRAM(dynamic random access memory)을 포함하고,
    상기 SoC는 DRAM 컨트롤러를 더 포함하는, 전자 장치.
  13. 청구항 11에 있어서,
    상기 제2 메모리 및 상기 제3 메모리는 로컬 버스를 통해 연결되는, 전자 장치.
  14. 청구항 11에 있어서,
    상기 제2 메모리 및 상기 제3 메모리는 SRAM(static random access memory)인, 전자 장치.
  15. 청구항 11에 있어서,
    상기 적어도 하나의 프로세서 및 상기 코어는 시스템 버스를 통해 연결되는, 전자 장치.
PCT/KR2017/015499 2016-12-27 2017-12-26 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치 WO2018124707A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/464,724 US20190347559A1 (en) 2016-12-27 2017-12-26 Input processing method using neural network computation, and apparatus therefor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2016-0179854 2016-12-27
KR1020160179854A KR20180075913A (ko) 2016-12-27 2016-12-27 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치

Publications (1)

Publication Number Publication Date
WO2018124707A1 true WO2018124707A1 (ko) 2018-07-05

Family

ID=62709778

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2017/015499 WO2018124707A1 (ko) 2016-12-27 2017-12-26 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치

Country Status (3)

Country Link
US (1) US20190347559A1 (ko)
KR (1) KR20180075913A (ko)
WO (1) WO2018124707A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767999A (zh) * 2019-04-02 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN111783674A (zh) * 2020-07-02 2020-10-16 厦门市美亚柏科信息股份有限公司 一种基于ar眼镜的人脸识别方法和***
CN112396168A (zh) * 2019-08-13 2021-02-23 三星电子株式会社 处理器芯片及其控制方法
WO2021054614A1 (en) * 2019-09-16 2021-03-25 Samsung Electronics Co., Ltd. Electronic device and method for controlling the electronic device thereof
CN113360424A (zh) * 2021-06-16 2021-09-07 上海创景信息科技有限公司 基于多通路独立axi总线的rldram3控制器
WO2021232958A1 (zh) * 2020-05-18 2021-11-25 Oppo广东移动通信有限公司 执行操作的方法、电子设备、装置及存储介质

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102205518B1 (ko) * 2018-04-02 2021-01-21 한양대학교 산학협력단 기계학습을 수행하는 저장 장치 및 그 장치의 기계학습 방법
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11586910B1 (en) * 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11501138B1 (en) 2018-04-20 2022-11-15 Perceive Corporation Control circuits for neural network inference circuit
US11481612B1 (en) 2018-04-20 2022-10-25 Perceive Corporation Storage of input values across multiple cores of neural network inference circuit
KR102382186B1 (ko) * 2018-10-10 2022-04-05 삼성전자주식회사 딥 러닝을 위한 고성능 컴퓨팅 시스템
KR20200063289A (ko) * 2018-11-16 2020-06-05 삼성전자주식회사 영상 처리 장치 및 그 동작방법
CN109408455A (zh) * 2018-11-27 2019-03-01 珠海欧比特宇航科技股份有限公司 一种人工智能soc处理器芯片
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
KR20200073416A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 스마트 카 시스템
KR102368364B1 (ko) * 2019-01-23 2022-03-02 한국전자기술연구원 딥러닝 가속 하드웨어 장치
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
US11416422B2 (en) 2019-09-17 2022-08-16 Micron Technology, Inc. Memory chip having an integrated data mover
US11397694B2 (en) * 2019-09-17 2022-07-26 Micron Technology, Inc. Memory chip connecting a system on a chip and an accelerator chip
US20210081353A1 (en) * 2019-09-17 2021-03-18 Micron Technology, Inc. Accelerator chip connecting a system on a chip and a memory chip
US11704052B2 (en) 2020-01-07 2023-07-18 SK Hynix Inc. Processing-in-memory (PIM) systems
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法
US11620476B2 (en) * 2020-05-14 2023-04-04 Micron Technology, Inc. Methods and apparatus for performing analytics on image data
CN111752689B (zh) * 2020-06-22 2023-08-25 深圳鲲云信息科技有限公司 一种基于数据流的神经网络多引擎同步计算***
KR20220067731A (ko) * 2020-11-18 2022-05-25 한국전자기술연구원 적응형 딥러닝 데이터 압축 처리 장치 및 방법
WO2022131397A1 (ko) * 2020-12-16 2022-06-23 주식회사 모빌린트 Cnn-rnn 아키텍처 전환형 연산 가속장치 설계 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110119467A1 (en) * 2009-11-13 2011-05-19 Nec Laboratories America, Inc. Massively parallel, smart memory based accelerator
KR20150016089A (ko) * 2013-08-02 2015-02-11 안병익 신경망 컴퓨팅 장치 및 시스템과 그 방법
EP3035204A1 (en) * 2014-12-19 2016-06-22 Intel Corporation Storage device and method for performing convolution operations
WO2016099779A1 (en) * 2014-12-19 2016-06-23 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
US20160321537A1 (en) * 2014-03-28 2016-11-03 International Business Machines Corporation Consolidating multiple neurosynaptic core circuits into one reconfigurable memory block

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9613001B2 (en) * 2013-12-20 2017-04-04 Intel Corporation Processing device for performing convolution operations
US9971965B2 (en) * 2015-03-18 2018-05-15 International Business Machines Corporation Implementing a neural network algorithm on a neurosynaptic substrate based on metadata associated with the neural network algorithm
US20180046903A1 (en) * 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110119467A1 (en) * 2009-11-13 2011-05-19 Nec Laboratories America, Inc. Massively parallel, smart memory based accelerator
KR20150016089A (ko) * 2013-08-02 2015-02-11 안병익 신경망 컴퓨팅 장치 및 시스템과 그 방법
US20160321537A1 (en) * 2014-03-28 2016-11-03 International Business Machines Corporation Consolidating multiple neurosynaptic core circuits into one reconfigurable memory block
EP3035204A1 (en) * 2014-12-19 2016-06-22 Intel Corporation Storage device and method for performing convolution operations
WO2016099779A1 (en) * 2014-12-19 2016-06-23 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767999A (zh) * 2019-04-02 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN111767999B (zh) * 2019-04-02 2023-12-05 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN112396168A (zh) * 2019-08-13 2021-02-23 三星电子株式会社 处理器芯片及其控制方法
WO2021054614A1 (en) * 2019-09-16 2021-03-25 Samsung Electronics Co., Ltd. Electronic device and method for controlling the electronic device thereof
WO2021232958A1 (zh) * 2020-05-18 2021-11-25 Oppo广东移动通信有限公司 执行操作的方法、电子设备、装置及存储介质
CN111783674A (zh) * 2020-07-02 2020-10-16 厦门市美亚柏科信息股份有限公司 一种基于ar眼镜的人脸识别方法和***
CN113360424A (zh) * 2021-06-16 2021-09-07 上海创景信息科技有限公司 基于多通路独立axi总线的rldram3控制器
CN113360424B (zh) * 2021-06-16 2024-01-30 上海创景信息科技有限公司 基于多通路独立axi总线的rldram3控制器

Also Published As

Publication number Publication date
KR20180075913A (ko) 2018-07-05
US20190347559A1 (en) 2019-11-14

Similar Documents

Publication Publication Date Title
WO2018124707A1 (ko) 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치
WO2018186689A1 (en) Electronic device including housing having at least one through hole
WO2018143673A1 (ko) 전자 장치 및 전자 장치의 지문 인식 방법
WO2018101773A1 (en) Electronic device and operating method thereof
WO2017209560A1 (ko) 화면 출력 방법 및 이를 지원하는 전자 장치
WO2015115852A1 (en) Task scheduling method and apparatus
WO2017073941A1 (ko) 제스처 감지 방법 및 이를 지원하는 전자 장치
WO2019017687A1 (en) METHOD FOR OPERATING A SPEECH RECOGNITION SERVICE, AND ELECTRONIC DEVICE AND SERVER ASSUMING IT
WO2017026693A1 (en) Method and apparatus for providing location information
WO2016209004A1 (ko) 전자 장치의 터치 센싱 모듈 제어 방법 및 전자 장치, 전자 장치에 구비된 터치 센싱 모듈의 동작 방법 및 터치 센싱 모듈
WO2018074798A1 (en) Electronic device and method for controlling display in electronic device
WO2017146482A1 (ko) 음성 인식 제어를 제공하는 전자 장치 및 그 동작 방법
WO2018111039A1 (en) Method for charging electronic device, electronic device, and storage medium
WO2018034416A1 (ko) 전자 장치 및 전자 장치의 이미지 표시 방법
WO2016080784A1 (en) An electronic apparatus and a method for displaying a screen of the electronic apparatus
WO2018066840A1 (ko) 케이스 장치를 구비한 전자 장치
WO2018143675A1 (ko) 생체 센서를 제어하는 방법 및 전자 장치
WO2017082554A1 (ko) 액세서리 장치를 감지하는 전자장치 및 그의 동작 방법
WO2018084684A1 (en) Method for controlling execution of application on electronic device using touchscreen and electronic device for the same
WO2016039532A1 (en) Method of controlling display of electronic device and electronic device thereof
WO2017126767A1 (ko) 전자 장치 및 전자 장치의 동작 방법
WO2018038504A1 (en) Electronic device and system for providing content and method of providing content
WO2017061720A1 (en) Method of processing image of electronic device and electronic device thereof
WO2018131831A1 (ko) 프로세스의 권한 상승을 검출하는 전자 장치 및 저장 매체
WO2018155905A1 (ko) 식별 정보 관리 방법 및 이를 지원하는 전자 장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17885936

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17885936

Country of ref document: EP

Kind code of ref document: A1