KR20210020927A - 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 - Google Patents

온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 Download PDF

Info

Publication number
KR20210020927A
KR20210020927A KR1020207036740A KR20207036740A KR20210020927A KR 20210020927 A KR20210020927 A KR 20210020927A KR 1020207036740 A KR1020207036740 A KR 1020207036740A KR 20207036740 A KR20207036740 A KR 20207036740A KR 20210020927 A KR20210020927 A KR 20210020927A
Authority
KR
South Korea
Prior art keywords
chip
data
output
module
output information
Prior art date
Application number
KR1020207036740A
Other languages
English (en)
Other versions
KR102470893B1 (ko
Inventor
젠유 수
딩페이 장
시아오용 조우
야오 장
총웬 리
지동 두
샤올리 리우
Original Assignee
상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CN201810680472.4A external-priority patent/CN110647355B/zh
Priority claimed from CN201810777693.3A external-priority patent/CN110727462B/zh
Priority claimed from CN201810782174.6A external-priority patent/CN110728364A/zh
Priority claimed from CN201811045822.6A external-priority patent/CN110888793A/zh
Application filed by 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 filed Critical 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드
Publication of KR20210020927A publication Critical patent/KR20210020927A/ko
Application granted granted Critical
Publication of KR102470893B1 publication Critical patent/KR102470893B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

본 개시는 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템에 관한 것이다. 상기 방법은 온 칩 프로세서에 의해 브레이크 포인트에 출력 함수가 설정되어 있는 온 칩 코드의 실행을 개시하는 것과, 상기 온 칩 프로세서에 의해 상기 온 칩 코드의 상기 출력 함수가 실행되었을 때의 상기 출력 함수의 출력 정보를 취득하는 것과, 상기 온 칩 프로세서에 의해 상기 출력 정보를 오프 칩 메모리에 기억하는 것을 포함한다. 본 개시의 실시예에 있어서, 온 칩 프로세서는 오프 칩 메모리에 기억되어 있는 출력 함수의 출력 정보에 기초해서, 온 칩 코드의 각 브레이크 포인트에서의 실행 상황을 리얼타임으로 취득할 수 있고, 온 칩 코드에 복수의 브레이크 포인트를 동시에 쓰기해서 디버그한다고 하는 목적을 달성할 수 있어서 온 칩 코드의 디버그 효율을 향상시킬 수 있다.

Description

온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
'관련 출원의 상호 참조'
본 출원은 2018년 9월 7일에 중국 특허국에 제출된 출원 번호가 201811045822.6이며 발명 명칭이 '온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템'인 중국 특허 출원의 우선권을 주장하고, 2018년 7월 16일에 중국 특허국에 제출된 출원 번호가 201810777693.3이며 발명 명칭이 '데이터 프로세서 및 데이터 처리 방법'인 중국 특허 출원의 우선권을 주장하고, 2018년 7월 17일에 중국 특허국에 제출된 출원 번호가 201810782174.6이며 발명 명칭이 '연산 장치 및 연산 방법'인 중국 특허 출원의 우선권을 주장하고, 2018년 6월 27일에 중국 특허국에 제출된 출원 번호가 201810680472.4이며 발명 명칭이 '데이터 프로세서 및 데이터 처리 방법'인 중국 특허 출원의 우선권을 주장하고, 그 모든 내용이 원용에 의해 본 출원에 결합되어 있다.
본 개시는 인공 지능 기술 분야에 관한 것이며, 특히 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템에 관한 것이다.
종래의 칩 알고리즘의 디버그는 알고리즘 결과의 리얼타임 출력을 실현할 수 없다. 결과 출력을 위해서 칩 알고리즘 전체의 결과를 다른 플랫폼에 카피할 필요가 있다. 칩 알고리즘의 디버그 중에 디버그를 행할 수 없어서, 칩 알고리즘의 디버그 효율이 저하된다.
따라서, 본 개시는 브레이크 포인트에 의한 칩 디버그 효율이 낮다고 하는 문제를 해결하기 위한 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템을 제안한다.
본 개시의 일 태양에 의하면, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법이 제공되며, 상기 방법은 온 칩 프로세서에 의해, 브레이크 포인트에 출력 함수가 설정되어 있는 온 칩 코드의 실행을 개시하는 것과, 상기 온 칩 프로세서에 의해, 상기 온 칩 코드의 상기 출력 함수가 실행되었을 때의 상기 출력 함수의 출력 정보를 취득하는 것과, 상기 온 칩 프로세서에 의해, 상기 출력 정보를 오프 칩 메모리에 기억하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 방법은 상기 온 칩 프로세서에 의해, 상기 오프 칩 메모리 내의 출력 정보에 기초해서, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과를 확인하는 것을 더 포함한다.
일 가능한 실시형태에서는, 상기 출력 함수는 수치 프린트 함수 또는 문자열 프린트 함수를 포함한다.
일 가능한 실시형태에서는, 상기 출력 정보는 사전 설정된 수치 정보 또는 문자열 정보, 또는 상기 온 칩 코드 내의 상기 출력 함수 이외의 함수의 출력 정보를 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서에 의해, 상기 출력 함수의 출력 정보를 취득하는 것은, 상기 온 칩 프로세서에 의해, 온 칩 시스템의 RAM으로부터 상기 출력 함수의 출력 정보를 취득하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 방법은, 상기 온 칩 프로세서에 의해, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것을 더 포함한다.
일 가능한 실시형태에서는, 상기 방법은 상기 온 칩 프로세서는 드라이버 프로그램에 의해 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것을 더 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서에 의해 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것은, 상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보가 갱신되면, 갱신된 출력 정보를 출력하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보가 갱신되면 갱신된 출력 정보를 출력하는 것은, 상기 온 칩 프로세서는 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것과, 상기 제 1 스레드는 상기 출력 정보의 갱신을 확인한 경우, 상기 오프 칩 메모리 상태 식별자를 갱신하는 것과, 상기 온 칩 프로세서는 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것과, 상기 제 2 스레드는 상기 상태 식별자의 갱신을 확인한 경우, 상기 오프 칩 메모리 내의 갱신된 출력 정보를 출력하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서는 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것은, 상기 온 칩 프로세서는 드라이버 프로그램에 의해 상기 제 1 스레드를 기동해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것을 포함하고, 상기 온 칩 프로세서는 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것은, 상기 온 칩 프로세서는 HOST 프로그램에 의해 상기 제 2 스레드를 기동해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 오프 칩 메모리 상태 식별자는 판독 완료 식별자 또는 미판독 식별자를 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서에 의해, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것은 상기 오프 칩 메모리는 수신한 출력 정보에 기초해서 인터럽트 함수를 트리거하여 하드웨어 인터럽트 상태에 들어가는 것과, 상기 온 칩 프로세서는 제 3 스레드를 이용해서 하드웨어 인터럽트 상태 또는 하드웨어 비인터럽트 상태를 포함한 상기 오프 칩 메모리의 하드웨어 상태를 확인하는 것과, 상기 제 3 스레드는 상기 오프 칩 메모리의 하드웨어 인터럽트 상태를 확인한 경우 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것을 포함한다.
본 개시의 일 태양에 의하면, 온 칩 프로세서가 제공되고, 상기 온 칩 프로세서는 브레이크 포인트에 출력 함수가 설정되어 있는 온 칩 코드의 실행을 개시하기 위해서 이용되는 개시 모듈과, 상기 온 칩 코드의 상기 출력 함수가 실행되었을 때의 상기 출력 함수의 출력 정보를 취득하기 위해서 이용되는 출력 정보 취득 모듈과, 상기 출력 정보를 오프 칩 메모리에 기억하기 위해서 이용되는 기억 모듈을 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보에 기초해서, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과를 확인하기 위해서 이용되는 브레이크 포인트 디버그 결과 확인 모듈을 더 포함한다.
일 가능한 실시형태에서는, 상기 출력 함수는 수치 프린트 함수 또는 문자열 프린트 함수를 포함한다.
일 가능한 실시형태에서는, 상기 출력 정보는 사전 설정된 수치 정보 또는 문자열 정보, 또는 상기 온 칩 코드 내의 상기 출력 함수 이외의 함수의 출력 정보를 포함한다.
일 가능한 실시형태에서는, 상기 출력 정보 취득 모듈은 상기 온 칩 프로세서에 의해, 온 칩 시스템의 RAM으로부터 상기 출력 함수의 출력 정보를 취득하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보를 출력하기 위해서 이용되는 출력 모듈을 더 포함한다.
일 가능한 실시형태에서는, 상기 출력 모듈은 드라이버 프로그램에 의해 상기 오프 칩 메모리 내의 출력 정보를 출력하기 위해서 이용되는 제 1 출력 서브 모듈을 포함한다.
일 가능한 실시형태에서는, 상기 출력 모듈은 상기 오프 칩 메모리 내의 출력 정보가 갱신되면, 갱신된 출력 정보를 출력하기 위해서 이용되는 제 2 출력 서브 모듈을 포함한다.
일 가능한 실시형태에서는, 상기 제 2 출력 서브 모듈은 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것과, 상기 제 1 스레드는 상기 출력 정보의 갱신을 확인한 경우, 상기 오프 칩 메모리 상태 식별자를 갱신하는 것과, 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것과, 상기 제 2 스레드는 상기 상태 식별자의 갱신을 확인한 경우, 상기 오프 칩 메모리 내의 갱신된 출력 정보를 출력하는 것에 이용된다.
일 가능한 실시형태에서는, 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것은 드라이버 프로그램에 의해 상기 제 1 스레드를 기동해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것을 포함하고, 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것은 HOST 프로그램에 의해 상기 제 2 스레드를 기동해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 오프 칩 메모리 상태 식별자는 판독 완료 식별자 또는 미판독 식별자를 포함한다.
일 가능한 실시형태에서는, 상기 출력 모듈은 제 3 스레드를 이용해서, 상기 오프 칩 메모리의 수신한 출력 정보에 기초해서 인터럽트 함수를 트리거해서 들어간 상태인 하드웨어 인터럽트 상태, 또는 하드웨어 비인터럽트 상태를 포함한 상기 오프 칩 메모리의 하드웨어 상태를 확인하는 것과, 상기 제 3 스레드는 상기 오프 칩 메모리의 하드웨어 인터럽트 상태를 확인한 경우, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것에 이용되는 제 3 출력 서브 모듈을 포함한다.
본 개시의 일 태양에 의하면, 브레이크 포인트에 의한 칩 디버그 시스템이 제공되고, 상기 시스템은 온 칩 브레이크 포인트에 의한 디버그를 행하기 위한, 상기의 어느 한 항에 기재된 온 칩 프로세서를 포함한 브레이크 포인트 디버그 칩과, 상기 브레이크 포인트 디버그 칩의 출력 정보를 기억하기 위해서 이용되는 오프 칩 메모리를 포함한다.
본 개시의 실시예는, 온 칩 코드의 브레이크 포인트에 출력 함수를 설정할 수 있다. 온 칩 프로세서에 의해 온 칩 코드의 실행을 개시해서 출력 함수를 실행하면, 온 칩 프로세서는 출력 함수의 출력 정보를 취득하고, 출력 정보를 오프 칩 메모리에 기억한다. 온 칩 프로세서는 오프 칩 메모리에 기억되어 있는 출력 함수의 출력 정보에 기초해서, 온 칩 코드의 각 브레이크 포인트에서의 실행 상황을 리얼타임으로 취득할 수 있어서 온 칩 코드에 복수의 브레이크 포인트를 동시에 쓰기되어서 디버그한다고 하는 목적을 실현할 수 있어 온 칩 코드의 디버그 효율을 향상시킬 수 있다.
또한, 본 개시는 네트워크 모델의 계산 요구에 대응하면서, 장치의 소비 전력을 저감해서 코스트를 저감시킬 수 있는 데이터 프로세서, 칩, 전자 기기 및 처리 방법을 제안한다.
본 개시의 일 태양에 의하면, 데이터 프로세서가 제공되고, 상기 데이터 프로세서는 네트워크 모델의 연산 동작을 실행하기 위한 연산자와 연산 데이터를 포함한 수신한 네트워크 모델 데이터를 기억하기 위해서 이용되는 기억 모듈과, 사전 설정된 알고리즘을 이용해서 각 상기 연산자에 제 1 플래그 또는 제 2 플래그를 할당하도록 구성되는 태스크 할당 모듈로서, 제 1 플래그가 할당되어 있는 연산자의 연산 난이도는 제 2 플래그가 할당되어 있는 연산자의 연산 난이도보다 큰 태스크 할당 모듈과, 적어도 하나의 빅 코어 연산 유닛과 적어도 하나의 리틀 코어 연산 유닛을 포함하되, 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하며, 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 연산 모듈을 포함한다.
본 개시의 실시예에 있어서, 상기 태스크 할당 모듈은 나아가 각 연산자 각각의, 빅 코어 연산 유닛으로 연산되는 경우의 연산 시간과 리틀 코어 연산 유닛으로 연산되는 경우의 연산 시간에 기초해서, 각 연산자에 제 1 플래그 또는 제 2 플래그를 할당하도록 구성되고 및/또는 상기 네트워크 모델은 뉴럴 네트워크(neural network) 모델을 포함한다.
본 개시의 실시예에 있어서, 상기 태스크 할당 모듈은 나아가 각 연산자 사이의 논리 관계에 기초해서, 노드가 각 상기 연산자에 대응하는 유향(有向) 그래프를 작성하도록 구성되고, 빅 코어 연산 유닛이 각 연산자를 실행하는 제 1 연산 시간과 리틀 코어 연산 유닛이 각 연산자를 실행하는 제 2 연산 시간을 각각 취득하며, 상기 제 1 연산 시간을 각 노드의 지연 시간으로 해서 크리티컬 패스법을 이용하여 각 노드에 대응하는 연산자에 제 1 플래그가 할당되어 있는 제 1 크리티컬 패스를 결정하도록 구성된다.
본 개시의 실시예에 있어서, 상기 기억 모듈 내의 빈 기억 공간에 기초해서 각 상기 네트워크 모델 데이터에 기억 어드레스를 할당하고, 상기 기억 모듈의 빈 기억 공간이 부족한 경우에, 상기 네트워크 모델 데이터의 해방을 실행할지, 상기 네트워크 모델 데이터의 캐시를 실행할지를 선택하도록 구성되는 기억 할당 모듈을 더 포함한다.
본 개시의 실시예에 있어서, 상기 기억 할당 모듈 및 기억 모듈에 각각 접속되고, 상기 네트워크 모델 데이터를 기억 모듈에 전송해서 기억하며, 상기 연산 모듈의 연산 결과를 메모리에 전송하기 위해서 이용되는 다이렉트 메모리 액세스 모듈을 더 포함한다.
본 개시의 실시예에 있어서, 상기 네트워크 모델 데이터에는 유저 우선도 및/또는 데이터 시효성을 포함한 우선도 정보가 포함되고, 상기 데이터 프로세서는 상기 각 연산자 및 이에 대응하는 제 1 플래그 또는 제 2 플래그를 캐시하도록 구성되는 캐시 모듈과, 상기 네트워크 모델 데이터 내의 우선도 정보에 기초해서, 상기 캐시 모듈 내의 우선도가 가장 높은 연산자를 실행하도록 상기 연산 모듈을 제어하도록 구성되는 스케줄링 모듈을 더 포함한다.
본 개시의 실시예에 있어서, 상기 연산 모듈은 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은 주연산 유닛과, 적어도 하나의 분기(分岐) 연산 유닛과, 복수의 종연산 유닛을 포함하도록 구성되고, 상기 주연산 유닛은 각 분기 연산 유닛에 각각 접속되고, 각 분기 연산 유닛에 적어도 하나의 종연산 유닛이 접속되며, 상기 주연산 유닛은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 분기 연산 유닛을 통해서 연산 명령 및 데이터 블록을 대응하는 종연산 유닛으로 전송하고, 연산이 행해진 중간 결과를 획득하며, 상기 중간 결과에 기초해서 최종 연산 결과를 획득하도록 구성되며, 상기 분기 연산 유닛은 상기 주연산 유닛과 종연산 유닛 사이에 데이터 블록, 연산 명령 및 중간 결과를 전송하도록 구성되고, 상기 종연산 유닛은 수신한 연산 명령에 따라서 데이터 블록을 연산하여 중간 결과를 획득하며, 중간 결과를 상기 분기 연산 유닛에 전송하도록 구성된다.
상기 연산 모듈은 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은 주연산 유닛과 복수의 종연산 유닛을 포함하도록 구성되며, 상기 복수의 종연산 유닛은 m행 n열의 종연산 유닛으로서 구성되고, 상기 주연산 유닛은 상기 복수의 종연산 유닛 중, 제 1 행의 n개의 종연산 유닛과, 제 m 행의 n개의 종연산 유닛과, 제 1 열의 m개의 종연산 유닛을 포함한 K개의 종연산 유닛에 접속되며, 여기서 m 및 n는 1보다 큰 양의 정수이고, K는 양의 정수이며, 상기 주연산 유닛은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 상기 복수의 데이터 블록 중 적어도 하나의 데이터 블록 및 복수의 연산 명령 중 적어도 하나의 연산 명령을 상기 K개의 종연산 유닛으로 송신해서 중간 결과를 획득하며, 상기 중간 결과에 기초해서 최종 연산 결과를 획득하도록 구성되고, 본 개시의 실시예에 있어서, 상기 K개의 종연산 유닛은 상기 주연산 유닛과 나머지의 종연산 유닛 사이에서 데이터 블록, 연산 명령 및 중간 결과를 전송하도록 구성되고, 상기 나머지의 종연산 유닛은 해당 연산 명령에 따라서 수신한 데이터 블록을 연산해서 중간 결과를 획득하고, 연산 결과를 대응해서 접속되어 있는 상기 K개의 종연산 유닛에 전송하도록 구성된다.
본 개시의 실시예에 있어서, 상기 연산 모듈은 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은 주연산 유닛과, 복수의 종연산 유닛과, 상기 주연산 유닛과 종연산 유닛 사이에 접속되는 트리형 모듈을 포함하도록 구성되고, 상기 트리형 모듈은 1개의 루트 포트와 복수의 분기 포트를 포함하며, 상기 트리형 모듈의 루트 포트가 상기 주연산 유닛에 접속되고 상기 트리형 모듈의 복수의 분기 포트가 복수의 종연산 유닛 중 하나의 종연산 유닛에 각각 접속된다.
본 개시의 일 태양에 의하면, 상기의 실시예에 기재된 데이터 프로세서를 포함한 데이터 처리 칩이 제공된다.
본 개시의 일 태양에 의하면, 상기의 실시예에 기재된 데이터 처리 칩을 포함한 전자 기기가 제공된다.
본 개시의 일 태양에 의하면, 데이터 프로세서에 적용되는 데이터 처리 방법이 제공되고, 상기 방법은, 네트워크 모델의 연산 동작을 실행하기 위한 연산자와 연산 데이터를 포함한 네트워크 모델 데이터를 수신해서 기억하는 것과, 사전 설정된 알고리즘을 이용해서 각 상기 연산자에 제 1 플래그 또는 제 2 플래그를 할당하고, 제 1 플래그가 할당되어 있는 연산자의 연산 난이도는 제 2 플래그가 할당되어 있는 연산자의 연산 난이도보다 큰 것과, 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하고 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 것을 포함한다.
본 개시의 실시예에 있어서, 사전 설정된 알고리즘을 이용해서 각 상기 연산자에 제 1 플래그 또는 제 2 플래그를 할당하는 것은, 각 연산자 각각의, 빅 코어 연산 유닛으로 연산되는 경우의 연산 시간과 리틀 코어 연산 유닛으로 연산되는 경우의 연산 시간에 기초해서, 각 연산자에 제 1 플래그 또는 제 2 플래그를 할당하는 것을 포함한다.
본 개시의 실시예에 있어서, 각 연산자 각각의, 빅 코어 연산 유닛 및 리틀 코어 연산 유닛으로 연산되는 경우의 연산 시간에 기초해서 각 연산자에 플래그를 할당하는 것은, 각 연산자 사이의 논리 관계에 기초해서 노드가 각 상기 연산자에 대응하는 유향 그래프를 작성하는 것과, 빅 코어 연산 유닛이 각 연산자를 실행하는 제 1 연산 시간과 리틀 코어 연산 유닛이 각 연산자를 실행하는 제 2 연산 시간을 각각 취득하는 것과, 상기 제 1 연산 시간을 각 노드의 지연 시간으로 해서, 제 1 크리티컬 패스법을 이용해서 각 노드에 대응하는 연산자에 제 1 플래그가 할당되어 있는 제 1 크리티컬 패스를 결정하는 것을 포함한다.
본 개시의 실시예에 있어서, 네트워크 모델 데이터를 수신해서 기억하는 것은, 기억 모듈 내의 빈 기억 공간에 기초해서 각 상기 네트워크 모델 데이터에 기억 어드레스를 할당하고, 상기 기억 모듈의 빈 기억 공간이 부족한 경우에, 상기 네트워크 모델 데이터의 해방을 실행할지, 상기 네트워크 모델 데이터의 캐시를 실행할지를 선택하는 것을 포함한다.
본 개시의 실시예에 있어서, 상기 네트워크 모델 데이터에는 유저 우선도 및/또는 데이터 시효성을 포함한 우선도 정보가 포함되고, 상기 방법은 상기 각 연산자 및 이에 대응하는 제 1 플래그 또는 제 2 플래그를 캐시하는 것과, 상기 네트워크 모델 데이터 내의 우선도 정보에 기초해서 상기 캐시 모듈 내의 우선도가 가장 높은 연산자를 실행하도록 상기 빅 코어 연산 유닛 또는 리틀 코어 연산 유닛을 제어하는 것을 더 포함한다.
본 개시의 실시예에 있어서, 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은 주연산 유닛과, 적어도 하나의 분기 연산 유닛과, 복수의 종연산 유닛을 포함하도록 구성되고, 상기 주연산 유닛은 각 분기 연산 유닛에 각각 접속되고, 각 분기 연산 유닛에 적어도 하나의 종연산 유닛이 접속되며, 여기서 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하고, 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 것은, 주연산 유닛은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하는 것과, 분기 연산 유닛은 연산 명령 및 데이터 블록을 대응하는 종연산 유닛에 전송하는 것과, 종연산 유닛은 수신한 연산 명령 및 데이터 블록을 연산해서 중간 결과를 획득하며, 분기 연산 유닛을 통해서 해당 중간 결과를 주연산 유닛에 전송하여 최종 연산 결과를 획득하는 것을 포함한다.
본 개시의 실시예에 있어서, 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은 주연산 유닛과 복수의 종연산 유닛을 포함하도록 구성되고, 상기 복수의 종연산 유닛은 m행 n열의 종연산 유닛으로서 구성되며, 상기 주연산 유닛은 상기 복수의 종연산 유닛 중 제 1 행의 n개의 종연산 유닛과, 제 m 행의 n개의 종연산 유닛과, 제 1 열의 m개의 종연산 유닛을 포함한 K개의 종연산 유닛에 접속되고, 여기서, m 및 n는 1보다 큰 양의 정수이고, K는 양의 정수이며, 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하고, 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 것은, 주연산 유닛은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 상기 복수의 데이터 블록 중 적어도 하나의 데이터 블록 및 복수의 연산 명령 중 적어도 하나의 연산 명령을 상기 K개의 종연산 유닛에 송신하는 것과, K개의 종연산 유닛 이외의 나머지의 종연산 유닛은 K개의 종연산 유닛으로부터 수신한 연산 명령 및 데이터 블록을 연산해서 중간 결과를 획득하며, K개의 종연산 유닛을 통해서 해당 중간 결과를 주연산 유닛에 전송하여 최종 연산 결과를 획득하는 것을 포함한다.
본 개시의 실시예에 있어서, 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은 주연산 유닛과, 복수의 종연산 유닛과, 상기 주연산 유닛과 종연산 유닛 사이에 접속되는 트리형 모듈을 포함하도록 구성되며, 상기 트리형 모듈은 1개의 루트 포트와 복수의 분기 포트를 포함하고, 상기 트리형 모듈의 루트 포트가 상기 주연산 유닛에 접속되고, 상기 트리형 모듈의 복수의 분기 포트가 복수의 종연산 유닛 중 하나의 종연산 유닛에 각각 접속되며, 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하고, 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 것은, 주연산 유닛은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 상기 데이터 블록 및 연산 명령을 트리형 모듈의 루트 포트에 전송하는 것과, 트리형 모듈의 각 분기 포트에 접속되는 종연산 유닛은 수신한 연산 명령 및 데이터 블록에 기초해서 연산을 실행해서 중간 결과를 획득하며, 트리형 모듈을 통해서 해당 중간 결과를 주연산 유닛에 전송하여 최종 연산 결과를 획득하는 것을 포함한다.
본 개시의 실시예는 다른 연산자에 대응 플래그를 할당하고, 연산 모듈이 해당 플래그에 따라서, 상이한 연산 유닛을 이용해서 연산 동작을 실행함으로써, 빅 코어 연산 유닛에 의해 난이도가 높은 연산 명령을 연산하고, 리틀 코어 연산 유닛에 의해 난이도가 낮은 연산 명령을 연산하는 것을 실현할 수 있어서, 연산 유닛의 합리적인 사용을 실현함과 아울러, 소비 전력을 저감해서 코스트를 저감시킬 수 있다.
본 개시의 실시예는 코스트를 저감시켜서, 대역폭의 요구를 저감시킬 수 있는 기술적 해결 수단을 제안하며, 연산 장치, 데이터 처리 칩, 전자 기기 및 연산 방법을 제안한다.
본 개시의 일 태양에 의하면, 대응하는 연산 서브 커멘드를 병렬로 실행함으로써 네트워크 모델의 연산 동작을 행하는 복수의 연산 모듈을 포함한 연산 장치가 제공되고, 상기 연산 모듈은 제 1 연산 서브 데이터를 이용해서 제 1 연산 서브 커멘드를 실행하도록 구성되는 적어도 하나의 연산 유닛과, 상기 제 1 연산 서브 커멘드를 실행하기 위한 데이터를 포함한 상기 제 1 연산 서브 데이터를 적어도 기억하기 위해서 이용되는 기억 유닛을 포함한다. 본 개시의 실시예에 있어서, 적어도 2개의 연산 모듈 사이에 데이터 접속이 존재하고, 한쪽 연산 모듈은 상기 제 1 연산 서브 데이터 및 다른쪽 연산 모듈의 제 2 연산 서브 데이터를 이용해서 상기 제 1 연산 서브 커멘드를 실행하도록 구성되며, 상기 제 2 연산 서브 데이터는 해당 다른쪽 연산 모듈의 기억 유닛 내에 기억되어 있는 데이터 및/또는 해당 다른쪽 연산 모듈의 연산 유닛에 의해 생성된 데이터를 포함한다.
본 개시의 실시예에 있어서, 수신한 연산 커멘드 및 연산 데이터에 기초해서, 각 상기 연산 모듈에, 대응하는 연산 서브 커멘드 및 연산 서브 데이터를 할당하도록 구성되는 제어 모듈을 더 포함하고, 상기 연산 커멘드는 복수의 연산 서브 커멘드를 포함하며, 상기 연산 데이터는 각 상기 연산 서브 커멘드를 실행하기 위해서 필요한 연산 서브 데이터를 포함한다.
본 개시의 실시예에 있어서, 상기 제어 모듈은 연산 커멘드에 있어서의 연산 논리 관계에 기초해서, 상기 연산 커멘드를 복수의 연산 서브 커멘드로 분할하고, 해당하는 복수의 연산 서브 커멘드를 다른 연산 모듈에 대응해서 할당하여 연산하도록 구성되는 제 1 할당 유닛과, 각 상기 연산 서브 커멘드를 실행하기 위해서 필요한 연산 서브 데이터를 결정하고, 상기 연산 서브 데이터를 대응하는 연산 모듈에 할당하여 기억하도록 구성되는 제 2 할당 유닛을 포함한다.
본 개시의 실시예에 있어서, 상기 제어 모듈은 각각의 연산 서브 커멘드 사이의 연산 논리 관계에 기초해서, 각각의 상기 연산 모듈을 선택적으로 접속하도록 더 구성된다.
본 개시의 실시예에 있어서, 상기 연산 유닛은 네트워크 프로세서 또는 컴퓨터 기기를 포함한다.
본 개시의 실시예에 있어서, 상기 기억 유닛은 레지스터, 레지스터 파일 및 메모리 어레이 중 적어도 하나를 포함한다.
본 개시의 일 태양에 의하면, 상기의 실시예에 기재된 연산 장치를 포함한 데이터 처리 칩이 제공된다.
본 개시의 일 태양에 의하면, 상기의 실시예에 기재된 데이터 처리 칩을 포함한 전자 기기가 제공된다.
본 개시의 일 태양에 의하면, 연산 장치에 적용되는 연산 방법이 제공되고, 상기 연산 장치는 대응하는 연산 서브 커멘드를 병렬로 실행함으로써 네트워크 모델의 연산 동작을 행하는 복수의 연산 모듈을 포함하며, 상기 방법은 각각의 연산 모듈의 기억 유닛에 의해 제 1 연산 서브 커멘드를 실행하기 위한 데이터를 포함한 제 1 연산 서브 데이터를 기억하는 것과, 각각의 연산 모듈의 연산 유닛에 의해 제 1 연산 서브 데이터를 이용해서 제 1 연산 서브 커멘드를 실행하는 것을 포함한다.
본 개시의 실시예에 있어서, 각각의 연산 모듈의 연산 유닛에 의해 제 1 연산 서브 데이터를 이용해서 제 1 연산 서브 커멘드를 실행하는 것은, 상기 제 1 연산 서브 데이터 및 다른쪽 연산 모듈의 제 2 연산 서브 데이터를 이용해서 제 1 연산 서브 커멘드를 실행하는 것을 더 포함하고, 상기 제 2 연산 서브 데이터는 상기 다른쪽 연산 모듈의 기억 유닛 내에 기억되어 있는 데이터 및/또는 상기 다른쪽 연산 모듈 내의 연산 유닛에 의해 생성된 데이터를 포함한다.
본 개시의 실시예에 있어서, 상기 방법은 수신한 연산 커멘드 및 연산 데이터에 기초해서, 각각의 상기 연산 모듈에, 대응하는 연산 서브 커멘드 및 연산 서브 데이터를 할당하는 것을 더 포함하고, 상기 연산 커멘드는 복수의 연산 서브 커멘드를 포함하며, 상기 연산 데이터는 각각의 상기 연산 서브 커멘드를 실행하기 위해서 필요한 연산 서브 데이터를 포함한다.
본 개시의 실시예에 있어서, 수신한 연산 커멘드 및 연산 데이터에 기초해서, 각각의 상기 연산 모듈에, 대응하는 연산 서브 커멘드 및 연산 서브 데이터를 할당하는 것은, 제 1 할당 유닛에 의해 연산 커멘드에 있어서의 연산 논리 관계에 기초해서, 상기 연산 커멘드를 복수의 연산 서브 커멘드로 분할하고, 해당하는 복수의 연산 서브 커멘드를 다른 연산 모듈에 대응해서 할당하여 연산하는 것과, 제 2 할당 유닛에 의해 각 상기 연산 서브 커멘드를 실행하기 위해서 필요한 연산 서브 데이터를 결정하고, 상기 연산 서브 데이터를 대응하는 연산 모듈에 할당하여 기억하는 것을 포함한다.
본 개시의 실시예에 있어서, 상기 방법은 각 연산 서브 커멘드 사이의 연산 논리 관계에 기초해서 각 상기 연산 모듈을 선택적으로 접속하는 것을 더 포함한다.
본 개시의 실시예에 있어서, 각 연산 모듈에 필요한 데이터를 1개의 메모리에 기억시키는 일 없이, 각 연산 모듈 내의 기억 유닛에 그 연산에 필요한 데이터를 기억시키는 구성에 의해, 각 연산 모듈의 기억 유닛에 대한 데이터 액세스의 대역폭을 감소시켜서, 데이터 전송 속도를 향상시킬 수 있다. 동시에, 대형 기억 장치에 모든 연산 모듈의 데이터를 기억·읽고 쓰기할 필요가 없기 때문에, 대용량이며 또한 높은 데이터 읽고 쓰기 속도의 기억 장치를 설치할 필요가 없어서, 기억 장치의 코스트를 저감시킬 수 있고 또한, 본 개시의 실시예는 연산 장치의 확장성을 향상시킬 수 있어서, 연산 기능에 대응하는 연산 모듈을 추가함으로써 연산 장치의 연산 기능을 용이하게 확장할 수 있다.
본 개시의 실시예는 적용성이 우수하며, 코스트를 저감시킬 수 있는 데이터 프로세서, 칩, 전자 기기 및 데이터 처리 방법을 더 제안한다.
본 개시의 일 태양에 의하면, 데이터 프로세서가 제공되고, 상기 데이터 프로세서는 사전 설정된 입도(粒度)와 사전 설정된 바이트 순서를 포함한 사전 설정된 데이터 형식에 기초해서, 제 1 데이터를 제 2 데이터로 변환하도록 구성되는 데이터 변환 모듈과, 수신한 제어 신호에 기초해서 상기 제 1 데이터의 데이터 형식이 사전 설정된 데이터 형식과 다르다고 확인한 경우, 상기 제 1 데이터를 제 2 데이터로 변환하도록 데이터 변환 모듈을 제어하도록 구성되는 제어 모듈을 포함한다.
몇 개의 실시예에 있어서, 상기 데이터 변환 모듈은 데이터를 사전 설정된 입도에 대응하는 데이터로 변환하도록 구성되는 그룹화 유닛과, 데이터를 사전 설정된 바이트 순서에 대응하는 데이터로 변환하도록 구성되는 바이트 순서 변환 유닛을 포함하고, 상기 제어 모듈은 상기 제 1 데이터의 데이터 입도가 상기 사전 설정된 입도와 다르고, 한편 상기 제 1 데이터의 바이트 순서가 상기 사전 설정된 바이트 순서와 다른 경우, 그룹화 유닛에 의해 상기 사전 설정된 입도에 기초해서 상기 제 1 데이터를 제 3 데이터로 변환하고, 상기 바이트 순서 변환 유닛에 의해 상기 사전 설정된 바이트 순서에 기초해서 상기 제 3 데이터를 제 2 데이터로 변환하거나, 또는 상기 제 1 데이터의 데이터 입도가 상기 사전 설정된 입도와 같고, 한편 제 1 데이터의 바이트 순서가 상기 사전 설정된 바이트 순서와 다른 경우, 상기 바이트 순서 변환 유닛에 의해 상기 사전 설정된 바이트 순서에 기초해서 상기 제 1 데이터를 제 2 데이터로 변환하거나, 또는 상기 제 1 데이터의 데이터 입도가 상기 사전 설정된 입도와 다르고, 한편 제 1 데이터의 바이트 순서가 상기 사전 설정된 바이트 순서와 같은 경우, 그룹화 유닛에 의해 상기 사전 설정된 입도에 기초해서 상기 제 1 데이터를 제 2 데이터로 변환하도록 더 구성된다.
몇 개의 실시예에 있어서, 상기 제어 모듈은 수신한 제어 신호에 기초해서 상기 제 1 데이터의 바이트 순서를 결정하고, 상기 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 다른 경우, 상기 사전 설정된 바이트 순서에 기초해서 상기 제 1 데이터의 데이터 변환을 실행하도록 데이터 변환 모듈을 제어하도록 구성되는 바이트 순서 제어 유닛을 포함한다.
몇 개의 실시예에 있어서, 상기 그룹화 유닛은 상기 제 1 데이터의 데이터 입도와 사전 설정된 입도의 비에 기초해서, 상기 제 1 데이터를 복수의 바이트 그룹으로 분할하도록 더 구성되고, 상기 복수의 바이트 그룹은 상기 제 3 데이터 또는 제 2 데이터로 되고, 각 바이트 그룹의 데이터 입도는 상기 사전 설정된 입도와 같다.
몇 개의 실시예에 있어서, 상기 그룹화 유닛은 상기 제 1 데이터의 어드레스 공간의 하위 어드레스로부터 상위 어드레스의 순서로, 상기 제 1 데이터를 복수의 바이트 그룹으로 분할하도록 더 구성되고, 상기 복수의 바이트 그룹의 그룹수는 제 1 데이터의 데이터 입도와 사전 설정된 입도의 비이다.
몇 개의 실시예에 있어서, 상기 바이트 순서 변환 유닛은 제 1 데이터 또는 제 3 데이터의 각 바이트 그룹의 바이트 순서를 역으로 하고, 각 바이트 그룹의 순서로 상기 제 2 데이터를 취득하도록 더 구성되며, 여기서 각 바이트 그룹의 데이터 입도는 사전 설정된 입도와 같다.
몇 개의 실시예에 있어서, 상기 제어 모듈은 상기 제어 신호에 기초해서, 제 1 데이터를 기억하기 위한 제 1 어드레스 공간, 및 제 2 데이터를 기억하기 위한 제 2 어드레스 공간을 취득하고, 상기 데이터 변환 모듈은 상기 제 1 어드레스 공간에 기초해서 제 1 데이터를 취득하며, 상기 제 1 데이터를 제 2 데이터로 변환하고, 상기 제 2 데이터를 제 2 어드레스 공간에 기억한다.
몇 개의 실시예에 있어서, 사전 설정된 연산 명령에 따라서 상기 제 2 데이터를 연산 처리하도록 구성되는 연산 모듈을 더 포함하고, 상기 제어 모듈은 상기 제어 신호에 기초해서 상기 사전 설정된 연산 명령을 결정하고, 상기 사전 설정된 연산 명령에 기초해서 상기 제 2 데이터의 연산 처리를 실시하도록 상기 연산 모듈을 제어하도록 더 구성된다.
몇 개의 실시예에 있어서, 상기 제어 모듈은 상기 연산 모듈이 사전 설정된 조건을 만족하는지 여부를 검출해서, 만족된다면 상기 제 2 데이터를 연산 처리하도록 상기 연산 모듈을 제어하도록 구성되는 검출 유닛을 더 포함한다.
몇 개의 실시예에 있어서, 상기 연산 모듈은 복수의 연산 유닛을 포함하고, 상기 검출 유닛은 또한 비어 있는 연산 유닛이 있는 경우, 상기 연산 모듈이 사전 설정된 조건을 만족한다고 판단하도록 구성된다.
몇 개의 실시예에 있어서, 상기 검출 유닛은 또한 상기 연산 모듈이 현재 실행하고 있는 연산 처리에 사용되는 어드레스 공간과, 상기 제 2 데이터의 어드레스 공간 및 사전 설정된 연산 명령의 어드레스 공간이 충돌하고 있는지 여부를 검출해서 충돌하고 있지 않으면, 상기 연산 모듈이 사전 설정된 조건을 만족한다고 판단하도록 구성된다.
몇 개의 실시예에 있어서, 기억 모듈을 더 포함하고, 상기 제어 모듈은 또한 상기 제어 신호, 상기 제어 신호에 기초해서 결정된 상기 제 1 데이터의 제 1 어드레스 공간, 제 1 데이터의 입도 정보 및 사전 설정된 입도 정보를 상기 기억 모듈에 기억하도록 구성된다.
본 개시의 실시예의 일 태양에 의하면, 상기의 실시예 중 어느 한 항에 기재된 데이터 프로세서를 포함한 데이터 처리 칩이 제공된다.
본 개시의 실시예의 일 태양에 의하면, 상기의 실시예에 기재된 데이터 처리 칩을 포함한 전자 기기가 제공된다.
본 개시의 실시예의 일 태양에 의하면, 데이터 프로세서에 적용되는 데이터 처리 방법이 제공되고, 제어 신호를 수신하는 것과, 수신한 제어 신호에 기초해서 제 1 데이터의 데이터 형식이 사전 설정된 데이터 형식과 다르다고 확인한 경우 상기 제 1 데이터를 제 2 데이터로 변환하도록 데이터 변환 모듈을 제어하는 것을 포함하고, 상기 데이터 변환 모듈은 사전 설정된 입도와 사전 설정된 바이트 순서를 포함한 사전 설정된 데이터 형식에 기초해서 제 1 데이터를 제 2 데이터로 변환하도록 구성된다.
본 개시의 실시예에 있어서, 상기 데이터 변환 모듈은 그룹화 유닛과 바이트 순서 변환 유닛을 포함하고, 상기 제 1 데이터를 제 2 데이터로 변환하도록 데이터 변환 모듈을 제어하는 것은 상기 제 1 데이터의 데이터 입도가 상기 사전 설정된 입도와 다른 경우 그룹화 유닛에 의해 상기 사전 설정된 입도에 기초해서 상기 제 1 데이터를 제 3 데이터로 변환하고, 상기 제 1 데이터의 바이트 순서가 상기 사전 설정된 바이트 순서와 다른 경우 상기 바이트 순서 변환 유닛에 의해 상기 사전 설정된 바이트 순서에 기초해서 상기 제 3 데이터를 제 2 데이터로 변환하거나, 또는 상기 제 1 데이터의 데이터 입도가 상기 사전 설정된 입도와 같고 한편 제 1 데이터의 바이트 순서가 상기 사전 설정된 바이트 순서와 다른 경우 상기 바이트 순서 변환 유닛에 의해 상기 사전 설정된 바이트 순서에 기초해서 상기 제 1 데이터를 제 2 데이터로 변환하거나, 또는 상기 제 1 데이터의 데이터 입도가 상기 사전 설정된 입도와 다르고 한편 제 1 데이터의 바이트 순서가 상기 사전 설정된 바이트 순서와 같은 경우 그룹화 유닛에 의해 상기 사전 설정된 입도에 기초해서 상기 제 1 데이터를 제 2 데이터로 변환하는 것을 포함한다.
본 개시의 실시예에 있어서, 상기 방법은 수신한 제어 신호에 기초해서 상기 제 1 데이터의 바이트 순서를 결정해서, 상기 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 다른 경우, 상기 사전 설정된 바이트 순서에 기초해서 상기 제 1 데이터의 데이터 변환을 실행하도록 데이터 변환 모듈을 제어하는 것을 더 포함한다.
본 개시의 실시예에 있어서, 상기 제 1 데이터의 데이터 입도와 사전 설정된 입도의 비에 기초해서 상기 제 1 데이터를 복수의 바이트 그룹으로 분할하는 것은, 상기 제 1 데이터의 어드레스 공간의 하위 어드레스로부터 상위 어드레스의 순서로 상기 제 1 데이터를 복수의 바이트 그룹으로 분할하는 것을 포함하고 상기 복수의 바이트 그룹의 그룹수는 제 1 데이터의 데이터 입도와 사전 설정된 입도의 비와 같다.
본 개시의 실시예에 있어서, 상기 바이트 순서 변환 유닛에 의해 상기 사전 설정된 바이트 순서에 기초해서 상기 제 3 데이터 또는 상기 제 1 데이터를 제 2 데이터로 변환하는 것은, 상기 바이트 순서 변환 유닛에 의해 제 1 데이터 또는 제 3 데이터의 각 바이트 그룹의 바이트 순서를 역으로 하고, 각 바이트 그룹의 순서로 상기 제 2 데이터를 취득하는 것을 포함하며, 각 바이트 그룹의 데이터 입도는 사전 설정된 입도와 같다.
본 개시의 실시예에 있어서, 상기 방법은 상기 제어 신호에 기초해서, 제 1 데이터를 기억하기 위한 제 1 어드레스 공간 및 제 2 데이터를 기억하기 위한 제 2 어드레스 공간을 취득하는 것을 더 포함하고, 상기 데이터 변환 모듈은 상기 제 1 어드레스 공간에 기초해서 제 1 데이터를 취득하고, 상기 제 1 데이터를 제 2 데이터로 변환하며, 상기 제 2 데이터를 제 2 어드레스 공간에 기억한다.
본 개시의 실시예에 있어서, 상기 방법은 상기 제어 신호에 기초해서 상기 사전 설정된 연산 명령을 결정하는 것과, 상기 사전 설정된 연산 명령에 기초해서 상기 제 2 데이터를 연산 처리하도록 연산 모듈을 제어하는 것을 더 포함한다.
본 개시의 실시예에 있어서, 상기 방법은 상기 연산 모듈이 사전 설정된 조건을 만족하는지 여부를 검출하는 것과, 만족된다면, 상기 사전 설정된 연산 명령에 기초해서 상기 제 2 데이터를 연산 처리하도록 상기 연산 모듈을 제어하는 것을 더 포함한다.
본 개시의 실시예에 있어서, 상기 연산 모듈이 사전 설정된 조건을 만족하는지 여부를 검출하는 것은 상기 연산 모듈에 비어 있는 연산 유닛이 있는 경우, 상기 연산 모듈이 사전 설정된 조건을 만족한다고 판단하는 것을 포함한다.
본 개시의 실시예에 있어서, 상기 연산 모듈이 사전 설정된 조건을 만족하는지 여부를 검출하는 것은, 상기 연산 모듈이 현재 실행하고 있는 연산 처리에 사용되는 어드레스 공간과, 상기 제 2 데이터의 어드레스 공간 및 사전 설정된 연산 명령의 어드레스 공간이 충돌하고 있는지 여부를 검출해서, 충돌하지 않으면, 상기 연산 모듈이 사전 설정된 조건을 만족한다고 판단하는 것을 포함한다.
본 개시의 실시예에 의하면, 다른 변환 디바이스를 이용해서 데이터 변환을 실행하는 일 없이, 데이터 프로세서 내에 데이터 변환 모듈을 설치하는 것으로 데이터를 소망한 형식으로 용이하게 변환할 수 있어서, 다른 변환 디바이스의 사용 코스트를 저감함과 아울러, 데이터 변환 모듈의 설치에 의해 데이터 프로세서가 다양한 데이터 형식에 적용될 수 있어서, 양호한 적용성을 가진다.
본 개시의 다른 특징 및 태양은 첨부의 도면을 참조하면서 이하의 예시적인 실시예를 상세하게 설명함으로써 자명해진다.
본 명세서에 포함되며, 본 명세서의 일부를 구성하는 첨부의 도면은 본 명세서와 아울러 본 개시의 예시적인 실시예, 특징 및 태양을 나타내고 있으며, 본 개시의 원리를 설명하기 위해서 이용된다.
도 1a는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다.
도 1b는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다.
도 1c는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다.
도 1d는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다.
도 1e는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법에 있어서의 단계 S51의 플로우차트를 나타낸다.
도 1f는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다.
도 1g는 본 개시의 일 실시예에 따른, 온 칩 프로세서의 블록도를 나타낸다.
도 1h는 본 개시의 일 실시예에 따른, 브레이크 포인트에 의한 칩 디버그 시스템의 블록도를 나타낸다.
도 2a는 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다.
도 2b는 본 개시의 실시예에 따른, 네트워크 모델의 연산자의 계산 모델도를 나타낸다.
도 2c는 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다.
도 2d는 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다.
도 2e는 본 개시의 실시예에 따른, 데이터 처리 방법의 플로우차트를 나타낸다.
도 2f는 본 개시의 실시예에 따른, 전자 기기의 블록도를 나타낸다.
도 2g는 본 개시의 실시예에 따른, H형 구조로서 구성되는 연산 유닛의 블록도를 나타낸다.
도 2h는 본 개시의 실시예에 따른, 펄스 어레이 머신 구조로서 구성되는 연산 유닛의 블록도를 나타낸다.
도 2i는 본 개시의 실시예에 따른, 트리 구조로서 구성되는 연산 유닛의 블록도를 나타낸다.
도 2j은 본 개시의 실시예에 따른, 2분 트리 구조로서 구성되는 연산 유닛의 블록도를 나타낸다.
도 3a는 본 개시의 실시예에 따른, 연산 장치의 블록도를 나타낸다.
도 3b는 본 개시의 실시예에 따른, 연산 장치의 블록도를 나타낸다.
도 3c는 본 개시의 실시예에 따른, 제어 모듈의 블록도를 나타낸다.
도 3d는 본 개시의 실시예에 따른, 연산 방법의 플로우차트를 나타낸다.
도 3e는 본 개시의 실시예에 따른, H형 구조로서 구성되는 연산 모듈의 블록도를 나타낸다.
도 3f는 본 개시의 실시예에 따른, 펄스 어레이 머신 구조의 연산 모듈의 블록도를 나타낸다.
도 3g는 본 개시의 실시예에 따른, 트리 구조로서 구성되는 연산 모듈의 블록도를 나타낸다.
도 3h는 본 개시의 실시예에 따른, 2분 트리 구조로서 구성되는 연산 유닛의 블록도를 나타낸다.
도 4a은 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다.
도 4b는 본 개시의 실시예에 따른, 데이터 프로세서에 있어서의 데이터 변환 모듈의 블록도를 나타낸다.
도 4c은 본 개시의 실시예에 따른, 데이터 프로세서에 있어서의 제어 모듈의 블록도를 나타낸다.
도 4d는 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다.
도 4e는 본 개시의 실시예에 따른, 데이터 처리 방법의 플로우차트를 나타낸다.
도 4f은 본 개시의 실시예에 따른, 그룹화 유닛의 블록 구조도를 나타낸다.
이하, 본 개시의 실시예에 있어서의 기술적 해결 수단을, 본 개시의 실시예에 있어서의 첨부 도면을 참조해서, 명확하고 완전하게 설명한다. 기재된 실시예가 본 개시의 모든 실시예는 아니고, 단순한 일부에 지나지 않는다는 것은 자명하다. 당업자에 의해 본 개시의 실시예에 기초해서 창조적인 노력없이 얻을 수 있는 모든 다른 실시예는 본 개시의 보호 범위에 속한다.
본 개시의 특허 청구의 범위, 명세서 및 도면에 있어서의 용어 '제 1', '제 2', '제 3' 및 '제 4' 등은 다른 대상을 구분하기 위한 것으로, 특정한 순서를 설명하기 위한 것이 아니라는 점을 이해해야 한다. 본 개시의 명세서 및 특허 청구의 범위에서 사용되는 용어 '포함한다'는 기술된 특징, 전체, 단계, 조작, 요소 및/또는 구성 요소의 존재를 나타내지만, 1개 이상의 다른 특징, 전체, 단계, 조작, 요소, 구성 요소 및/또는 그들의 집합의 존재 또는 추가를 배제하는 것은 아니다.
본 개시의 명세서에서 사용되는 용어는 특정의 실시예를 설명하기 위한 것에 지나지 않고, 본 개시를 한정하는 것이 아니라는 것도 이해해야 한다. 본 개시의 명세서 및 특허 청구의 범위에서 사용된 바와 같이, 단수형의 '1개의(a)', '1개의(an)' 및 '이(the)'는 문맥상에 명확하게 기재되지 않는 이상 복수형을 포함하는 것을 의도하고 있다. 또한 본 개시의 명세서 및 특허 청구의 범위에서 사용되는 용어 '및/또는'은 관련해서 열거된 항목 중 하나 이상의 임의의 조합 및 가능한 조합의 모두를 의미하며, 이들의 조합을 포함한다는 것을 이해해야 한다.
본 명세서 및 특허 청구의 범위에서 사용되는 바와 같이, 용어 '경우에'는 문맥에 따라서 '…때에', '…하면', '…라고 판정한 것에 따라서', 또는 '…를 검출한 것에 따라서'를 의미한다고 해석할 수 있다. 마찬가지로, 어구 '…라고 판정된 경우에' 또는 '[기술되는 조건 또는 이벤트]가 검출된 경우에'는 문맥에 따라서 '…라고 판정되면', 또는 '…라고 판정했던 것에 따라서', 또는 '[기술되는 조건 또는 이벤트]가 검출되면' 또는 '[기술되는 조건 또는 이벤트]를 검출한 것에 따라서'를 의미한다고 해석할 수 있다.
도 1a는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다. 도 1a에 도시된 바와 같이, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그 방법은 단계 S10~단계 S30를 포함한다.
단계 S10에 있어서, 온 칩 프로세서에 의해, 브레이크 포인트에 출력 함수가 설정되어 있는 온 칩 코드의 실행을 개시한다.
일 가능한 실시형태에서는, C언어, C++언어 등 기계 명령을 생성할 수 있는 임의의 언어로 애플리케이션 프로그램을 작성하고, 온 칩 프로세서는 상기 애플리케이션 프로그램을 이용해서 본 개시의 실시예에 있어서의 온 칩 코드의 브레이크 포인트에 의한 디버그 방법을 실현하도록 해도 된다. 상기 애플리케이션 프로그램을 온 칩 시스템으로 설정할 수 있다. 온 칩 프로세서는 온 칩 코드의 실행 중에 상기 애플리케이션 프로그램을 실행할 수 있다.
일 가능한 실시형태에서는, 온 칩 코드는 온 칩 시스템으로 실행 가능한 코드이다. 온 칩 시스템은 단일 또는 복수의 칩에 집적된 하드웨어 시스템이어도 되고, 코드를 실행함으로써 코드의 논리적 기능을 실현할 수 있다. 예를 들면, 온 칩 코드는 커널 함수 등의 여러가지 종류의 기능 함수를 포함할 수 있다. 출력 함수는 온 칩 코드의 실행을 중단하는 일 없이 정보를 출력할 수 있다. 본 개시는 온 칩 코드의 종류 및 내용을 한정하지 않는다. 온 칩 프로세서는 기동 커멘드에 따라서 온 칩 코드의 실행을 개시할 수 있다.
일 가능한 실시형태에서는, 디버그 요건에 따라서, 온 칩 코드 내에서 1개 이상의 브레이크 포인트를 인위적으로 결정할 수 있다. 온 칩 코드의 브레이크 포인트에 출력 함수를 설정할 수 있다.
일 가능한 실시형태에서는, 상기 출력 함수는 수치 프린트 함수 또는 문자열 프린트 함수를 포함한다.
일 가능한 실시형태에서는, 출력 함수는 수치 프린트 함수를 포함할 수 있다. 수치 프린트 함수는 사전 설정된 수치를 프린트하기 위해서 이용되어도 되고, 취득한 수치를 프린트하기 위해서 이용되어도 된다. 예를 들면, 사전 설정된 수치는 이진수 '01011'이다. 수치 프린트 함수를 실행하면, 이진수 '01011'을 프린트할 수 있다.
일 가능한 실시형태에서는, 출력 함수는 문자열 프린트 함수를 포함할 수 있다. 문자열 프린트 함수는 사전 설정된 문자열을 프린트하기 위해서 이용되어도 되고, 취득한 문자열을 프린트하기 위해서 이용되어도 된다.
일 가능한 실시형태에서는, 수치 프린트 함수 및 문자열 프린트 함수를 온 칩 코드로 설정할 수 있다. 수치 프린트 함수와 문자열 프린트 함수 중 어느 하나만을 온 칩 코드로 설정하는 것도 가능하다. 온 칩 코드에 복수의 수치 프린트 함수 또는 복수의 문자열 프린트 함수가 포함되는 경우, 복수의 수치 프린트 함수 또는 복수의 문자열 프린트 함수는 동일해도 되고 달라도 된다.
일 가능한 실시형태에서는, 상기 온 칩 코드의 브레이크 포인트에 출력 함수가 설정되어 있는 것은 상기 온 칩 코드의 복수의 브레이크 포인트의 각각 출력 함수가 설정되어 있는 것을 포함한다.
일 가능한 실시형태에서는, 각 브레이크 포인트에 각각 출력 함수를 설정할 수 있다. 복수의 브레이크 포인트에서의 출력 함수는 동일해도 되고 달라도 된다.
일 가능한 실시형태에서는, 온 칩 코드의 실행이 정상인 경우, 각 브레이크 포인트에서의 출력 함수는 정상적으로 실행되어, 정상적으로 정보를 출력할 수 있다. 온 칩 코드의 실행이 이상인 경우, 실행 이상 부분의 코드에 관한 출력 함수는 정상적으로 정보를 출력할 수 없게 되거나, 또는 실행 상태가 이상인 것을 나타내는 정보를 출력한다.
예를 들면, 온 칩 코드에는 서브 코드 1, 서브 코드 2, 서브 코드 3 … 등의 복수의 서브 코드가 포함되어도 된다. 각 서브 코드에 출력 함수 1, 출력 함수 2, 출력 함수 3 … 과 같이 각각 출력 함수를 설정할 수 있다(예를 들면, 서브 코드의 종료 개소에 브레이크 포인트를 설정하고, 브레이크 포인트에 출력 함수를 설정할 수 있다). 각 출력 함수는 사전 설정된 수치를 출력하기 위해서 사용된다. 출력 함수 1은 수치 '1'을 출력하기 위해서 이용되고, 출력 함수 2는 수치 '2'를 출력하기 위해서 이용되며, 출력 함수 3은 수치 '3'을 출력하기 위해서 이용되는 등이다. 온 칩 코드의 실행중에, 서브 코드 3으로부터 정상적으로 실행되지 않고, 출력 함수 3으로부터 출력 함수도 정상적으로 실행되지 않는다고 가정하면, 출력 함수 3으로부터 출력 함수가 정상적으로 정보를 출력할 수 없게 된다. 최종적으로, 온 칩 코드의 출력 함수의 출력 정보는 수치 '1'과 수치 '2'뿐이다.
각 출력 함수는 이에 대응하는 서브 코드의 실행 상태를 출력하기 위해서 이용되어도 된다. 서브 코드의 실행이 정상인 경우, 대응하는 출력 함수는 상태값 '0'을 출력하도록 해도 된다. 서브 코드의 실행이 이상인 경우, 대응하는 출력 함수는 상태값 '1'을 출력하도록 해도 된다. 온 칩 코드의 실행 중에, 실행 이상의 서브 코드에 관한 출력 함수는 상태값 '1'을 출력한다.
단계 S20에서, 상기 온 칩 프로세서에 의해, 상기 온 칩 코드의 상기 출력 함수가 실행되었을 때의 상기 출력 함수의 출력 정보를 취득한다.
일 가능한 실시형태에서는, 온 칩 프로세서에 의한 온 칩 코드의 실행중에, 출력 함수가 실행되면, 출력 함수로부터 출력 정보를 온 칩 시스템의 RAM(random access memory, 랜덤 억세스 레지스터)에 출력할 수 있다.
일 가능한 실시형태에서는, 온 칩 프로세서는 상기 출력 함수의 출력 정보를 취득하는 것은 온 칩 프로세서는 온 칩 시스템의 RAM으로부터 상기 출력 함수의 출력 정보를 취득하는 것을 포함한다.
일 가능한 실시형태에서는, 온 칩 프로세서는 RAM으로부터 출력 함수의 출력 정보를 리얼타임으로 취득해도 된다. 온 칩 프로세서는 RAM으로부터 출력 함수의 출력 정보를 주기적으로 취득해도 된다. 또한, 온 칩 프로세서는 취득 명령에 따라서 RAM으로부터 출력 함수의 출력 정보를 취득해도 된다.
일 가능한 실시형태에서는, 상기 출력 정보는 사전 설정된 수치 정보 또는 문자열 정보를 포함한다.
일 가능한 실시형태에서는, 출력 함수는 사전 설정된 수치 정보 또는 문자열 정보를 출력할 수 있다. 다른 브레이크 포인트에서의 다른 출력 함수에, 같은 출력 정보를 설정, 즉 같은 수치 정보 또는 문자열 정보를 사전 설정할 수 있다. 예를 들면, 각 브레이크 포인트에서의 출력 함수의 출력 정보는 모두 이진수의 수치 1이다. 다른 브레이크 포인트에서의 다른 출력 함수에, 다른 출력 정보를 사전 설정, 즉 다른 수치 정보 또는 문자열 정보를 사전 설정할 수도 있다. 예를 들면, 최초의 출력 함수의 출력 정보는 이진수의 수치 1이며, 2번째의 출력 함수의 출력 정보는 이진수의 수치 2인 것 등과 같이 설정한다.
일 가능한 실시형태에서는, 상기 출력 정보는 상기 온 칩 코드 내의 상기 출력 함수 이외의 함수의 출력 정보를 포함한다.
일 가능한 실시형태에서는, 출력 함수는 취득한 수치 정보 또는 문자열 정보를 출력할 수 있다. 출력 함수는 온 칩 코드 내의 다른 함수의 출력 정보를 취득하고, 다른 함수의 출력 정보를 출력할 수 있다. 예를 들면, 온 칩 코드는 뉴럴 네트워크의 연산에 사용할 수 있다. 온 칩 코드가 뉴럴 네트워크의 상관 계산을 완료하기 위해서 사용되는 경우, 뉴럴 네트워크의 계산 도중의 중간 결과를 출력하기 위해서, 온 칩 코드에 복수의 출력 함수를 설정할 수 있다. 뉴럴 네트워크는 복수의 컨볼루션 층을 포함하고, 각 컨볼루션 층의 출력 데이터는 뉴럴 네트워크의 계산 도중의 중간 결과이도록 해도 된다. 온 칩 코드에는 각 컨볼루션 층에 대응하는 복수의 함수가 포함되어도 된다. 온 칩 코드의 실행중에 각 컨볼루션 층에 대응하는 함수는 각 컨볼루션 층의 출력 데이터를 사전 설정된 기억 어드레스에 출력할 수 있고, 출력 함수는 사전 설정된 기억 어드레스에 기억되어 있는 각 컨볼루션 층의 출력 데이터를 출력할 수 있다. 예를 들면, 온 칩 코드에는 각각 1층째부터 3층째의 컨볼루션 연산에 이용되는 컨볼루션 연산 함수 1, 컨볼루션 연산 함수 2, 및 컨볼루션 연산 함수 3이 포함되어도 된다. 온 칩 코드는 각 컨볼루션 연산 함수의 계산 결과를 사전 설정된 기억 어드레스에 기억할 수 있다. 온 칩 코드는 각 컨볼루션 연산 함수에 대응해서, 사전 설정된 기억 어드레스 내의 각 컨볼루션 연산 함수의 출력 데이터를 출력하는 출력 함수를 포함할 수 있다.
단계 S30에 있어서, 상기 온 칩 프로세서에 의해 상기 출력 정보를 오프 칩 메모리에 기억한다.
일 가능한 실시형태에서는, 온 칩 프로세서는 온 칩 시스템의 RAM으로부터 취득된 출력 함수의 출력 정보를, 오프 칩 메모리에 리얼타임으로 기억할 수 있다. 오프 칩 메모리는 임의의 오프 칩 스토리지, 예를 들면 자기 디스크(비휘발성), 네트워크 스토리지 등을 포함할 수 있다.
일 가능한 실시형태에서는, 상기 오프 칩 메모리는 DDR(Double Data Rate, 더블 데이터 레이트) 메모리를 포함한다.
일 가능한 실시형태에서는, 오프 칩 메모리 내에 기억되어 있는 출력 정보는 온 칩 코드의 실행 상황을 분석하기 위해서 사용되어도 된다. 오프 칩 메모리 내의 출력 정보가 온 칩 코드의 각 출력 함수의 정상적인 출력 정보인 경우에, 온 칩 코드의 실행이 정상이라고 간주할 수 있고, 그렇지 않은 경우에는, 온 칩 코드의 실행이 이상이라고 간주할 수 있다.
일 가능한 실시형태에서는, 온 칩 프로세서는 오프 칩 메모리 내의 출력 정보에 기초해서 각 출력 함수의 실행 상황을 확인할 수 있다. 온 칩 프로세서는 각 출력 함수의 실행 상황에 기초해서 온 칩 코드의 실행 상황을 얻을 수 있고, 온 칩 코드에 복수의 브레이크 포인트를 동시에 쓰기되어서 디버그한다고 하는 목적을 달성한다.
본 실시예에서는 온 칩 코드의 브레이크 포인트에 출력 함수를 설정한다. 온 칩 프로세서에 의해 온 칩 코드의 실행을 개시해서 출력 함수를 실행하면, 온 칩 프로세서는 출력 함수의 출력 정보를 취득하고, 출력 정보를 오프 칩 메모리에 기억한다. 온 칩 프로세서는 오프 칩 메모리에 기억되어 있는 출력 함수의 출력 정보에 기초해서, 온 칩 코드의 각 브레이크 포인트에서의 실행 상황을 리얼타임으로 취득할 수 있어서, 온 칩 코드에 복수의 브레이크 포인트를 동시에 쓰기해서 디버그한다고 하는 목적을 달성할 수 있어, 온 칩 코드의 디버그 효율을 향상시킬 수 있다.
도 1b는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다. 도 1b에 도시된 바와 같이, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그 방법은, 상기 온 칩 프로세서에 의해, 상기 오프 칩 메모리 내의 출력 정보에 기초해서, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과를 확인하는 단계 S40를 더 포함한다.
일 가능한 실시형태에서는, 온 칩 프로세서는 오프 칩 메모리 내의 출력 정보에 기초해서 각 출력 함수의 실행 상황을 확인할 수 있다. 온 칩 프로세서는 각 출력 함수의 출력 정보와 사전 설정된, 출력 정보와 브레이크 포인트에 의한 디버그의 결과 사이의 매핑 관계에 기초해서, 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과를 획득할 수 있다. 예를 들면, 온 칩 코드에 3개의 출력 함수가 포함되고, 정상 실행인 경우, 3개의 출력 함수의 출력 정보는 모두 사전 설정된 수치 '0'이 된다. 사전 설정된, 출력 정보와 브레이크 포인트에 의한 디버그의 결과 사이의 매핑 관계는 오프 칩 메모리 내의 출력 정보의 '0, 0, 0'이 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과가 '정상'인 것에 대응하고, 오프 칩 메모리 내의 출력 정보의 '0, 0, 1'이 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과가 '3번째의 브레이크 포인트로 이상으로 실행된다'는 것에 대응하는 등을 포함할 수 있다. 온 칩 코드 및 출력 함수의 실제의 내용에 기초해서, 출력 정보와 브레이크 포인트에 의한 디버그의 결과 사이의 매핑 관계를 결정할 수 있다.
본 실시예에서는 온 칩 프로세서는 오프 칩 메모리 내의 출력 정보에 기초해서, 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과를 확인할 수 있다. 온 칩 프로세서가 브레이크 포인트에 의한 디버그의 결과를 직접 확인함으로써, 온 칩 코드의 디버그 효율을 향상시킬 수 있다.
도 1c는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다. 도 1c에 도시된 바와 같이, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그 방법은 상기 온 칩 프로세서에 의해, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 단계 S50를 더 포함한다.
일 가능한 실시형태에서는, 온 칩 프로세서는 드라이버(driver) 프로그램에 의해 오프 칩 메모리 내의 출력 정보를 출력할 수 있다. 온 칩 프로세서는 오프 칩 메모리 내의 출력 정보를 출력함으로써, 온 칩 코드의 디버그 결과를 제시하여, 디버그하는 사람이 디버그 프로세스를 감시하기 쉽게 할 수 있다.
일 가능한 실시형태에서는, 스크린에 표시하는 방식을 이용해서, 오프 칩 메모리 내의 출력 정보를 출력할 수 있다. 프린트 등의 다른 방식을 이용해서, 오프 칩 메모리 내의 출력 정보를 출력할 수도 있다. 본 개시는 오프 칩 메모리 내의 출력 정보의 출력 방식을 한정하지 않는다.
일 가능한 실시형태에서는, 오프 칩 메모리 내의 출력 정보를 리얼타임으로 출력할 수 있어, 디버그하는 사람이 출력 정보에 기초해서 온 칩 코드의 실행이 이상이라고 판단한 경우, 온 칩 코드의 실행을 종료해서 디버그할 수 있어 온 칩 코드의 디버그 효율을 향상시킬 수 있다.
본 실시예에서는 오프 칩 메모리의 출력 정보를 출력할 수 있다. 디버그하는 사람이 출력 정보에 기초해서 온 칩 코드의 실행 상황을 리얼타임으로 감시할 수 있고, 이로써 온 칩 코드의 디버그 효율을 향상시킬 수 있다.
도 1d는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다. 도 1d에 도시된 바와 같이, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그 방법에 있어서의 단계 S50는 상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보가 갱신되면, 갱신된 출력 정보를 출력하는 단계 S51를 포함한다.
일 가능한 실시형태에서는, 온 칩 코드에 복수의 출력 함수가 포함되어도 된다. 오프 칩 메모리 내의 출력 정보는 복수의 출력 함수의 출력 정보여도 된다. 오프 칩 메모리 내의 출력 정보가 갱신되었을 경우, 즉, 새로운 출력 함수의 출력 정보가 있었을 경우, 갱신된 출력 정보를 출력할 수 있다.
본 실시예에서는 출력 정보가 갱신되었을 경우에 출력함으로써, 출력 정보의 출력 효율을 향상시킬 수 있다.
도 1e는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법에 있어서의 단계 S51의 플로우차트를 나타낸다. 도 1e에 도시된 바와 같이, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그 방법에 있어서의 단계 S51는 단계 S511~단계 S514를 포함한다.
단계 S511에 있어서, 상기 온 칩 프로세서는 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인한다.
일 가능한 실시형태에서는, 온 칩 프로세서는 제 1 스레드를 기동하고, 오프 칩 메모리 내의 출력 정보가 갱신되었는지 여부를 확인할 수 있다. 드라이버 프로그램에 의해 제 1 스레드를 기동해서 오프 칩 메모리 내의 출력 정보를 확인할 수 있다.
일 가능한 실시형태에서는, 온 칩 프로세서는 제 1 확인 주기에 기초해서, 제 1 스레드를 이용해서 오프 칩 메모리 내의 출력 정보를 주기적으로 확인할 수 있다.
단계 S512에 있어서, 상기 제 1 스레드는 상기 출력 정보의 갱신을 확인한 경우, 상기 오프 칩 메모리 상태 식별자를 갱신한다.
일 가능한 실시형태에서는, 오프 칩 메모리에 상태 식별자를 설정할 수 있다. 상태 식별자는 수치 또는 문자열을 포함할 수 있다. 오프 칩 메모리 상태 식별자는 판독 완료 식별자 또는 미판독 식별자를 포함할 수 있다. 예를 들면, 수치 '0'으로 판독 완료 상태를 나타내고, 수치 '1'로 미판독을 나타낼 수 있다.
일 가능한 실시형태에서는, 제 1 스레드는 오프 칩 메모리 내의 출력 정보의 갱신을 확인한 경우, 오프 칩 메모리 상태 식별자를 갱신할 수 있다. 제 1 스레드는 오프 칩 메모리 상태 식별자를 '판독 완료 식별자'로부터 '미판독 식별자'로 갱신할 수 있다.
단계 S513에 있어서, 상기 온 칩 프로세서는 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인한다.
일 가능한 실시형태에서는, 온 칩 프로세서는 HOST 프로그램에 의해 제 2 스레드를 기동해서 오프 칩 메모리 상태 식별자를 확인할 수 있다. 온 칩 프로세서는 제 2 확인 주기에 기초해서, 상기 제 2 스레드를 이용해서 오프 칩 메모리 상태 식별자를 확인할 수 있다. 필요에 따라서 제 1 확인 주기 및 제 2 확인 주기의 기간을 결정할 수 있다.
단계 S514에 있어서, 상기 제 2 스레드는 상기 상태 식별자의 갱신을 확인한 경우, 상기 오프 칩 메모리 내의 갱신된 출력 정보를 출력한다.
일 가능한 실시형태에서는, 제 2 스레드는 오프 칩 메모리 상태 식별자의 갱신을 확인한 경우, 예를 들면, 오프 칩 메모리 상태 식별자의 '판독 완료 식별자'로부터 '미판독 식별자'로의 갱신을 확인한 경우, 오프 칩 메모리 내의 갱신된 출력 정보를 출력할 수 있다.
일 가능한 실시형태에서는, 제 2 스레드는 오프 칩 메모리 내의 갱신된 출력 정보를 출력한 후, 오프 칩 메모리 상태 식별자를 '미판독 식별자'로부터 '판독 완료 식별자'로 갱신할 수 있다.
일 가능한 실시형태에서는, driver와 HOST 프로그램이 서로 제휴하는 것과, 오프 칩 메모리 내의 출력 정보가 갱신되었을 경우, 오프 칩 메모리 내의 출력 정보를 시기 적절하고 또한 효율적으로 출력할 수 있다.
도 1f는 본 개시의 일 실시예에 따른, 온 칩 코드의 브레이크 포인트에 의한 디버그 방법의 플로우차트를 나타낸다. 도 1f에 도시된 바와 같이, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그 방법에 있어서의 단계 S50는 단계 S52~단계 S53를 포함한다.
단계 S52에 있어서, 상기 온 칩 프로세서는 제 3 스레드를 이용해서, 상기 오프 칩 메모리의, 수신한 출력 정보에 기초해서 인터럽트 함수를 트리거해서 들어간 상태인 하드웨어 인터럽트 상태, 또는 하드웨어 비인터럽트 상태를 포함한 상기 오프 칩 메모리의 하드웨어 상태를 확인한다.
일 가능한 실시형태에서는, 오프 칩 메모리가 하드웨어 인터럽트 기능을 구비한 경우, 오프 칩 메모리에 인터럽트 함수를 설정할 수 있다. 오프 칩 메모리가 출력 정보를 수신하면, 인터럽트 함수를 트리거해서 하드웨어 인터럽트 상태에 들어갈 수 있다.
일 가능한 실시형태에서는, 온 칩 프로세서는 드라이버 프로그램에 의해 제 3 스레드를 기동해서 오프 칩 메모리의 하드웨어 상태를 확인할 수 있다. 오프 칩 메모리 상태가 인터럽트 상태인 경우, 오프 칩 메모리에 새로운 출력 정보가 있다는 것을 나타낸다. 오프 칩 메모리 상태가 비인터럽트 상태인 경우, 오프 칩 메모리에 새로운 출력 정보가 없다는 것을 나타낸다.
단계 S53에 있어서, 상기 제 3 스레드는 상기 오프 칩 메모리의 하드웨어 인터럽트 상태를 확인한 경우, 상기 오프 칩 메모리 내의 출력 정보를 출력한다.
일 가능한 실시형태에서는, 제 3 스레드는 오프 칩 메모리의 하드웨어 인터럽트 상태를 확인한 경우, 오프 칩 메모리 내의 갱신된 출력 정보를 출력할 수 있다.
본 실시예에서는, 오프 칩 메모리의 하드웨어 인터럽트 상태에 따라서, 오프 칩 메모리 내의 출력 정보를 출력할 수 있다. 오프 칩 메모리의 하드웨어 인터럽트 상태는 오프 칩 메모리가 출력 정보를 수신한 것을 적시에 반영할 수 있어서 오프 칩 메모리 내의 출력 정보가 적시에 출력되는 것을 가능하게 한다.
도 1g는 본 개시의 일 실시예에 따른, 온 칩 프로세서의 블록도를 나타낸다. 도 1g에 도시된 바와 같이, 상기 온 칩 프로세서는 브레이크 포인트에 출력 함수가 설정되어 있는 온 칩 코드의 실행을 개시하기 위해서 이용되는 개시 모듈(10)과, 상기 온 칩 코드의 상기 출력 함수가 실행되었을 때의 상기 출력 함수의 출력 정보를 취득하기 위해서 이용되는 출력 정보 취득 모듈(20)과, 상기 출력 정보를 오프 칩 메모리에 기억하기 위해서 이용되는 기억 모듈(30)을 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보에 기초해서, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과를 확인하기 위해서 이용되는 브레이크 포인트 디버그 결과 확인 모듈을 더 포함한다.
일 가능한 실시형태에서는, 상기 출력 함수는 수치 프린트 함수 또는 문자열 프린트 함수를 포함한다.
일 가능한 실시형태에서는, 상기 출력 정보는 사전 설정된 수치 정보 또는 문자열 정보, 또는 상기 온 칩 코드 내의 상기 출력 함수 이외의 함수의 출력 정보를 포함한다.
일 가능한 실시형태에서는, 상기 출력 정보 취득 모듈은 상기 온 칩 프로세서에 의해, 온 칩 시스템의 RAM으로부터 상기 출력 함수의 출력 정보를 취득하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보를 출력하기 위해서 이용되는 출력 모듈을 더 포함한다.
일 가능한 실시형태에서는, 상기 출력 모듈은 드라이버 프로그램에 의해 상기 오프 칩 메모리 내의 출력 정보를 출력하기 위해서 이용되는 제 1 출력 서브 모듈을 포함한다.
일 가능한 실시형태에서는, 상기 출력 모듈은 상기 오프 칩 메모리 내의 출력 정보가 갱신되면, 갱신된 출력 정보를 출력하기 위해서 이용되는 제 2 출력 서브 모듈을 포함한다.
일 가능한 실시형태에서는, 상기 제 2 출력 서브 모듈은 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것과, 상기 제 1 스레드는 상기 출력 정보의 갱신을 확인한 경우 상기 오프 칩 메모리 상태 식별자를 갱신하는 것과, 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것과, 상기 제 2 스레드는 상기 상태 식별자의 갱신을 확인한 경우 상기 오프 칩 메모리 내의 갱신된 출력 정보를 출력하는 것에 이용된다.
일 가능한 실시형태에서는, 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것은, 드라이버 프로그램에 의해 상기 제 1 스레드를 기동해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것을 포함하고, 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것은 HOST 프로그램에 의해 상기 제 2 스레드를 기동해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것을 포함한다.
일 가능한 실시형태에서는, 상기 오프 칩 메모리 상태 식별자는 판독 완료 식별자 또는 미판독 식별자를 포함한다.
일 가능한 실시형태에서는, 상기 출력 모듈은 제 3 스레드를 이용해서, 상기 오프 칩 메모리의, 수신한 출력 정보에 기초해서 인터럽트 함수를 트리거해서 들어간 상태인 하드웨어 인터럽트 상태, 또는 하드웨어 비인터럽트 상태를 포함한 상기 오프 칩 메모리의 하드웨어 상태를 확인하는 것과, 상기 제 3 스레드는 상기 오프 칩 메모리의 하드웨어 인터럽트 상태를 확인한 경우, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것에 이용되는 제 3 출력 서브 모듈을 포함한다.
도 1h는 본 개시의 일 실시예에 따른, 브레이크 포인트에 의한 칩 디버그 시스템의 블록도를 나타낸다. 도 1h에 도시된 바와 같이, 상기 브레이크 포인트에 의한 칩 디버그 시스템은 온 칩 브레이크 포인트에 의한 디버그를 행하기 위한, 상기의 어느 한 항에 기재된 온 칩 프로세서를 포함한 브레이크 포인트 디버그 칩(100)과, 상기 브레이크 포인트 디버그 칩의 출력 정보를 기억하기 위해서 이용되는 오프 칩 메모리(200)를 포함한다.
한편, 전술한 각 방법의 실시예에 대해서는 설명을 간단하게 하기 위해서, 일련의 동작의 조합으로서 설명했지만, 당업자라면 본 개시는 기재된 동작 순서로 한정되는 것이 아니라는 것이 이해된다. 본 개시에 의하면, 몇 개의 단계는 다른 순서로 또는 동시에 실행되어도 되기 때문이다. 또한, 본 명세서에 기재된 실시예 모두가 선택 가능한 실시예에 속하고, 관련된 동작 및 모듈이 본 개시에 필수라고는 할 수 없다는 것도 당업자에게는 이해된다.
전술한 실시예에서는, 각 실시예의 설명은 각각의 중요한 점이 있으며, 특정의 실시예에 상세하게 기재되지 않은 부분은 다른 실시예의 관련 설명을 참조할 수 있다.
본 개시에 의해 제공되는 몇 개의 실시예에 있어서, 개시되는 장치는 다른 방법에 따라 실현되어도 된다는 점을 이해해야 한다. 예를 들면, 전술한 장치의 실시예는 예시적인 것에 지나지 않고, 예를 들면 상기 유닛의 분할은 논리 기능의 분할에 지나지 않으며, 실제로 실장될 때에, 다른 분할 방식이 있어도 된다. 예를 들면, 복수의 유닛 또는 컴포넌트는 조합해도 되고, 다른 시스템에 집적해도 되며, 몇 개의 특징을 무시해도 되고, 실행하지 않아도 되다. 다른 점으로는, 표시 또는 검토되는 상호 간의 결합 또는 직접 결합 또는 통신 접속은 몇 개의 인터페이스, 장치 또는 유닛을 통한 간접적인 결합 또는 통신 접속이어도 되고, 전기적 또는 다른 형태의 결합 또는 접속이어도 된다.
상기 분리된 부재로서 설명된 유닛은 물리적으로 분리되어도 되고, 물리적으로 분리되어 있지 않아도 된다. 유닛으로서 나타난 부재는 물리적인 유닛이어도 되고, 물리적인 유닛이 아니어도 되며, 1개의 장소에 있어도 되고, 복수의 네트워크 유닛으로 분산되어도 된다. 실제의 수요에 따라서, 그 중 일부 또는 전부의 유닛을 선택해서 본 실시예의 해결 수단의 목적을 달성할 수 있다.
또한, 본 개시의 각 실시예에 있어서의 각 기능 유닛은 1개의 처리 유닛에 집적되어도 되고, 각 유닛이 개별적으로 물리적으로 존재해도 되며, 2개 이상의 유닛이 1개의 유닛으로 집적되어도 된다. 상기 집적된 유닛은 하드웨어의 형태로 실현되어도 되고, 소프트웨어 프로그램 모듈(module)의 형태로 실현되어도 된다.
상기 집적된 유닛은 소프트웨어 프로그램 모듈의 형태로 실현되어, 독립적인 제품으로서 판매 또는 이용되는 경우, 컴퓨터 판독 가능한 메모리에 기억되어도 된다. 이러한 이해에 기초해서, 본 개시의 기술적 해결 수단은 본질적으로 또는 종래 기술에 공헌하는 부분 또는 해당 기술적 해결 수단의 전부 또는 일부가 소프트웨어 제품으로서 구현될 수 있으며, 해당 컴퓨터 소프트웨어 제품은 1개의 메모리에 기억되어, 1개의 컴퓨터 기기(퍼스널 컴퓨터, 서버 또는 네트워크 장치 등이어도 된다)에 본 개시의 각 실시예에 기재된 방법의 단계의 전부 또는 일부를 실행시키는 복수의 명령을 포함한다. 또한, 상기 메모리로는, U 디스크, 판독 전용 메모리(ROM, Read-Only Memory), RAM(RAM, Random Access Memory), 리무버블 하드 디스크, 자기 디스크 또는 광디스크 등, 프로그램 코드를 기억 가능한 각종 매체가 포함된다.
당업자라면, 전술한 실시예의 각종 방법에 있어서의 단계의 전부 또는 일부는 컴퓨터 판독 가능한 메모리에 기억 가능한 프로그램에 의해, 관련된 하드웨어에 지시해서 실행할 수 있다는 것이 이해된다. 메모리로는 플래시 디스크, 판독 전용 메모리(Read-Only Memory; ROM), RAM(Random Access Memory; RAM), 자기 디스크 또는 광디스크 등이 있다.
이상, 본 개시의 실시예에 대해서 상세하게 설명했으며, 본 개시의 원리 및 실시형태에 대해 구체예를 적용해서 설명했지만, 이상의 실시예의 설명은 본 개시의 방법 및 그 핵심 사상의 이해를 돕기 위한 것에 지나지 않고, 또한 당업자라면 본 개시의 사상에 기초해서, 구체적인 실시형태 및 적용 범위를 변경할 수 있다. 따라서, 본 명세서의 내용은 본 개시를 한정하는 것으로서 이해되어서는 안된다.
본 명세서에서는 본 개시의 실시예에 의한 방법, 장치(시스템), 및 컴퓨터 프로그램 제품의 플로우차트 및/또는 블록도를 참조해서, 본 개시의 여러가지 태양을 설명한다. 플로우차트 및/또는 블록도의 각 블록, 및 플로우차트 및/또는 블록도의 각 블록의 조합은 컴퓨터 판독 가능한 프로그램 명령에 의해 실현될 수 있다는 것을 이해해야 한다.
도면의 플로우차트 및 블록도는 본 개시의 복수의 실시예에 의한 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 실장 아키텍쳐, 기능, 및 동작을 나타낸다. 이러한 점으로부터, 플로우차트 또는 블록도의 각 블록은 소정의 논리 기능을 실현하기 위한 1개 이상의 실행 가능한 명령을 포함한 모듈, 세그먼트, 또는 명령의 일부를 나타낼 수 있다. 일부의 대체 실시형태에서는 블록에 첨부된 기능은 도면에 첨부된 순서와 상이하게 실행되어도 된다. 예를 들면, 연속하는 2개의 블록은 실제로는 실질적으로 병렬적으로 실행되어도 되고, 이들의 기능에 따라서는 반대 순서로 실행되는 일도 있다. 또한, 블록도 및/또는 플로우차트의 각 블록, 및 블록도 및/또는 플로우차트의 각 블록의 조합은 소정의 기능 또는 동작을 실행하는 전용의 하드웨어 베이스의 시스템으로 실현되어도 되고, 전용의 하드웨어와 컴퓨터 명령의 조합으로 실현되어도 된다.
이상, 본 개시의 각 실시예를 기술했지만, 상기 설명은 예시적인 것에 지나지 않으며, 망라적인 것이 아니고, 한편 개시된 각 실시예로 한정되는 것도 아니다. 당업자에게는 설명된 각 실시예의 범위 및 정신으로부터 일탈하는 일 없이, 여러가지 수정 및 변경이 자명하다. 본 명세서에서 선택된 용어는 각 실시예의 원리, 실제의 적용 또는 기존 기술에 대한 개선을 매우 적합하게 해석하거나 또는 다른 당업자에게 본문에 개시된 각 실시예를 이해시키기 위한 것이다.
또한, 근래에는 컴퓨터 하드웨어 성능의 향상에 따라서, 심층 학습 알고리즘이 더 많은 분야에서 넓게 이용되게 되었다. 화상 분류, 음성 인식, 기계 번역 등의 분야에서는 심층 학습 알고리즘(예를 들면 뉴럴 네트워크 알고리즘)은 이미 알려진 가장 효과 높은 알고리즘이다. 그러나, 어떠한 기기로 뉴럴 네트워크 알고리즘을 동작시켜도 계산량이 매우 방대하고, 이에 따라 고에너지 소비, 저에너지 효율의 문제는 매우 심각하게 된다. 모바일 기기의 경우, 배터리로부터 전력이 공급되어 기기의 소비 전력이 어렵게 제한되어 있기 때문에, 소비 전력의 문제가 특히 현저하게 된다. 이 때문에, 이동 단말로 심층 학습 알고리즘을 실행하는 것은 비용이 너무 많이 든다.
그래서, 본 개시는 네트워크 모델의 계산 요구에 대응하면서, 장치의 소비 전력을 저감시켜서 코스트를 저감시킬 수 있는 데이터 프로세서, 칩, 전자 기기 및 처리 방법을 제안한다. 본 개시는 데이터 처리의 분야에 관한 것이며, 특히 데이터 프로세서, 칩, 전자 기기 및 데이터 처리 방법에 관한 것이다.
이하, 본 개시의 실시예에 있어서의 기술적 해결 수단을, 본 개시의 실시예에 있어서의 첨부의 도면을 참조해서, 명확하고 완전하게 설명한다. 기재된 실시예는 본 개시의 모든 실시예는 아니고, 단순한 일부에 지나지 않는 것이 자명하다. 당업자에 의해 본 개시의 실시예에 기초해서 창조적인 노력없이 얻을 수 있는 모든 다른 실시예는 본 개시의 보호 범위에 속한다.
본 개시의 특허 청구의 범위, 명세서 및 도면에 있어서의 용어 '제 1', '제 2', '제 3' 및 '제 4' 등은 다른 대상을 구분하기 위한 것으로, 특정한 순서를 설명하기 위한 것이 아니라는 것을 이해해야 한다. 본 개시의 명세서 및 특허 청구의 범위에서 사용되는 용어 '포함한다'는 기술된 특징, 전체, 단계, 조작, 요소 및/또는 구성 요소의 존재를 나타내지만, 1개 이상의 다른 특징, 전체, 단계, 조작, 요소, 구성 요소 및/또는 이들의 집합의 존재 또는 추가를 배제하는 것은 아니다.
본 개시의 명세서에서 사용되는 용어는 특정의 실시예를 설명하기 위한 것에 지나지 않고, 본 개시를 한정하는 것이 아니라는 점도 이해해야 한다. 본 개시의 명세서 및 특허 청구의 범위에서 사용되는 바와 같은, 단수형의 '1개의(a)', '1개의(an)' 및 '이(the)'는 문맥상에서 명기되지 않는 이상 복수형을 포함하는 것을 의도하고 있다. 나아가, 본 개시의 명세서 및 특허 청구의 범위에서 사용되는 용어 '및/또는'은 관련해서 열거된 항목 중 하나 이상의 임의의 조합, 및 가능한 조합의 모두를 의미하고, 이들의 조합을 포함한다는 것을 이해해야 한다.
본 명세서 및 특허 청구의 범위에서 사용되는 바와 같이, 용어 '경우에'는 문맥에 따라서 '…때에', '…하면', '…라고 판정한 것에 따라서', 또는 '…를 검출한 것에 따라서'를 의미한다고 해석할 수 있다. 마찬가지로, 어구 '…라고 판정된 경우에' 또는 '[기술되는 조건 또는 이벤트]가 검출된 경우에'는 문맥에 따라서 '…라고 판정되면', 또는 '…라고 판정했던 것에 따라서', 또는 '[기술되는 조건 또는 이벤트]가 검출되면' 또는 '[기술되는 조건 또는 이벤트]를 검출한 것에 따라서'를 의미한다고 해석할 수 있다.
도 2a는 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다. 본 개시의 실시예에 있어서의 데이터 프로세서는 심층 학습 알고리즘에 대응하는 네트워크 모델을 연산하기 위해서 이용할 수 있다. 여기서, 도 2a에 도시된 바와 같이, 본 개시의 실시예에 있어서의 데이터 프로세서는 기억 모듈(100)과, 태스크 할당 모듈(200)과 연산 모듈(300)을 구비해도 된다.
기억 모듈(100)은 네트워크 모델의 연산 동작을 실행하기 위한 연산자와 연산 데이터를 포함한, 수신한 네트워크 모델 데이터를 기억하기 위해서 사용되어도 된다. 본 개시의 실시예에 있어서의 기억 모듈(100)은 다른 전자 디바이스와는 독립된 메모리여도 되고, 다른 전자 디바이스에 위치하는 내부 기억 유닛이어도 된다. 예를 들면, 기억 모듈은 제어 모듈 내부의 기억 유닛이어도 되고, 제어 모듈과는 독립한 메모리여도 된다. 네트워크 모델 데이터의 기억이 가능하다면, 본 개시의 실시예에 있어서의 기억 모듈로 해도 된다. 본 개시의 실시예에 있어서의 기억 모듈은 해당 네트워크 모델 데이터를 기억하는 어드레스 공간을 제어하기 위한 명령을 수신하고, 해당 명령에 따라서 네트워크 모델 데이터를 해당 어드레스 공간 내에 기억하며, 다른 디바이스가 해당 어드레스 공간으로부터 관련 데이터를 판독하는 것을 용이하게 한다.
또한, 본 개시의 실시예에 있어서, 네트워크 모델 데이터에는 네트워크 모델의 연산 동작을 실행하는 연산자와, 연산을 실행하기 위해서 필요한 연산 데이터가 포함되어도 된다. 여기서, 연산자에는 복수의 연산 명령이 포함되어도 되고, 각 연산자는 1개 이상의 입력/출력 데이터에 접속되어도 된다. 도 2b에 도시된 바와 같이, 본 개시의 실시예에 있어서의 네트워크 모델의 연산자의 계산 모델도로서, 해당 계산 모델도는 본 개시의 실시예의 계산 모델도의 일례에 지나지 않고, 네트워크 모델의 연산 동작에 있어서의 각 연산자 사이의 논리 관계를 대응시켜서 나타내고 있다. 다른 실시예에 있어서의 연산 동작에 대해서는, 계산 모델도가 상이해도 된다. 도 2b에 도시된 바와 같이, 연산자 f1, f2가 포함되어도 되고, 다른 실시예에서는 복수의 연산자가 포함되어도 된다. 각 연산자로부터 구성되는 계산 그래프 모델은 유향 비순회 그래프여도 되고, 각 연산자는 해당 계산 그래프 모델에서 계산을 실행하는 노드여도 되며, 1개 이상의 입력/출력 데이터에 접속되어 있다. 예를 들어, 연산자 f1의 출력 데이터는 다른 연산자 f2의 입력 데이터여도 되고, 이 경우, f1와 f2 사이에 데이터 의존이 있거나, f2가 f1에 의존하고 있는 것을 의미한다. 또한, 연산자 노드의 정보(연산자의 정보)는 연산자 타입, 연산자 입출력 데이터의 차원 정보, 연산자 내부 데이터의 차원 정보 등을 포함할 수 있다. 이들 정보에 의해 연산자의 상관 연산을 실행할 수 있다. 각 연산자는 연산 동작을 실행하는 1개 이상의 연산 명령을 포함할 수 있다. 또한, 연산 데이터는 네트워크 모델 연산을 실행하는 초기 데이터를 포함해도 되고, 연산 과정에서 생성되는 중간 데이터를 포함해도 된다. 예를 들면, 본 개시의 실시예의 네트워크 모델은 뉴럴 네트워크 구조 및 뉴럴 네트워크 연산 데이터의 2개의 부분을 포함한 뉴럴 네트워크 모델을 포함할 수 있다. 뉴럴 네트워크 구조는 뉴럴 네트워크의 모델 구조를 기술하는 것으로, 네트워크내의 연산자 정보, 연산 데이터의 정보, 연산자와 연산 데이터와의 접속 형태의 정보를 포함할 수 있다. 뉴럴 네트워크의 연산 데이터는 유저가 입력한 데이터(실제 계산에 이용되는 데이터), 연산자의 내부 데이터(실제 계산에 이용되는 데이터이기도 하고, 예를 들어, 컨볼루션 연산자의 컨볼루션 커넬, 전체 결합 연산자의 가중이다)등을 포함할 수 있다.
또한, 본 개시의 실시예에 있어서의 태스크 할당 모듈(200)은 사전 설정된 알고리즘을 이용해서 각 상기 연산자에 제 1 플래그 또는 제 2 플래그를 할당하기 위해서 이용될 수 있고, 제 1 플래그가 할당되어 있는 연산자의 연산 난이도는 제 2 플래그가 할당되어 있는 연산자의 연산 난이도보다 크다. 본 개시의 실시예에 있어서, 연산자의 연산 난이도에 따라서, 연산자에 제 1 플래그 또는 제 2 플래그를 할당할 수 있다. 본 개시의 실시예에 있어서의 연산 난이도는 연산자에 있어서의 연산 명령의 수, 종류, 연산 시간 등의 파라미터에 관련될 수 있다. 여기서, 제 1 플래그 및 제 2 플래그는 2개의 상이한 플래그 값으로 구분되어도 되고, 특정한 문자나 문자의 조합이어도 되며, 본 개시의 실시예는 이것을 한정하지 않는다. 또한, 제 1 플래그에 대응하는 연산자의 연산 난이도는 제 2 플래그에 대응하는 연산자의 연산 난이도보다 크다.
연산 모듈(300)은 적어도 하나의 빅 코어 연산 유닛과 적어도 하나의 리틀 코어 연산 유닛을 포함할 수 있다. 본 개시의 실시예에 있어서, 연산 모듈(300)은 1개 이상의 빅 코어 연산 유닛을 포함한 빅 코어 그룹(301)과 1개 이상의 리틀 코어 연산 유닛을 포함한 리틀 코어 그룹(302)을 포함할 수 있다. 연산 모듈(300)은 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하고, 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행해도 된다.
여기서, 빅 코어 그룹(301)에 있어서의 빅 코어 연산 유닛은 연산 능력이 높고 소비 전력이 높은 네트워크 프로세서 코어이고, 리틀 코어 그룹(302)에 있어서의 리틀 코어 연산 유닛은 연산 능력이 약간 약하고 소비 전력이 낮은 네트워크 프로세서 코어이다. 빅 코어 그룹과 리틀 코어 그룹으로부터 본 개시의 실시예에 있어서의 연산 모듈(300)의 연산 코어를 구성한다. 본 개시의 실시예에 있어서, 빅 코어 연산 유닛과 리틀 코어 연산 유닛의 차이점에 대해서, 빅 코어 연산 유닛은 보다 많은 연산 유닛재를 포함하고, 연산 능력이 매우 높지만, 연산 소비 전력, 기동 소비 전력이 모두 비교적 크고, 이에 비해 리틀 코어 연산 유닛은 보다 적은 연산 유닛재를 가지고, 연산 능력이 비교적 약하지만, 연산 소비 전력, 기동 소비 전력이 모두 비교적 작은 점에 있다. 빅 코어 그룹(301)과 리틀 코어 그룹(302)에서 연산 유닛의 수는 달라도 되고, 리틀 코어 그룹(302)의 연산 유닛의 수는 빅 코어 그룹(301)의 연산 유닛의 수보다 적어도 된다. 또한, 본 개시의 실시예에 있어서의 빅 코어 그룹(301) 내의 빅 코어 연산 유닛과 리틀 코어 그룹(302) 내의 리틀 코어 연산 유닛은 동시에 병렬로 동작해도 되고, 구체적으로는 대응하는 스케줄링 제어에 기초해서 실현되어도 된다.
본 개시의 실시예에 있어서의 빅 코어 그룹(301) 및 리틀 코어 그룹(302) 내의 연산 유닛은 H형 구조, 펄스 어레이 머신 구조 및 트리 구조 중 어느 하나로서 구성될 수 있다. 빅 코어 그룹(301) 및 리틀 코어 그룹(302)에 있어서의 각 연산 유닛 구조의 구성은 같아도 되고 달라도 되며, 당업자에 의해 필요에 따라서 설정할 수 있으며, 본 개시는 이것을 한정하지 않는다. 이하, 빅 코어 그룹 및 리틀 코어 그룹의 연산 유닛의 구조에 대해서 상기의 구조로서 설명한다.
도 2g는 본 개시의 실시예에 따른 H형 구조로서 구성되는 연산 유닛의 블록도를 나타낸다. 도 2g에 도시된 바와 같이 빅 코어 그룹(301) 또는 리틀 코어 그룹(302)에 있어서의 각 연산 유닛이 H형 구조로서 구성되는 경우, 빅 코어 그룹 및 리틀 코어 그룹에 있어서의 연산 유닛은 주연산 유닛(3001), 적어도 하나의 분기 연산 유닛(3002) 및 복수의 종연산 유닛(3003)을 포함할 수 있다. 주연산 유닛(3001)은 각 분기 연산 유닛(3002)에 접속되고, 분기 연산 유닛(3002)은 종연산 유닛(3003)의 적어도 1개에 각각 접속되어도 되고, 또한 각 종연산 유닛(3003)은 1개의 분기 연산 유닛(3002)에만 접속되어도 된다. 도 2g에 도시된 바와 같이, 4개의 분기 연산 유닛(3002)을 포함하고, 각 분기 연산 유닛(3002)에는 4개의 종연산 유닛(3003)이 각각 접속되어 있고, 해당 분기 연산 유닛(3002)은 주연산 유닛(3001)과 종연산 유닛(3003) 사이의 데이터, 명령 및 중간 결과의 전송에 이용될 수 있다.
본 개시의 실시예에 있어서, 뉴럴 네트워크 연산에 있어서의 전체 결합 연산을 예로 하면, 프로세스는 y=f(wx+b)이고, x는 입력 뉴런 행렬이며, w는 가중 행렬이고, b는 바이어스 스칼라이며, f는 활성화 함수이고, 구체적으로는 sigmoid 함수, tanh, relu, softmax 함수 중 어느 하나로 해도 된다. 여기서, 2분 트리 구조이며, 8개의 종연산 유닛(3003)을 가지는 것을 상정하면, 그 실현 방법으로서 태스크 할당 모듈(200)은 예를 들면, 입력 뉴런 행렬 x, 가중 행렬 w 및 전체 결합 연산 명령(연산자)을 포함한 네트워크 모델 데이터를 기억 모듈(100)로부터 취득하고, 각 연산자에 각각 제 1 플래그 또는 제 2 플래그를 할당하며, 플래그가 대응해서 할당되어 있는 연산자 및 연산 데이터를 연산 모듈(300)에 전송하도록 해도 된다.
연산 모듈(300)에 대응하는 빅 코어 그룹(301) 및 리틀 코어 그룹(302)이 플래그에 따라서 연산 동작을 실행할 때에, 상기 주연산 유닛(3001)은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 분기 연산 유닛(3002)을 통해서 연산 명령 및 데이터 블록을 대응하는 종연산 유닛(3003)에 전송해서, 연산을 행한 중간 결과를 획득하며, 상기 중간 결과에 기초해서 최종 연산 결과를 획득하도록 구성되고, 분기 연산 유닛은 상기 주연산 유닛과 종연산 유닛 사이에서 데이터 블록, 연산 명령 및 가중 등의 정보를 전송하도록 구성된다. 예를 들면, 입력 뉴런 행렬 x를 8개의 서브 행렬로 분할하고, 8개의 서브 행렬을, 분기 연산 유닛(3002)을 통해서 8개의 종연산 유닛(3003)에 분배하며, 가중 행렬 w를 8개의 종연산 유닛(3003)에 브로드캐스트하도록 해도 된다.
종연산 유닛(3003)은 대응하는 연산 명령이 완료되면, 대응하는 중간 결과를 생성해서, 분기 연산 유닛(3002)을 통해서 해당 중간 결과를 주연산 유닛(3001)에 돌려줄 수 있다. 즉, 각 종연산 유닛은 8개의 서브 행렬과 가중 행렬 w의 곱셈과 누적 가산을 병렬적으로 실행해서 8개의 중간 결과를 획득하며, 8개의 중간 결과를 주연산 유닛(3001)에 보낼 수 있다.
주연산 유닛(3001)은 획득된 중간 결과를 더 연산 처리해서 최종적인 연산 결과를 획득할 수 있다. 예를 들면, 8개의 중간 결과를 소팅하고, 대응하는 연산 처리를 실시해서 대응하는 연산 결과를 획득하며, 이 연산 결과에 대해서 바이어스 b의 연산을 실행한 후에 활성화 동작을 실행해서 최종 결과 y를 획득하고, 최종 결과 y를 기억 모듈(100)에 송신해서 기억시키거나 다른 전자 디바이스에 전송하여 후속의 처리를 행하거나 할 수 있으며 즉, 해당 최종 결과 y를 출력하거나 또는 기억 모듈(100) 내에 기억시킬 수 있다.
또한, 도 2h는 본 개시의 실시예에 따른, 펄스 어레이 머신 구조로서 구성되는 연산 유닛의 블록도를 나타낸다. 여기서, 빅 코어 그룹(301) 또는 리틀 코어 그룹(302)에 있어서의 각 연산 유닛이 펄스 어레이 머신 구조로서 구성되는 경우, 빅 코어 그룹 및 리틀 코어 그룹에 있어서의 연산 유닛은 주연산 유닛(3001) 및 복수의 종연산 유닛(3003)을 포함할 수 있다. 복수의 종연산 유닛(3003)은 어레이 형상으로 분포되어 있고, m행 n열(m 및 n는 1보다 큰 양의 정수이며, K는 양의 정수이다)의 종연산 유닛으로서 구성되며, 각 종연산 유닛(3003)은 인접하는 다른 종연산 유닛(3003)에 접속되고, 주연산 유닛(3001)은 상기 복수의 종연산 유닛(3003) 중 K개의 종연산 유닛(3003)에 접속되고, 상기 K개의 종연산 유닛(3003)은 제 1 행의 n개의 종연산 유닛(3003), 제 m 행의 n개의 종연산 유닛(3003) 및 제 1 열의 m개의 종연산 유닛(3003)이다. 한편, 설명하고자 하는 것은, 도 2h에 도시되는 K개의 종연산 유닛(3003)은 제 1 행의 n개의 종연산 유닛(3003), 제 m 행의 n개의 종연산 유닛(3003) 및 제 1 열의 m개의 종연산 유닛(3003)만을 포함하고, 즉 해당 K개의 종연산 유닛(3003)은 복수의 종연산 유닛(3003) 중, 주연산 유닛(3001)에 직접 접속되는 종연산 유닛(3003)이다. 해당 K개의 종연산 유닛(3003)은 상기 주연산 유닛(3001)과 복수의 종연산 유닛(3003) 사이에서의 데이터 및 명령의 전송에 이용될 수 있다. 상기 K개의 종연산 유닛은 상기 주연산 유닛과 나머지 종연산 유닛 사이의 데이터를 변환하도록 구성된다.
K개의 종연산 유닛을 제외한 나머지의 종연산 유닛은 해당 연산 명령에 따라, 수신한 데이터 블록에 대해서 연산을 실행해서 중간 결과를 획득하며, 연산 결과를 상기 K개의 종연산 유닛에 전송하도록 구성된다.
주연산 유닛(3001)은 할당된 연산자를 K개의 종연산 유닛(3003)에 전송해서 연산할 수 있고, 나머지 종연산 유닛(3003)에 접속함으로써, 해당 나머지의 종연산 유닛(3003)으로부터 중간 결과를 획득할 수 있다. 주연산 유닛(3001)은 해당 복수의 나머지의 종연산 유닛(3003)으로부터 송신된 중간 결과를 처리해서 최종적인 연산 결과를 획득하고, 해당 연산 결과를 상기 기억 모듈(100)에 송신해서 기억시키기 위해서 이용될 수 있다.
또한, 도 2i는 본 개시의 실시예에 따른, 트리 구조로서 구성되는 연산 유닛의 블록도를 나타낸다. 빅 코어 그룹(301) 또는 리틀 코어 그룹(302)에 있어서의 각 연산 유닛이 트리 구조로서 구성되는 경우, 빅 코어 그룹 및 리틀 코어 그룹에 있어서의 연산 유닛은 주연산 유닛(3001) 및 복수의 종연산 유닛(3003), 상기 주연산 유닛(3001)과 종연산 유닛 사이에 접속되는 트리형 모듈(3004)을 포함할 수 있다. 여기서, 상기 트리형 모듈(3004)은 1개의 루트 포트(1) 및 복수의 분기 포트(2)를 포함하고, 상기 트리형 모듈의 루트 포트는 상기 주연산 유닛(3001)에 접속되고, 상기 트리형 모듈의 복수의 분기 포트는 복수의 종연산 유닛 중 하나의 종연산 유닛에 각각 접속된다. 상기 트리형 모듈은 송수신 기능을 가진다. 도 2i에 도시된 바와 같이, 해당 트리형 모듈이 송신 기능을 갖지만, 다른 실시예에서는 수신 기능을 가져도 되고, 여기서 한정하지 않는다. 트리형 모듈(3004)은 상기 주연산 유닛과 상기 복수의 종연산 유닛 사이에서 데이터 블록, 가중 및 연산 명령을 전송하기 위해서 사용될 수 있다. 주연산 유닛(3001)은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 트리형 모듈(3004)에 송신하고, 그 다음에, 트리형 모듈(3004)은 대응하는 데이터, 연산 명령 및 가중을 대응하는 종연산 유닛(3003)에 전송해서, 종연산 유닛(3003)으로부터 중간 결과를 수신하고 주연산 유닛(3001)에 전송한다. 그리고, 주연산 유닛(3001)은 중간 결과를 처리해서 최종적인 연산 결과를 획득하며, 해당 연산 결과를 상기 기억 모듈(100)에 송신해서 기억시킬 수 있다.
본 개시의 실시예에 있어서, 해당 트리형 모듈은 적어도 1층의, 전송 기능을 가지는 선구조인 노드를 포함할 수 있고, 해당 노드 자체는 계산 기능을 갖지 않아도 된다. 트리형 모듈이 제로층의 노드를 가지는 경우, 해당 트리형 모듈은 불필요하다.
본 개시의 실시예에 있어서, 해당 트리형 모듈은 n분 트리 구조여도 된다. 예를 들어, 도 2j에 나타낸 것과 같은 2분 트리 구조여도 되지만, 3분 트리 구조여도 되는 것은 물론이다. 해당 n은 2이상의 정수일 수 있다. 본 출원의 구체적인 실시 형태는 상기 n의 구체적인 취할 수 있는 값을 한정하지 않는다. 상기 층수는 2이며, 종연산 유닛은 마지막으로부터 2번째의 층의 노드 이외의 다른 층의 노드에 접속되고 예를 들어, 마지막으로부터 1번째의 층의 노드에 접속되도록 해도 된다.
또한, 본 개시의 실시예에 있어서의 연산 유닛은 단독의 캐시를 가질 수 있고 예를 들면, 해당 종연산 유닛의 입력 뉴런 벡터 데이터 및 출력 뉴런 값 데이터를 캐시하는 뉴런 캐시 유닛을 포함할 수 있다. 바람직하게는 해당 트리형 모듈은 n분 트리 구조로, 예를 들면, 도 2j, 본 개시의 실시예에 있어서의 2분 트리 구조로서 구성되는 연산 유닛의 블록도를 나타낸다. 다른 실시예에서는 각 연산 유닛은 3분 트리 구조, 또는 다른 n분 트리 구조로서 구성되어도 되고, 해당 n는 2이상의 정수일 수 있다. 본 출원의 구체적인 실시 형태는 상기 n의 구체적인 취할 수 있는 값을 한정하지 않고, 상기 층수는 2여도 되고, 다른 층수여도 된다. 종연산 유닛(3003)은 여기에 인접하는 계층의 노드 상의 종연산 유닛(3003)에 접속할 수 있고, 도 2j에 있어서의 각 노드는 종연산 유닛(3003)에 대응할 수 있다.
바람직하게는 상기 연산 유닛은 단독의 캐시를 가질 수 있고 예를 들면, 해당 종연산 유닛(3003)의 입력 데이터 및 출력 데이터, 예를 들면 입력 뉴런 벡터 데이터 및 출력 뉴런 값 데이터를 캐시하는 뉴런 캐시 유닛을 포함할 수 있다.
또한, 본 개시의 실시예에 있어서, 연산 모듈(300)은 기억 모듈(100) 및 태스크 할당 모듈(200)에 직접 접속되어도 되고, 이로써 태스크 할당 모듈(200)에 의해 할당되어 있는 플래그 값에 기초해서, 각각의 연산 유닛에 의해 대응하는 연산자에 있어서의 연산 명령을 실행할 수 있다. 다른 실시예에서는 데이터 프로세서는 태스크 할당 모듈(200)에 의해 연산자에 할당되어 있는 플래그 값에 기초해서 대응하는 연산 동작을 실행하도록 연산 모듈(300)을 제어하는 제어 모듈을 더 포함할 수 있다.
이상과 같은 구성에 기초해서, 본 개시의 실시예는 다른 연산자에 대응 플래그를 할당하고, 연산 모듈이 해당 플래그에 따라서, 다른 연산 유닛을 이용해서 연산 동작을 실행하도록 할 수 있으며, 이로써 빅 코어 연산 유닛에 의해 난이도가 높은 연산 명령을 연산하고, 리틀 코어 연산 유닛에 의해 난이도가 낮은 연산 명령을 연산하는 것을 실현할 수 있어, 연산 유닛의 합리적인 사용을 실현함과 아울러, 소비 전력을 저감해서 코스트를 저감시킬 수 있다.
나아가 본 개시의 실시예에 있어서, 기억 모듈(100)에 기억되어 있는 네트워크 모델 데이터는 드라이버 프로그램 모듈에 의해 처리된 데이터 정보여도 된다. 네트워크 모델에 관한 연산을 실행할 필요가 있는 경우, 유저는 전술한 네트워크 모델 데이터를 결정하기 위한 네트워크 모델의 기술 정보를 제출할 수 있다. 드라이버 프로그램 모듈은 네트워크 모델 기술 정보에 기초해서, 네트워크 모델의 연산 동작을 실행하는 연산 데이터의 데이터 기술자를 확립하고, 및 네트워크 모델에 있어서의 연산자의 연산자 기술자를 확립하며, 연산자 기술자와 데이터 기술자 사이의 접속 관계를 확립해서 네트워크 모델을 기술한 후, 기억 할당 모듈에 의해 해당 데이터 기술자 및 연산자 기술자에게 기억 모듈(100) 상의 기억 공간을 할당한 기억 공간의 어드레스를 획득하고, 기억 모듈 상의 할당되어 있는 공간에 데이터를 전송한다. 해당 연산자 기술자 및 데이터 기술자에 의해, 연산 데이터 및 연산자를 결정할 수 있다.
이하, 본 개시의 실시예에 있어서의 태스크 할당 모듈의 플래그 할당의 방식에 대해 예를 들어 설명한다. 여기서, 태스크 할당 모듈(200)은 유저에 의해 제출된 네트워크 모델 데이터에 있어서의 연산자를 빅 코어 그룹(301) 및 리틀 코어 그룹(302) 중 한쪽에 할당하기 위해서 사용될 수 있다. 한편, 태스크 할당 모듈(200)은 복수의 네트워크 모델의 연산자에 동시에 제 1 플래그 또는 제 2 플래그를 할당할 수 있고, 이에 대응해서, 연산 모듈(300)은 복수의 네트워크 모델의 연산자를 동시에 실행할 수 있다. 여기서, 각 연산자는 1개 이상의 연산 명령을 생성할 수 있고, 각 연산 명령은 이 연산 명령을 어느 연산 코어(빅 코어 또는 리틀 코어) 상에서 실행하고자 하는지를 나타내는 1개의 플래그(제 1 플래그 또는 제 2 플래그)가 할당된다. 태스크 할당 모듈에 의해 할당되는 최소 단위는 연산 명령이 아닌 연산자여도 되고, 즉 동일한 연산자에 의해 생성된 모든 명령이 동일한 플래그에 대응한다. 이하에서는 1개의 노드(연산자)가 빅/리틀 코어 상에서 실행되고 있다고 하는 것은, 그 연산자에 의해 생성된 모든 명령이 대응하는 코어(빅 코어 또는 리틀 코어) 상에서 실행되고 있다는 것을 의미한다.
본 개시의 실시예에 있어서, 태스크 할당 모듈(200)은 각 연산자 각각의, 빅 코어 연산 유닛으로 연산되는 경우의 연산 시간과 리틀 코어 연산 유닛으로 연산되는 경우의 연산 시간에 기초해서, 각 연산자에 제 1 플래그 또는 제 2 플래그를 할당할 수 있다.
본 개시의 실시예에 있어서, 태스크 할당 모듈(200)은 각 연산자 각각의, 빅 코어 연산 유닛 및 리틀 코어 연산 유닛으로 연산이 실행되는 경우의 연산 시간을 취득할 수 있어 예를 들면, 빅 코어 연산 유닛에서의 연산 시간이 제 1 연산 시간이고, 리틀 코어 연산 유닛에서의 연산 시간이 제 2 연산 시간이다. 태스크 할당 모듈(200)은 제 1 연산 시간이 제 1 반응을 일으키는 최소의 물리량 시간보다 큰 경우, 및/또는 제 2 연산 시간이 제 2 반응을 일으키는 최소의 물리량 시간보다 큰 경우, 해당 연산자에 제 1 플래그를 할당하고, 그렇지 않은 경우, 제 2 플래그를 할당할 수 있다. 여기서, 제 1 반응을 일으키는 최소의 물리량 시간은 제 2 반응을 일으키는 최소의 물리량 시간보다 크고, 제 1 반응을 일으키는 최소의 물리량 시간 및 제 2 반응을 일으키는 최소의 물리량 시간의 각각은 요구에 따라 설정되는 시간 반응을 일으키는 최소의 물리량이어도 되고, 본 개시의 실시예는 해당 시간 반응을 일으키는 최소의 물리량을 한정하지 않는다.
본 개시의 다른 실시예에 있어서, 태스크 할당 모듈(200)은 각 연산자 사이의 논리 관계에 기초해서 유향 그래프를 더 작성할 수 있고, 해당 유향 그래프의 노드는 각 상기 연산자에 대응한다. 또한, 빅 코어 연산 유닛이 각 연산자를 실행하는 경우의 제 1 연산 시간과 리틀 코어 연산 유닛이 각 연산자를 실행하는 경우의 제 2 연산 시간을 각각 취득하고, 상기 제 1 연산 시간을 각 노드의 지연 시간으로 해서 크리티컬 패스법을 이용하여, 각 노드에 대응하는 연산자에 제 1 플래그가 할당되어 있는 제 1 크리티컬 패스를 결정하도록 구성된다.
본 개시의 실시예의 사전 설정된 알고리즘은 크리티컬 패스법이어도 되고, 즉 크리티컬 패스법에 따라 연산자의 플래그를 결정해도 된다. 여기서, 태스크 할당 모듈(200)은 수신한 네트워크 모델 데이터에 기초해서 네트워크 모델을, 각 노드가 각각 연산자를 나타내는 유향 그래프(예를 들면 도 2b에 나타낸 바와 같이)에 추상화할 수 있다. 각 노드 v에 2개의 속성 t1(v) 및 t2(v)가 있고, t1(v)는 연산 명령이 빅 코어 그룹(301) 상에서 연산되는 경우의 제 1 연산 시간을 나타내고, t2(v)는 연산 명령이 리틀 코어 그룹(302) 상에서 연산되는 경우의 제 2 연산 시간을 나타낸다. 리틀 코어 그룹에 대한 빅 코어 그룹의 연산 속도의 비가 α(α>1)이라고 하면, t1(v)=t2(v)/이다. 우선, 각 연산자에 제 2 플래그를 할당하고, 각 노드 v의 지연을 t1(v)(즉 빅 코어 그룹상에서의 연산 시간)로 해서, 크리티컬 패스법으로 제 1 크리티컬 패스 L1를 찾아내게 해도 된다. 이 패스 상의 모든 노드는 빅 코어 상에서 실행되도록 플래그되고, 즉 해당 제 1 크리티컬 패스 상의 모든 노드에 대응하는 연산자에 제 1 플래그를 할당하고, 및 크리티컬 패스 이외의 모든 노드에 대응하는 연산자에 제 2 플래그를 할당한다. 즉, 제 1 크리티컬 패스 L1 상의 노드에 대응하는 연산자에 제 1 플래그를 할당하고, 나머지의 연산자에 제 2 플래그를 할당할 수 있다. 여기서, 당업자는 종래 기술의 수단에 기초해서 크리티컬 패스법의 구체적인 프로세스를 알 수 있으므로, 여기서 상세하게 설명하지 않는다.
본 개시의 다른 실시예에 있어서, 네트워크 모델 데이터에 해당 네트워크 모델 연산의 시효성, 즉 데이터 시효성도 포함할 수 있다. 데이터 시효성이란 유저가 이 네트워크 모델의 계산을 조속하게 완료시키고자 하는지 여부이다. 시효성은 부울 데이터 타입으로 간단하게 나타낼 수 있고, 이 값이 참(예를 들면 1)이면, 시효성이 강하다는(조속하게 완료시킬 필요가 있다는) 것을 나타내고, 이 값이 거짓(예를 들면 0)이면, 시효성이 약하다는(다소 늦어도 된다는) 것을 나타낸다. 따라서, 다른 네트워크 모델 데이터에 대해서, 그 연산자의 데이터 시효성을 다르게 할 수 있어 해당 시효성에 기초해서 네트워크 모델 내의 연산자의 연산의 긴급도를 결정할 수 있다.
본 개시의 실시예에 있어서, 유저가 시효성을 요구하는 경우, 태스크 할당 모듈(200)은 L1 상의 각 노드의 지연을 0으로 더 설정하고, 크리티컬 패스법을 이용해서 제 2 크리티컬 패스 L2를 찾아낸다. L2의 총 지연을 t(L2)로 하면, t(L2)≤t(L1)/a이면 알고리즘을 종료한다. t(L2)≤t(L1)/a이라고 하는 조건이 만족되지 않으면, 다시 해당 단계를 반복해서, 제 2 크리티컬 패스 L2 상의 노드에 대응하는 연산자에 제 1 플래그를 할당하고, L2 상의 각 노드의 지연을 0으로 설정하며, 다음에 크리티컬 패스법을 이용해서 제 3 크리티컬 패스 L3를 찾아낸다. t(L2)≤t(L1)/a가 될 때까지, 해당 단계를 반복한다. 새로운 크리티컬 패스를 끊임없이 찾아내고, 그 위의 노드 지연을 0으로 설정함으로써 모든 노드에 플래그를 할당할 수 있다. 어느 크리티컬 패스에 출현하는 노드는 제 1 플래그가 할당되고, 모든 크리티컬 패스에 출현하지 않는 노드는 제 2 플래그가 할당된다. 이 반복 과정의 의사 코드를 이하에 나타낸다. 크리티컬 패스의 지연의 제한 t(L2)≤t(L1)/a에 의해, 빅 코어 그룹 상에서 실행되는 연산자가 리틀 코어 그룹 상에서 실행되는 연산자를 대기하지 않는다는 점이 보증되어, 네트워크 모델 전체에 동작을 가장 고속으로 완료시킬 수 있다.
상기 실시예에 의하면, 제 1 플래그 또는 제 2 플래그의 할당 프로세스를 완료할 수 있고, 연산 모듈은 이에 따라서 연산 동작을 실행할 수 있다.
Figure pct00001
도 2c는 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다. 해당 데이터 프로세서는 기억 할당 모듈(400)을 더 포함할 수 있다. 기억 할당 모듈(400)은 기억 모듈(100) 내의 빈 기억 공간에 기초해서 각 상기 네트워크 모델 데이터에 기억 어드레스를 할당하고, 상기 기억 모듈(100)의 빈 기억 공간이 부족한 경우, 상기 네트워크 모델 데이터의 해방을 실행할지, 상기 네트워크 모델 데이터의 캐시를 실행할지를 선택한다.
기억 할당 모듈(400)은 유저에 의해 제출된 네트워크 모델 데이터를 기억하기 위한 기억 공간을 기억 모듈(100) 내에 할당하기 위해서 사용된다. 기억 할당 모듈(400)은 기억 모듈(100) 내의 빈 메모리 블록 등의 비어 기억 공간을 취득할 수 있고, 사용되고 있는 메모리 블록을 확인할 수도 있다. 기억 할당 모듈(400)은 모든 유저에 의해 공유되고 즉, 복수의 유저에 의해 제출된 네트워크 모델 데이터에, 대응하는 기억 공간을 할당하기 위해서 사용될 수 있다. 기억 할당 모듈(400)에 의해 사용되는 알고리즘은 buddy 알고리즘 또는 slab 알고리즘을 포함할 수 있지만, 본 개시의 실시예를 한정하는 것은 아니다.
본 개시의 실시예에 있어서, 복수의 유저가 동시에 네트워크 모델을 실행하는 경우, 기억 모듈(100)의 공간이 부족할 가능성이 있고, 즉 비어 기억 공간이 부족할 가능성이 있다. 이 경우, 기억 할당 모듈(400)은 공간 부족의 제시 정보를 피드백하고 유저로부터의 선택 정보를 수신할 수 있다. 해당 선택 정보는 연산 종료 정보 또는 연산 대기 정보를 포함할 수 있고, 기억 할당 모듈(400)은 연산 종료 정보에 기초해서 네트워크 모델 데이터의 해방을 선택하고 연산을 종료하거나, 또는 연산 대기 정보에 기초해서 상기 네트워크 모델 데이터를 캐시해서 상기 기억 모듈의 기억 공간이 충분하게 되면, 기억 모듈에 의해 해당 네트워크 모델 데이터를 기억한다. 즉, 본 개시의 실시예는 기억 공간이 부족한 경우, 이번 계산을 종료할지, 캐시 상의 빈 공간이 충분하게 되는 것을 기다리고 나서 연산할지를 유저에 의해 결정할 수 있다. 유저에 의해 대기를 결정하는 경우, 현재 실행중에 있는 계산 태스크가 종료되고, 그 계산 태스크의 출력 데이터가 드라이버 프로그램에 의해 메모리에 카피되고, 그 태스크에 관련된 입출력 공간이 해방된 후, 캐시된 네트워크 모델 데이터가 해당 해방된 기억 공간 내에 기억되며, 이로써 해당 유저의 계산 태스크가 실행된다. 메모리에 카피된 데이터는 장래 사용될 때 버스를 경유해서 기억 모듈에 재입력할 필요가 있다.
나아가, 본 개시의 실시예에 있어서의 데이터 프로세서는 기억 할당 모듈(400) 및 기억 모듈(300)에 각각 접속 가능한 모듈로, 상기 네트워크 모델 데이터를 기억 모듈(100)에 전송해서 기억시키고, 및 상기 연산 모듈의 연산 결과를 메모리에 전송하거나 메모리에 기억되어 있는 데이터를 기억 모듈(100) 등에 기억시키거나 하는데 이용할 수 있는 다이렉트 메모리 액세스 모듈(500)을 포함할 수 있다. 즉 본 개시의 실시예에 있어서의 다이렉트 메모리 액세스 모듈(500)은 기억 할당 모듈(400)과 기억 모듈(300) 사이에 데이터 접속을 확립함과 아울러, 기억 모듈(300)과 메모리 사이에 데이터 접속을 확립하고, 대응하는 데이터를 전송하기 위해서 이용되어도 된다.
도 2d는 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다. 해당 데이터 프로세서는 도 2c에 나타나는 실시예에 대해서, 캐시 모듈(600) 및 스케줄링 모듈(700)을 더 포함할 수 있다. 여기서, 캐시 모듈(600)은 연산 모듈(300)에 의해 연산 처리되는 연산자 및 연산 데이터를 캐시하기 위해서 이용될 수 있다. 상기 실시예와 마찬가지로, 태스크 할당 모듈(200)은 연산자에 대응 플래그를 할당하고, 해당 플래그 할당이 끝난 연산자는 캐시 모듈(600)에 캐시된다. 연산 모듈(300)이 대응하는 연산 명령을 실행할 수 있는 경우, 대응하는 연산자의 연산 명령이 캐시 모듈(600)으로부터 판독되어서 연산 동작을 실행하고, 연산자의 실행이 완료되면, 캐시 모듈은 해당 연산자의 캐시 데이터를 해방할 수 있다.
본 개시의 실시예에 있어서, 캐시 모듈(600)이 기억하는 연산자의 기억 구조는 표 1에 나타나지만, 표 중 각 열의 순서는 임의로 조정 가능하다.
Figure pct00002
여기서, 네트워크 연산 명령은 대응하는 네트워크 연산을 완료하기 위한 전용 명령의 모두를 포함하고, 연산자를 구성하기 위해서 사용된다. 네트워크 연산 명령에는 제어 명령, 데이터 전송 명령, 연산 명령 및 논리 명령이 포함되지만, 이들로 한정되지 않는다. 제어 명령은 네트워크 실행 프로세스를 제어하는 것으로, 데이터 전송 명령은 다른 기억 매체 사이의 데이터 전송을 완료하는 것이다. 데이터 형식은 행렬, 벡터 및 스칼라를 포함하지만, 이들로 한정되지 않는다. 연산 명령은 네트워크의 산술 연산을 완료하는 것이며, 행렬 연산 명령, 벡터 연산 명령, 스칼라 연산 명령, 컨볼루션 뉴럴 네트워크 연산 명령, 전체 결합 뉴럴 네트워크 연산 명령, 풀화(pool化) 뉴럴 네트워크 연산 명령, RBM 뉴럴 네트워크 연산 명령, LRN 뉴럴 네트워크 연산 명령, LCN 뉴럴 네트워크 연산 명령, LSTM 뉴럴 네트워크 연산 명령, RNN 뉴럴 네트워크 연산 명령, RELU 뉴럴 네트워크 연산 명령, PRELU 뉴럴 네트워크 연산 명령, SIGMOID 뉴럴 네트워크 연산 명령, TANH 뉴럴 네트워크 연산 명령 및 MAXOUT 뉴럴 네트워크 연산 명령을 포함하지만, 이들로 한정되지 않는다. 논리 명령은 뉴럴 네트워크의 논리 연산을 완료하는 것이며, 벡터 논리 연산 명령 및 스칼라 논리 연산 명령을 포함하지만, 이들로 한정되지 않는다.
RBM 뉴럴 네트워크 연산 명령은 RBM(Restricted Boltzmann Machine) 뉴럴 네트워크 연산을 실현하기 위해서 이용된다. LRN 뉴럴 네트워크 연산 명령은 LRN(Local Response Normalization) 뉴럴 네트워크 연산을 실현하기 위해서 이용된다. LSTM 뉴럴 네트워크 연산 명령은 LSTM(Long Short-Term Memory) 뉴럴 네트워크 연산을 실현하기 위해서 이용된다. RNN 뉴럴 네트워크 연산 명령은 RNN(Recurrent Neural NetworKs) 뉴럴 네트워크 연산을 실현하기 위해서 이용된다. RELU 뉴럴 네트워크 연산 명령은 RELU(Rectified linear unit) 뉴럴 네트워크 연산을 실현하기 위해서 이용된다. PRELU 뉴럴 네트워크 연산 명령은 PRELU(Parametric Rectified Linear Unit) 뉴럴 네트워크 연산을 실현하기 위해서 이용된다. SIGMOID 뉴럴 네트워크 연산 명령은 S형 성장 곡선(SIGMOID) 뉴럴 네트워크 연산을 실현하기 위해서 이용된다. y=sigmoid(x)=1/1+e-x이며, 여기서 x, y는 실수이다. TANH 뉴럴 네트워크 연산 명령은 쌍곡선 탄젠트 함수(TANH) 뉴럴 네트워크 연산을 실현하기 위해서 이용된다. MAXOUT 뉴럴 네트워크 연산 명령은 maxout 활성화 함수를 이용해서 노드를 출력하는(MAXOUT) 뉴럴 네트워크 연산을 실현하기 위해서 이용되고, Cambricon 명령 세트를 포함할 수 있다. Cambricon 명령 세트의 명령은 오퍼레이트 코드와 오퍼랜드로 구성된다. 명령 세트는 4종류의 명령을 포함하고, 각각 제어 명령(control instructions), 데이터 전송 명령(data transfer instructions), 연산 명령(computational instructions), 논리 명령(logical instructions)이다. 명령 세트의 각 명령의 길이는 고정 길이이다. 예를 들면, 명령 세트의 각 명령의 길이는 64bit여도 된다. 제어 명령은 실행 프로세스를 제어하기 위해서 이용된다. 제어 명령에는 점프(jump) 명령 및 조건 분기(conditional branch) 명령이 포함된다. 데이터 전송 명령은 다른 기억 매체 사이의 데이터 전송을 완료하기 위해서 이용된다. 데이터 전송 명령에는 로드(load) 명령, 스토어(store) 명령, 무브(move) 명령이 포함된다. load 명령은 메인 메모리로부터 캐시에 데이터를 로드하기 위해서 이용되고, store 명령은 캐시로부터 메인 메모리에 데이터를 기억하기 위해서 이용되며, move 명령은 캐시와 캐시의 사이, 또는 캐시와 레지스터의 사이, 또는 레지스터와 레지스터의 사이에 데이터를 반송하기 위해서 이용된다. 데이터 전송 명령은 행렬, 벡터 및 스칼라를 포함한 3개ㅇ의 상이한 데이터 조직 방식을 서포트하고 있다. 연산 명령은 네트워크 산술 연산을 완료하기 위해서 이용된다. 연산 명령에는 행렬 연산 명령, 벡터 연산 명령 및 스칼라 연산 명령이 포함된다. 행렬 연산 명령은 행렬 곱셈 벡터(matrix multiply vector), 벡터 곱셈 행렬(vector multiply matrix), 행렬 곱셈 스칼라(matrix multiply scalar), 외적(outer product), 행렬 가산 행렬(matrix add matrix), 행렬 감산 행렬(matrix subtract matrix)을 포함한 네트워크에 있어서의 행렬 연산을 완료한다. 벡터 연산 명령은 벡터 기본 연산(vector elementary arithmetics), 벡터 초월 함수 연산(vector transcendental functions), 내적(dot product), 벡터 랜덤 생성(random vector generator), 벡터의 최대/최소치(maximum/minimum of a vector)를 포함한 네트워크에 있어서의 벡터 연산을 완료한다. 벡터 기본 연산에는 벡터 가산, 감산, 곱셈, 제산(add, subtract, multiply, divide)이 포함되고, 벡터 초월 함수란, 다항식을 계수로 하는 다항식 방정식을 아무것도 만족하지 않는 함수로, 지수 함수, 대수 관계, 삼각 함수, 역삼각 함수가 포함되지만, 이들로 한정되지 않는다. 스칼라 연산 명령은 스칼라 기본 연산(scalar elementary arithmetics) 및 스칼라 초월 함수 연산(scalar transcendental functions)를 포함한 네트워크에 있어서의 스칼라 연산을 완료한다. 스칼라 기본 연산에는 스칼라 가산, 감산, 곱셈, 제산(add, subtract, multiply, divide)이 포함되고, 스칼라 초월 함수란 다항식을 계수로 하는 다항식 방정식을 아무것도 만족하지 않는 함수로, 지수 함수, 대수 관계, 삼각 함수, 역삼각 함수가 포함되지만 이들로 한정되지 않는다. 논리 명령은 네트워크의 논리 연산에 이용된다. 논리 연산에는 벡터 논리 연산 명령 및 스칼라 논리 연산 명령이 포함된다. 벡터 논리 연산 명령은 벡터 비교(vector compare), 벡터 논리 연산(vector logical operations) 및 벡터가 합병보다 큰 것(vector greater than merge)을 포함한다. 벡터 비교에는, 큰 것, 작은 것, 동일한 것, 그 이상, 그 이하 및 동일하지 않은 것이 포함된다. 벡터 논리 연산에는 논리적, 논리합, 논리 부정이 포함된다. 스칼라 논리 연산에는 스칼라 비교(scalar compare), 스칼라 논리 연산(scalar logical operations)이 포함된다. 스칼라 비교에는 큰 것, 작은 것, 동일한 것, 그 이상, 그 이하 및 동일하지 않은 것이 포함된다. 스칼라 논리 연산에는 논리곱, 논리합, 논리 부정이 포함된다.
나아가, 본 개시의 실시예에 있어서의 스케줄링 모듈(700)은 연산 모듈(300)의 연산 스케줄링을 실행할 수 있다. 스케줄링 모듈(700)은 연산 모듈(300)에 있어서의 각 연산 유닛의 연산 상태에 기초해서, 캐시 모듈(600)으로부터 연산자를 선택하고, 대응하는 연산 유닛으로 연산 동작을 실행하도록 스케줄링할 수 있다. 여기서, 스케줄링 모듈(700)은 연산 모듈(300)에 있어서의 빅 코어 연산 유닛 및 리틀 코어 연산 유닛의 연산 상태를 리얼타임으로 감시할 수 있고, 해당 연산 상태는 가동 상태 및 아이들 상태를 포함할 수 있다. 스케줄링 모듈(700)은 캐시 모듈(600)에 있어서의 각 연산자의 우선도 정보를 확인하고, 현재 캐시되고 있는 우선도가 가장 높은 연산자의 플래그를 확인하며, 해당 플래그에 기초해서 해당 우선도가 가장 높은 연산자를 실행하도록 연산 모듈을 제어한다.
본 개시의 실시예에 있어서의 네트워크 모델 데이터에는 유저 우선도 및/또는 데이터 시효성을 포함할 수 있는 우선도 정보가 더 포함되어도 된다. 유저가 네트워크 모델 데이터를 제출할 때, 해당 유저의 정보도 네트워크 모델 데이터에 포함된다. 각 유저는 시스템 관리 책임자가 각 유저에게 각각 설정한 유저 우선도 정보를 갖고, 데이터 프로세서에 네트워크 모델 데이터를 제출할 때에 데이터 시효성을 지정한다. 해당 데이터 시효성이란, 유저가 이 네트워크 모델의 계산을 조속하게 완료하고자 하는지 여부이다. 데이터 시효성은 부울 데이터 타입으로 간단하게 나타낼 수 있고, 이 값이 참이면, 시효성이 강하다는(조속하게 완료시킬 필요가 있다는) 것을 나타내고, 이 값이 거짓(예를 들면 0)이면, 시효성이 약하다는(다소 늦어도 된다는) 것을 나타낸다. 이에 기초해서, 스케줄링 모듈(700)은 유저 우선도가 가장 높은 연산자를 결정하고, 또한 유저 우선도가 가장 높은 연산자 중에서 데이터 시효성이 가장 강한 연산자를 결정하며, 해당 시효성이 가장 강한 연산자에 대응하는 플래그에 따라서, 해당 연산자에 대응하는 연산 명령을 실행하도록 연산 모듈을 제어한다.
스케줄링 모듈(700)은 또한 연산 모듈(300)에 비어 있는 연산 유닛이 존재하는지 여부를 확인할 수 있다. 예를 들면, 해당 시효성이 가장 강한 연산자에 대응하는 플래그가 제 1 플래그인 경우, 스케줄링 모듈(700)은 빅 코어 그룹(301)에 아이들 상태의 빅 코어 연산 유닛이 존재하는지 여부를 확인해서, 존재하는 경우, 해당 아이들 상태의 빅 코어 연산 유닛에 의해, 전술한 시효성이 가장 강한 연산자를 실행하고, 존재하지 않는 경우, 가동 상태의 빅 코어 연산 유닛이 아이들 상태로 전환되면, 해당 빅 코어 연산 유닛에 의해 해당 시효성이 가장 강한 연산자를 실행하거나, 또는 리틀 코어 그룹(302)에 있어서의 아이들 상태의 리틀 코어 연산 유닛에 의해 해당 시효성이 가장 강한 연산자를 실행할 수 있다. 복수의 유저의 사이에 경합 관계가 존재할 수 있기 때문에, 데이터 시효성의 리얼타임성이 만족되지 않을 가능성이 있다. 예를 들어, 연산자가 본래 빅 코어 그룹상에서 연산하도록 플래그 되어 있지만, 사전 설정된 시간 범위 내에 이용 가능한 빅 코어 연산 유닛이 없는 경우(모든 빅 코어 연산 유닛이 가동 상태에 있는 경우), 스케줄링 모듈(700)은 해당 연산자를 리틀 코어 연산 유닛으로 연산하도록 스케줄링할 수 있다. 해당 사전 설정된 시간 범위는 필요에 따라서 자유롭게 설정할 수 있고, 예를 들면 1분간이어도 되고, 또는 30초간이어도 되며, 본 개시는 이것을 한정하지 않는다. 또는 다른 실시예에서는 연산자가 본래 리틀 코어 그룹상에서 연산하도록 플래그되어 있지만, 사전 설정된 시간 범위 내에 이용 가능한 리틀 코어 연산 유닛이 없는 경우(모든 빅 코어 연산 유닛이 가동 상태에 있는 경우), 스케줄링 모듈(700)은 해당 연산자를 빅 코어 연산 유닛으로 연산하도록 스케줄링할 수 있다. 본 개시의 실시예에 기초해서, 스케줄링 모듈(700)이 명령 스케줄링을 실시할 때에, 유저의 유저 우선도가 높을수록, 그 유저로부터 지정한 시효성이 만족되지 않을 가능성이 낮다.
이상과 같이, 본 개시의 실시예는 다른 연산자에 대응 플래그를 할당하고, 연산 모듈이 해당 플래그에 따라서, 다른 연산 유닛을 이용해서 연산 동작을 실행하도록 할 수 있고, 이로써 빅 코어 연산 유닛에 의해 난이도가 높은 연산 명령을 연산하고, 리틀 코어 연산 유닛에 의해 난이도가 낮은 연산 명령을 연산하는 것을 실현할 수 있어, 연산 유닛의 합리적인 사용을 실현함과 아울러, 소비 전력을 저감해서 코스트를 저감시킬 수 있다.
본 개시에서 언급된 상기 각 방법의 실시예는 원리적인 논리에 반하지 않는 이상 서로 조합되어서 실시예를 형성할 수 있지만, 지면의 한계상 본 개시를 다시 설명하지 않는다는 것을 이해해야 한다.
또한, 본 개시는 상기 실시예에 있어서의 데이터 프로세서를 포함한 데이터 처리 칩, 전자 기기 및 데이터 프로세서에 적용되는 데이터 처리 방법을 더 제공하는데, 대응하는 기술적 해결 수단 및 설명이 방법 부분의 대응하는 기재를 참조하며, 설명은 생략한다.
본 개시의 실시예는 상기 실시예 중 어느 한 항에 기재된 데이터 프로세서를 포함한 데이터 처리 칩을 더 제공한다.
몇 개의 실시예에 있어서, 본 개시는 상기 칩을 포함한 칩 패키지 구조를 제공한다.
몇 개의 실시예에 있어서, 본 개시는 상기 칩 패키지 구조를 포함한 기판 카드를 제공한다.
본 개시의 실시예는 상기 실시예 중 어느 한 항에 기재된 데이터 프로세서 또는 데이터 처리 칩, 또는 상기 기판 카드를 포함한 전자 기기를 더 제공한다.
전자 기기는 데이터 처리 장치, 로보트, 컴퓨터, 프린터, 스캐너, 태블릿형 컴퓨터, 스마트 단말, 휴대전화, 드라이브 레코더, 네비게이터, 센서, 카메라, 서버, 클라우드 서버, 카메라, 비디오 카메라, 프로젝터, 손목시계, 헤드폰, 모바일 스토리지, 웨아러블 기기, 교통 기관, 가전 기기 및/또는 의료기기를 포함한다.
상기 교통 기관은 비행기, 선박 및/또는 차량을 포함하고, 상기 가전 기기는 텔레비젼, 에어콘, 전자렌지, 냉장고, 밥솥, 가습기, 세탁기, 전등, 가스 풍로, 레인지 푸드를 포함하며, 상기 의료기기는 핵자기 공명계, B초음파 장치 및/또는 심전계를 포함한다.
또한, 본 개시의 실시예는 상기 실시예에 기재된 데이터 프로세서에 적용되는 데이터 처리 방법을 더 제공하고, 도 2e는 본 개시의 실시예에 따른, 데이터 처리 방법의 플로우차트를 나타내며, 네트워크 모델의 연산 동작을 실행하기 위한 연산자와 연산 데이터를 포함한 네트워크 모델 데이터를 수신해서 기억하는 S100와, 사전 설정된 알고리즘을 이용해서 각 상기 연산자에 제 1 플래그 또는 제 2 플래그를 할당하고 제 1 플래그가 할당되어 있는 연산자의 연산 난이도는 제 2 플래그가 할당되어 있는 연산자의 연산 난이도보다 큰 S200와, 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하고 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 S300를 포함할 수 있다.
본 개시의 실시예에 있어서, 사전 설정된 알고리즘을 이용해서 각 상기 연산자에 제 1 플래그 또는 제 2 플래그를 할당하는 것은, 각 연산자 각각의, 빅 코어 연산 유닛으로 연산되는 경우의 연산 시간과 리틀 코어 연산 유닛으로 연산되는 경우의 연산 시간에 기초해서, 각 연산자에 제 1 플래그 또는 제 2 플래그를 할당하는 것을 포함한다.
본 개시의 실시예에 있어서, 각 연산자 각각의 빅 코어 연산 유닛 및 리틀 코어 연산 유닛으로 연산되는 경우의 연산 시간에 기초해서 각 연산자에 플래그를 할당하는 것은, 각 연산자 사이의 논리 관계에 기초해서 노드가 각 상기 연산자에 대응하는 유향 그래프를 작성하는 것과, 빅 코어 연산 유닛이 각 연산자를 실행하는 제 1 연산 시간과 리틀 코어 연산 유닛이 각 연산자를 실행하는 제 2 연산 시간을 각각 취득하는 것과, 상기 제 1 연산 시간을 각 노드의 지연 시간으로 해서, 제 1 크리티컬 패스법을 이용해서, 각 노드에 대응하는 연산자에 제 1 플래그가 할당되어 있는 제 1 크리티컬 패스를 결정하는 것을 포함한다.
본 개시의 실시예에 있어서, 네트워크 모델 데이터를 수신해서 기억하는 것은, 기억 모듈 내의 빈 기억 공간에 기초해서 각 상기 네트워크 모델 데이터에 기억 어드레스를 할당하고, 상기 기억 모듈의 빈 기억 공간이 부족한 경우에, 상기 네트워크 모델 데이터의 해방을 실행할지, 상기 네트워크 모델 데이터의 캐시를 실행할지를 선택하는 것을 포함한다.
본 개시의 실시예에 있어서, 상기 네트워크 모델 데이터에는 유저 우선도 및/또는 데이터 시효성을 포함한 우선도 정보가 포함되고, 상기 방법은 상기 각 연산자 및 이에 대응하는 제 1 플래그 또는 제 2 플래그를 캐시하는 것과, 상기 네트워크 모델 데이터 내의 우선도 정보에 기초해서, 상기 캐시 모듈 내의 우선도가 가장 높은 연산자를 실행하도록 상기 빅 코어 연산 유닛 또는 리틀 코어 연산 유닛을 제어하는 것을 더 포함한다.
본 개시의 실시예에 있어서, 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은 주연산 유닛과, 적어도 하나의 분기 연산 유닛과, 복수의 종연산 유닛을 포함하도록 구성되고, 상기 주연산 유닛은 각 분기 연산 유닛에 각각 접속되고, 각 분기 연산 유닛에 적어도 하나의 종연산 유닛이 접속되며, 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하고, 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 것은, 주연산 유닛에 의해, 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하는 것과, 분기 연산 유닛에 의해, 연산 명령 및 데이터 블록을 대응하는 종연산 유닛에 전송하는 것과, 종연산 유닛에 의해, 수신한 연산 명령 및 데이터 블록을 연산해서 중간 결과를 획득하며, 분기 연산 유닛을 통해서 해당 중간 결과를 주연산 유닛에 전송하여 최종 연산 결과를 획득하는 것을 포함한다.
본 개시의 실시예에 있어서, 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은 주연산 유닛과 복수의 종연산 유닛을 포함하도록 구성되고, 상기 복수의 종연산 유닛은 m행 n열의 종연산 유닛으로서 구성되며, 상기 주연산 유닛은 상기 복수의 종연산 유닛 중 제 1 행의 n개의 종연산 유닛과, 제 m 행의 n개의 종연산 유닛과, 제 1 열의 m개의 종연산 유닛을 포함한 K개의 종연산 유닛에 접속되며, 여기서 m 및 n는 1보다 큰 양의 정수이고, 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하며, 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 것은, 주연산 유닛에 의해, 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 상기 복수의 데이터 블록 중 적어도 하나의 데이터 블록 및 복수의 연산 명령 중 적어도 하나의 연산 명령을 상기 K개의 종연산 유닛에 송신하는 것과, K개의 종연산 유닛 이외의 나머지의 종연산 유닛에 의해, K개의 종연산 유닛으로부터 수신한 연산 명령 및 데이터 블록을 연산해서 중간 결과를 획득하며, K개의 종연산 유닛을 통해서 해당 중간 결과를 주연산 유닛에 전송하여 최종 연산 결과를 획득하는 것을 포함한다.
본 개시의 실시예에 있어서, 복수의 빅 코어 연산 유닛 및/또는 복수의 리틀 코어 연산 유닛을 포함하고, 해당 복수의 빅 코어 연산 유닛 또는 해당 복수의 리틀 코어 연산 유닛은, 주연산 유닛과 복수의 종연산 유닛과, 상기 주연산 유닛과 종연산 유닛 사이에 접속되는 트리형 모듈을 포함하도록 구성되고, 상기 트리형 모듈은 1개의 루트 포트와 복수의 분기 포트를 포함하며, 상기 트리형 모듈의 루트 포트가 상기 주연산 유닛에 접속되고, 상기 트리형 모듈의 복수의 분기 포트가 복수의 종연산 유닛 중 하나의 종연산 유닛에 각각 접속되며, 빅 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 1 플래그를 가지는 연산자를 실행하고, 리틀 코어 연산 유닛에 의해 상기 연산 데이터에 기초해서 제 2 플래그를 가지는 연산자를 실행하는 것은, 주연산 유닛에 의해, 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 상기 데이터 블록 및 연산 명령을 트리형 모듈의 루트 포트에 전송하는 것과, 트리형 모듈의 각 분기 포트에 접속되는 종연산 유닛에 의해, 수신한 연산 명령 및 데이터 블록에 기초해서 연산을 실행해서 중간 결과를 획득하며, 트리형 모듈을 통해서 해당 중간 결과를 주연산 유닛에 전송하여 최종 연산 결과를 획득하는 것을 포함한다.
도 2f는 본 개시의 일 예시적인 실시예에 따른, 전자 기기의 블록도를 나타낸다. 전자 기기는 단말, 서버 또는 그 외의 형태의 기기로서 제공될 수 있다. 전자 기기는 분류 태스크 증분 처리 기기(800)를 포함할 수 있다. 예컨대, 해당 기기(800)는 휴대전화, 컴퓨터, 디지털 방송 단말, 메세지 송수신 기기, 게임 콘솔, 태블릿형 기기, 의료기기, 피트니스 기기, 퍼스널·디지털·어시스턴트 등의 단말이어도 된다.
도 2f에 도시된 바와 같이, 기기(800)는 처리 컴포넌트(802), 메모리(804), 전원 컴포넌트(806), 멀티미디어 컴포넌트(808), 오디오 컴포넌트(810), 입력/출력(I/O)의 인터페이스(812), 센서 컴포넌트(814), 및 통신 컴포넌트(816) 중 하나 이상을 포함해도 된다.
처리 컴포넌트(802)는 통상, 기기(800)의 전체적인 동작, 예를 들면 표시, 전화 통화, 데이터 통신, 카메라 동작 및 기록 동작에 관련된 동작을 제어한다. 처리 컴포넌트(802)는 상기 방법의 단계의 모두 또는 일부를 실행하기 위해서, 명령을 실행하는 1개 이상의 프로세서(820)를 포함해도 된다. 또한, 처리 컴포넌트(802)는 다른 컴포넌트와의 인터렉션을 위한 1개 이상의 모듈을 포함해도 된다. 예를 들면, 처리 컴포넌트(802)는 멀티미디어 컴포넌트(808)와의 인터렉션을 위해서, 멀티미디어 모듈을 포함해도 된다.
메모리(804)는 기기(800)에서의 동작을 서포트하기 위한 여러가지 타입의 데이터를 기억하도록 구성된다. 이들의 데이터는 예컨대 기기(800)에 있어서 조작하는 모든 애플리케이션 프로그램 또는 방법의 명령, 연락처 데이터, 전화번호부 데이터, 메세지, 픽처, 비디오 등을 포함한다. 메모리(804)는 예를 들면 정적 RAM(SRAM), 전기적 소거 가능 프로그래머블 판독 전용 메모리(EEPROM), 소거 가능한 프로그래머블 판독 전용 메모리(EPROM), 프로그래머블 판독 전용 메모리(PROM), 판독 전용 메모리(ROM), 자기 메모리, 플래쉬 메모리, 자기 디스크 또는 광디스크 등의 여러가지 타입의 휘발성 또는 비휘발성 기억 장치 또는 그들의 조합에 의해 실현될 수 있다.
전원 컴포넌트(806)은 기기(800)의 각 컴포넌트에 전력을 공급한다. 전원 컴포넌트(806)은 전원 관리 시스템, 1개 이상의 전원, 및 기기(800)를 위한 전력 생성, 관리 및 배분에 관련하는 다른 컴포넌트를 포함해도 된다.
멀티미디어 컴포넌트(808)은 상기 기기(800)와 유저 사이에 출력 인터페이스를 제공하는 스크린을 포함한다. 몇 개의 실시예에서는 스크린은 액정 디스플레이(LCD) 및 터치 패널(TP)을 포함해도 된다. 스크린이 터치 패널을 포함한 경우, 유저로부터의 입력 신호를 수신하는 터치 스크린으로서 실현되어도 된다. 터치 패널은 터치, 슬라이드 및 터치 패널에서의 제스처를 검지하도록, 1개 이상의 터치 센서를 포함한다. 상기 터치 센서는 터치 또는 슬라이드 움직임의 경계를 검지할 뿐만 아니라, 상기 터치 또는 슬라이드 조작에 관련된 지속 시간 및 압력을 검출하도록 해도 된다. 몇 개의 실시예에서는 멀티미디어 컴포넌트(808)는 전면 카메라 및/또는 배면 카메라를 포함한다. 기기(800)가 동작 모드, 예를 들면 촬영 모드 또는 촬상 모드가 되는 경우, 전면 카메라 및/또는 배면 카메라는 외부의 멀티미디어 데이터를 수신하도록 해도 된다. 각 전면 카메라 및 배면 카메라는 고정된 광학 렌즈계, 또는 촛점거리 및 광학 줌능력을 가지는 것이어도 된다.
오디오 컴포넌트(810)는 오디오 신호를 출력 및/또는 입력하도록 구성된다. 예를 들면, 오디오 컴포넌트(810)는 하나의 마이크(MIC)를 포함하고, 마이크(MIC)는 기기(800)가 동작 모드, 예를 들면 통화 모드, 기록 모드 및 음성인식 모드가 되는 경우, 외부의 오디오 신호를 수신하도록 구성된다. 수신된 오디오 신호는 또한 메모리(804)에 기억되거나, 또는 통신 컴포넌트(816)를 통해서 송신되어도 된다. 몇 개의 실시예에서는 오디오 컴포넌트(810)는 또한 오디오 신호를 출력하기 위한 스피커를 포함한다.
I/O 인터페이스(812)는 처리 컴포넌트(802)와 주변 인터페이스 모듈 사이에 인터페이스를 제공하고, 상기 주변 인터페이스 모듈은 키보드, 클릭 휠, 버튼 등이어도 된다. 이들 버튼은 홈 버튼, 음량 버튼, 시작 버튼 및 락 버튼을 포함해도 되지만, 이들로 한정되지는 않는다.
센서 컴포넌트(814)는 기기(800)의 각 방면의 상태 평가를 위해서 1개 이상의 센서를 포함한다. 예를 들면, 센서 컴포넌트(814)는 기기(800)의 온/오프 상태, 예를 들면 기기(800)의 표시 장치 및 키패드와 같은 컴포넌트의 상대적 위치 결정을 검출할 수 있고, 센서 컴포넌트(814)는 또한 기기(800) 또는 기기(800)가 있는 컴포넌트의 위치의 변화, 유저와 기기(800)의 접촉 유무, 기기(800)의 방위 또는 가감 속도 및 기기(800)의 온도 변화를 검출할 수 있다. 센서 컴포넌트(814)는 어떠한 물리적 접촉도 없는 경우에 근방의 물체의 존재를 검출하도록 구성되는 근접 센서를 포함해도 된다. 센서 컴포넌트(814)는 또한 CMOS 또는 CCD 이미지 센서와 같은 이메징 어플리케이션에서 사용하기 위한 광 센서를 포함해도 된다. 몇 개의 실시예에서는 해당 센서 컴포넌트(814)는 또한 가속도 센서, 자이로 센서, 자기 센서, 압력 센서 또는 온도 센서를 포함해도 된다.
통신 컴포넌트(816)는 기기(800)와 다른 기기와의 유선 또는 라디오 커뮤니케이션을 실현하도록 구성된다. 기기(800)는 통신 규격에 근거한 무선 네트워크, 예를 들면 WiFi, 2G 또는 3G, 또는 이들의 조합에 액세스할 수 있다. 일 예시적 실시예에서는 통신 컴포넌트(816)는 방송 채널을 통해서 외부의 방송 관리 시스템으로부터의 방송 신호 또는 방송 관련 정보를 수신한다. 일 예시적 실시예에서는 상기 통신 컴포넌트(816)는 또한 근거리 통신을 촉진시키기 위해서, 근거리 라디오 커뮤니케이션(NFC) 모듈을 포함한다. 예를 들면, NFC 모듈은 무선 주파수 식별(RFID) 기술, 적외선 데이터 협회(IrDA) 기술, 초광대역(UWB) 기술, 블루투스(Bluetooth)(BT) 기술 및 다른 기술에 의해 실현될 수 있다.
예시적인 실시예에서는 기기(800)는 1개 이상의 주문형 집적회로(ASIC), 디지털 신호 프로세서(DSP), 디지털 시그널 프로셋서(DSPD), 프로그래머블 로직 디바이스(PLD), 필드 프로그래머블 게이트 어레이(FPGA), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 또는 다른 전자 요소에 의해 실현되어서 상기 방법을 실행하기 위해서 이용될 수 있다.
예시적인 실시예에 있어서, 컴퓨터 프로그램 명령이 기억되어 있는 비휘발성 컴퓨터 판독 가능한 기억 매체도 제공된다. 상기 컴퓨터 프로그램 명령이 프로세서에 의해 실행되면, 상기 실시예에 기재된 분류 태스크 증분 처리 방법을 실현시킨다. 예를 들면, 컴퓨터 프로그램 명령을 포함한 메모리(804)가 제공되고, 전술한 컴퓨터 프로그램 명령은 기기(800)의 프로세서(820)에 의해 실행되면 전술한 방법을 실행시킬 수 있다.
한편, 전술한 각 방법의 실시예에 대해서는 설명을 간단하게 하기 위해, 일련의 동작의 조합으로서 설명했지만, 당업자라면 본 출원은 기재된 동작 순서로 한정되는 것이 아니라는 것이 이해된다. 본 출원에 의하면, 몇 개의 단계는 다른 순서로, 또는 동시에 실행되어도 되기 때문이다. 또한, 본 명세서에 기재된 실시예 모두가 선택 가능한 실시예에 속하며, 관련하는 동작 및 모듈이 본 출원에 필수라고는 할 수 없다는 것도 당업자에게는 이해된다.
전술한 실시예에서는, 각 실시예의 설명은 각각의 중요한 점이 있으며, 특정의 실시예에 상세하게 기재되지 않은 부분은 다른 실시예의 관련 설명을 참조할 수 있다.
본 출원에 의해 제공되는 몇 개의 실시예에 있어서, 개시되는 장치는 다른 방법에 따라 실현되어도 된다는 점을 이해해야 한다. 예를 들면, 전술한 장치의 실시예는 예시적인 것에 지나지 않고, 예를 들면 상기 유닛의 분할은 논리 기능의 분할에 지나지 않으며, 실제로 실장될 때 다른 분할 방식이 있어도 된다. 예를 들면, 복수의 유닛 또는 컴포넌트는 조합해도 되고, 다른 시스템에 집적해도 되며, 몇 개의 특징을 무시해도 되고, 실행하지 않아도 되다. 다른 점에서는, 표시 또는 검토되는 상호 간의 결합 또는 직접 결합 또는 통신 접속은 몇 개의 인터페이스, 장치 또는 유닛을 통한 간접적인 결합 또는 통신 접속이어도 되고, 전기적 또는 다른 형태에서의 결합 또는 접속이어도 된다.
상기 분리 부재로서 설명된 유닛은 물리적으로 분리되어도 되고, 물리적으로 분리되지 않아도 된다. 유닛으로서 나타난 부재는 물리적인 유닛이어도 되고, 물리적인 유닛이 아니어도 되며, 1개의 장소에 있어도 되고, 복수의 네트워크 유닛에 분산되어도 된다. 실제의 수요에 따라서, 그 중의 일부 또는 전부의 유닛을 선택해서 본 실시예의 해결 수단의 목적을 달성할 수 있다.
또한, 본 출원의 각 실시예에 있어서의 각 기능 유닛은 1개의 처리 유닛에 집적되어도 되고, 각 유닛이 개별적으로 물리적으로 존재해도 되며, 2개 이상의 유닛이 1개의 유닛에 집적되어도 된다. 상기 집적된 유닛은 하드웨어의 형태로 실현되어도 되고, 소프트웨어 프로그램 모듈의 형태로 실현되어도 된다.
상기 집적된 유닛은 소프트웨어 프로그램 모듈의 형태로 실현되고, 독립적인 제품으로서 판매 또는 이용되는 경우, 컴퓨터 판독 가능한 메모리에 기억되어도 된다. 이러한 이해에 기초해서, 본 출원의 기술적 해결 수단은 본질적으로 또는 종래 기술에 공헌하는 부분 또는 해당 기술적 해결 수단의 전부 또는 일부가 소프트웨어 제품으로서 구현화될 수 있으며, 해당 컴퓨터 소프트웨어 제품은 1개의 메모리에 기억되고, 1개의 컴퓨터 기기(퍼스널 컴퓨터, 서버 또는 네트워크 장치 등이어도 된다)에 본 출원의 각 실시예에 기재된 방법의 단계의 전부 또는 일부를 실행시키는 복수의 명령을 포함한다. 또한, 상기 메모리에는 U 디스크, 판독 전용 메모리(ROM, Read-Only Memory), RAM(RAM, Random Access Memory), 리무버블 하드 디스크, 자기 디스크 또는 광디스크 등, 프로그램 코드를 기억 가능한 각종 매체가 포함된다.
당업자라면, 전술한 실시예의 각종 방법에 있어서의 단계의 전부 또는 일부는 컴퓨터 판독 가능한 메모리에 기억 가능한 프로그램에 의해, 관련된 하드웨어에 지시해서 실행할 수 있다는 것이 이해된다. 메모리로는 플래시 디스크, 판독 전용 메모리(Read-Only Memory; ROM), RAM(Random Access Memory; RAM), 자기 디스크 또는 광디스크 등이 있다.
이상, 본 개시의 실시예에 대해서 상세하게 설명했으며, 본 개시의 원리 및 실시형태에 대해 구체예를 적용해서 설명했지만, 이상의 실시예의 설명은 본 개시의 방법 및 그 핵심 사상의 이해를 돕기 위한 것에 지나지 않고, 또한 당업자라면 본 개시의 사상에 기초해서, 구체적인 실시형태 및 적용 범위를 변경할 수 있다. 따라서, 본 명세서의 내용은 본 개시를 한정하는 것으로서 이해되어서는 안된다.
또한, 종래 기술에서는 심층 학습에 관한 네트워크 모델은 통상, 대량의 연산이 존재한다. 예를 들면 뉴럴 네트워크 계산에, 몇 개의 계산의 병렬 처리 필요가 있으며, 예를 들면 순서 방향 연산, 역방향 연산, 가중 갱신 등의 프로세스에 많은 병렬 연산이 필요하다. 종래의 병렬 계산 시스템에서는 처리 유닛은 액세스 오버헤드가 너무 큰 기억 유닛으로부터 데이터를 읽고 쓰기할 필요가 있으며, 대량의 병렬 연산이 존재하기 때문에, 대역폭에 대한 수요가 매우 높아져서 소비 전력 오버헤드가 거대하게 되어 버린다.
본 개시의 실시예는 코스트를 저감할 수 있고, 또한 대역폭의 수요를 저감 할 수 있는 기술적 해결 수단을 제공해서, 연산 장치, 데이터 처리 칩, 전자 기기 및 연산 방법을 제공한다. 본 개시는 데이터 처리 기술의 분야에 관한 것이며, 특히 연산 장치, 데이터 처리 칩, 전자 기기 및 연산 방법에 관한 것이다.
이하에, 도면을 참조하면서 본 개시의 여러가지 예시적인 실시예, 특징 및 태양을 상세하게 설명한다. 도면에 있어서의 같은 부호는 같은 또는 유사한 기능 요소를 나타낸다. 도면에 있어서 실시예의 여러가지 방면을 나타냈지만, 특별히 언급하지 않는 이상, 비례에 따라 도면을 그릴 필요가 없다.
여기서의 용어 '예시적'이란, '예, 실시예로서 이용되는 것 또는 설명적인 것'을 의미한다. 여기서 '예시적'으로 설명되는 어떠한 실시예는 다른 실시예보다 바람직한 또는 뛰어난 것이라고 이해해서는 안된다.
또한, 본 개시를 보다 효과적으로 설명하기 위해서, 이하의 구체적인 실시형태에 있어서 여러가지 구체적인 세부 사항을 나타낸다. 당업자라면, 본 개시는 어떠한 구체적인 세부 사항이 없어도 마찬가지로 실시할 수 있다고 이해해야 한다. 몇 개의 실시예에서는 본 개시의 취지를 강조하기 위해서, 당업자가 숙지하고 있는 방법, 수단, 요소 및 회로에 대해 상세한 설명을 실시하지 않는다.
본 개시의 실시예는 심층 학습 네트워크 모델의 상관 연산의 계산에 이용될 수 있고 코스트를 저감할 수 있음과 아울러, 액세스 데이터의 대역폭의 요구를 저감할 수 있는 연산 장치를 제공한다.
도 3a는 본 개시의 실시예에 따른, 연산 장치의 블록도를 나타낸다. 해당 연산 장치는 복수의 연산 모듈(100)을 포함할 수 있고, 해당 복수의 연산 모듈(100)은 대응하는 연산 서브 커멘드를 병렬로 실행함으로써 네트워크 모델의 연산 동작을 완료할 수 있으며, 즉 본 개시의 실시예에 있어서의 연산 모듈(100)은 네트워크 모델의 연산을 완료하기 위한 다른 연산 서브 커멘드를 병렬로 실행할 수 있다. 도 3a는 4개의 연산 모듈을 포함한 실시예를 나타내고 있고, 각 연산 모듈끼리는 서로 접속되어도 되고, 일부의 연산 모듈끼리는 서로 접속되어도 되며, 본 개시는 이것을 한정하지 않는다.
본 개시의 실시예에 있어서의 네트워크 모델은 뉴럴 네트워크 모델을 포함해도 되고, 기계 학습을 위한 다른 네트워크 모델을 포함해도 된다. 해당 네트워크 모델은 기계 학습이나 전술한 뉴럴 네트워크 학습을 위해서 이용되어도 되고, 연산 장치는 해당 네트워크 모델의 연산을 실행하기 위해서 이용되어도 된다. 연산 장치는 네트워크 모델에 관한 연산 커멘드를 수신하고, 한편 해당 연산 커멘드에 기초해서 복수의 연산 서브 커멘드를 대응해서 생성하며, 해당 복수의 연산 서브 커멘드가 각각 복수의 연산 모듈(100)에 할당할 수 있으며 즉, 각 연산 모듈(100)이 1개 이상의 연산 서브 커멘드를 대응해서 실행함으로써, 네트워크 모델의 관련 연산을 대응해서 완료시킬 수 있다. 여기서, 연산 커멘드에는 연산 장치에 의해 실행되는 연산 동작이 포함된다.
네트워크 모델이 인공 뉴럴 네트워크 모델을 포함하는 경우, 상기 연산 커멘드는 연산 정보, 입력 뉴런 데이터, 가중 데이터 및 출력 뉴런 데이터를 포함할 수 있다. 상기 연산 정보는 순서 방향 연산 명령 또는 역방향 트레이닝 명령, 또는 컨볼루션 연산 명령 등의 다른 뉴럴 네트워크 연산 명령 등을 포함하지만, 이들로 한정되지 않고, 본 출원의 구체적인 실시형태는 상기 계산 명령의 구체적인 표현 형태를 한정하지 않는다.
이상 설명한 바와 같이, 본 개시의 실시예에 있어서의 연산 장치는 수신한 연산 커멘드에 기초해서 복수의 연산 서브 커멘드를 생성하고, 각 연산 모듈(100)에 대응하는 연산 서브 커멘드를 할당하며, 대응하는 연산 동작을 실행할 수 있다. 여기서, 각 연산 모듈(100)은 적어도 하나의 연산 유닛(101)과 각 연산 유닛(101)에 접속되는 기억 유닛(102)을 포함한다. 각 연산 모듈에 있어서의 연산 유닛(101)의 수나 종류는 동일해도 되고 상이해도 되며, 다른 연산 요구에 따라서 자유롭게 설정할 수 있다. 연산 유닛(101)은 1개 이상의 곱셈기, 1개 이상의 가산기, 가산기 로 이루어지는 가산 트리, 함수 활성화 유닛, 벡터 처리 유닛 등의 적어도 1개 이상을 포함해도 된다. 다른 실시예에서는 다른 연산 디바이스를 포함해도 된다. 곱셈기는 입력 데이터 1(in1)과 입력 데이터 2(in2)를 곱해서 곱한 후의 출력(out)을 획득할 수 있고, 그 프로세스는 out=in1*in2이다. 가산기는 입력 데이터(in1)를 가산기로 가산해서 출력 데이터(out)를 획득할 수 있다. 가산 트리는 입력 데이터(in1)를 가산 트리에 의해 단계적으로 가산해 출력 데이터(out)를 획득할 수 있으며, 여기서 in1는 길이 N의 벡터이고, N는 1보다 크고, 연산 프로세스는 out=in1[1]+in1[2]+ … +in1[N]이며, 및/또는 입력 데이터(in1)를 가산 트리에 의해 누적 가산한 후에 입력 데이터(in2)와 가산해서 출력 데이터(out)를 획득할 수 있고 그 프로세스는 out=in1[1]+in1[2]+ … +in1[N]+in2이며, 또는 입력 데이터(in1)와 입력 데이터(in2)를 가산해서 출력 데이터(out)를 획득할 수 있으며, 그 프로세스는 out=in1+in2이다. 함수 활성화 유닛은 입력 데이터(in)를 활성화 함수(active) 연산에 의해 활성화 출력 데이터(out)를 획득할 수 있고 그 프로세스는 out=active(in)이며, 활성화 함수 active는 sigmoid, tanh, relu 또는 softmax 등을 포함할 수 있지만, 다른 활성화 함수여도 된다. 함수 활성화 유닛은 활성화 동작에 더해서, 입력 데이터(in)를 연산(f)에 의해 출력 데이터(out)를 획득하는 다른 비선형 함수를 실현할 수 있으며 그 프로세스는 out=f(in)이다. 벡터 처리 유닛은 벡터 연산 및/또는 풀화 연산을 처리할 수 있다. 풀화 연산은 입력 데이터(in)를 풀화 연산에 의해 풀화 동작 후의 출력 데이터(out)를 획득할 수 있고, 그 프로세스는 out=pool(in)이며, pool는 풀화 동작 함수이고, 풀화 동작에는 평균값 풀화, 최대치 풀화, 중앙값 풀화가 포함되지만, 이것으로 한정되지 않고, 입력 데이터 in는 출력 out에 관련하는 풀화 코어 내의 데이터이다.
혹은 본 개시의 실시예에 있어서, 연산 유닛(101)은 대응하는 연산 서브 커멘드를 실행하기 위한 네트워크 프로세서(NPU), 또는 컴퓨터 기기 등 연산 기능을 가진 전자 기기 또는 디바이스를 포함해도 되고, 본 개시의 실시예를 한정하는 것은 아니다. 본 개시의 실시예에 있어서, 연산 모듈 내의 연산 유닛 및 기억 유닛은 양자 사이의 데이터 전송을 용이하게 하기 위해서, 1개의 기기 또는 디바이스 내에 설치된 전자 디바이스여도 된다.
본 개시의 실시예에 있어서의 각 연산 모듈(100)은 다른 연산을 실행해서 대응하는 연산 서브 커멘드를 완료하기 위한 적어도 하나의 연산 유닛(101)을 포함할 수 있다. 즉, 각 연산 모듈(100)은 수신한 연산 서브 커멘드에 따라서, 다른 연산 유닛(101)을 대응해서 제어하여 대응하는 연산 동작을 실행할 수 있다. 예를 들면, 연산 서브 커멘드에 가산 명령이 포함되어 있는 경우에, 가산기를 이용해서 가산 동작을 실행하는 등이다. 여기서, 본 개시의 실시예에 있어서 상세한 설명을 생략 하지만, 연산 서브 커멘드에 기초해서 실행할 연산 프로그램을 인식하고, 대응하는 연산 유닛(101)에 의해 대응하는 연산 프로그램을 실행할 수 있다면, 본 개시의 실시예로 할 수 있다.
또한, 연산 유닛(101)은 대응하는 연산 서브 커멘드를 실행할 때 연산 데이터를 호출하는 경우가 있다. 예를 들면, 본 개시의 실시예에 있어서의 연산 유닛(101)은 제 1 연산 서브 데이터를 이용해서 제 1 연산 서브 커멘드를 실행해도 되고, 여기서 제 1 연산 서브 커멘드는 연산 유닛(101)에 할당되어서 해당 연산을 실행시키는 명령이며, 제 1 연산 서브 데이터는 해당 제 1 연산 서브 커멘드의 실행에 필요한 데이터이다.
여기서, 네트워크 모델에 의해 대응하는 연산 커멘드를 실행할 때에, 해당 연산 커멘드에 관한 연산 데이터를 수신하고, 본 개시의 실시예에 있어서의 연산 모듈은 해당 연산 데이터를 각 연산 모듈의 기억 유닛(102) 내에 대응해서 전송하거나, 또는 각 연산 모듈(100)이 실행할 연산 서브 커멘드에 따라 연산 데이터의 적어도 일부인 연산 서브 데이터를 연산 모듈에 할당할 수 있다. 즉, 본 개시의 실시예에 있어서의 기억 유닛(102)은 그 그룹 내의 연산 유닛에 필요한 제 1 연산 서브 데이터를 적어도 기억하기 위해서 이용되고, 해당 제 1 연산 서브 데이터는 상기 제 1 연산 서브 커멘드를 실행하기 위한 데이터를 포함한다. 여기서, 각 연산 모듈(100)이 실행하는 연산 서브 커멘드는 동일해도 되고 상이해도 되며, 구체적으로는 다른 연산 요구에 따라 할당되어도 된다. 본 개시의 실시예에 있어서의 기억 유닛(102)는 데이터 기억을 실행하기 위해서, 캐시, 레지스터, 레지스터 파일 및 메모리 어레이 중 적어도 1개를 포함할 수 있다.
본 개시의 실시예의 상기 구성에 기초해서, 각 연산 모듈에 필요한 데이터를 1개의 메모리에 기억시키는 일 없이, 각 연산 모듈 내의 기억 유닛에 그 연산에 필요한 데이터를 기억시킬 수 있다. 이 구성에 의해, 각 연산 모듈의 기억 유닛에 대한 데이터 액세스의 대역폭을 감소시켜서 데이터 전송 속도를 향상시킬 수 있다. 동시에, 대형 기억 장치에 모든 연산 모듈의 데이터를 기억·읽고 쓰기할 필요가 없기 때문에, 대용량이고 또한 높은 데이터 읽고 쓰기 속도의 기억 장치를 설치할 필요가 없어서, 기억 장치의 코스트를 저감시킬 수 있다.
본 개시의 실시예에 있어서의 연산 모듈(100) 내의 각 연산 유닛(101)은 H형 구조, 펄스 어레이 머신 구조 및 트리 구조 중 어느 하나로서 구성될 수 있다. 여기서, 각 연산 모듈(100) 내의 연산 유닛의 구조는 동일해도 되고 상이해도 되며, 당업자에 의해 필요에 따라서 설정할 수 있으며, 본 개시는 이것을 한정하지 않는다. 이하, 연산 모듈 내의 각 연산 유닛의 구조에 대해서, 상기의 구성으로서 설명한다.
도 3e는 본 개시의 실시예에 따른, H형 구조로서 구성되는 연산 모듈의 블록도를 나타낸다. 도 3e에 도시된 바와 같이, 연산 모듈(100) 내의 각 연산 유닛(101)이 H형 구조로서 구성되는 경우, 각 연산 유닛은 주연산 유닛(1001)과, 적어도 하나의 분기 연산 유닛(1002)과, 복수의 종연산 유닛(1003)을 포함할 수 있다. 주연산 유닛(1001)은 각 분기 연산 유닛(1002)에 접속되고, 분기 연산 유닛(1002)은 종연산 유닛(1003) 중 적어도 하나에 각각 접속되어도 된다. 도 3e에 도시된 바와 같이, 4개의 분기 연산 유닛(1002)을 포함하고, 각 분기 연산 유닛(1002)에 4개의 종연산 유닛(1003)이 각각 접속되며, 해당 분기 연산 유닛(1002)은 주연산 유닛(1001)과 종연산 유닛(1003)의 사이의 데이터, 명령 및 중간 결과의 전송에 이용될 수 있다. 각 분기 연산 유닛(1002)은 연산 서브 커멘드를 실행할 때에, 모듈 내의 기억 유닛(102) 내에 기억되어 있는 데이터에 의해 동작을 실행할 수 있다.
주연산 유닛(1001)은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할하며, 분기 연산 유닛(1002)을 통해서 연산 명령 및 데이터 블록을 대응하는 종연산 유닛(1003)에 전송해서, 연산을 행한 중간 결과를 획득하며, 상기 중간 결과에 기초해서 최종 연산 결과를 획득하도록 구성되고, 분기 연산 유닛은 상기 주연산 유닛과 종연산 유닛 사이에서 데이터 블록, 연산 명령 및 가중 등의 정보를 전송하도록 구성된다.
종연산 유닛(1003)은 대응하는 연산 명령이 완료하면, 대응하는 중간 결과를 생성해서, 분기 연산 유닛(1002)를 통해서 해당 중간 결과를 주연산 유닛(1001)에 돌려줄 수 있다. 즉, 각 종연산 유닛은 8개의 서브 행렬과 가중 행렬 w의 곱셈과 누적 가산을 병렬적으로 실행해서 8개의 중간 결과를 획득하며, 8개의 중간 결과를 주연산 유닛(1001)에 보낼 수 있다.
주연산 유닛(1001)은 8개의 중간 결과를 소팅해서 대응하는 연산 결과를 획득하며, 해당 연산 결과에 대해서 바이어스 b의 연산을 실행한 후에 활성화 동작을 실행해서 최종 결과 y를 획득하고, 최종 결과 y를 기억 모듈(100)에 송신해서 기억시키거나 다른 전자 디바이스에 전송해서 후속의 처리를 행할 수 있으며 즉, 해당 최종 결과 y를 출력하거나 또는 기억 유닛(102) 내에 기억시킬 수 있다.
또한, 도 3f는 본 개시의 실시예에 따른, 펄스 어레이 머신 구조로서 구성되는 연산 모듈의 블록도를 나타낸다. 여기서, 연산 모듈(100) 내의 각 연산 유닛(101)이 펄스 어레이 머신 구조로서 구성되는 경우, 각 연산 유닛은 주연산 유닛(1001) 및 복수의 종연산 유닛(1003)을 포함할 수 있다. 복수의 종연산 유닛(1003)은 어레이 상에 분포되어 있고, m행 n열(m 및 n는 1보다 큰 양의 정수이다)의 종연산 유닛으로서 구성되며, 각 종연산 유닛(1003)은 인접하는 다른 종연산 유닛(1003)에 접속되고, 주연산 유닛(1001)은 상기 복수의 종연산 유닛(1003) 중 k개의 종연산 유닛(1003)에 접속되어 상기 k개의 종연산 유닛(1003)은 제 1 행의 n개의 종연산 유닛(1003), 제 m 행의 n개의 종연산 유닛(1003)및 제 1 열의 m개의 종연산 유닛(1003)이다. 한편, 설명하자 하는 것은 도 3f에 나타나는 K개의 종연산 유닛(1003)은 제 1 행의 n개의 종연산 유닛(1003), 제 m 행의 n개의 종연산 유닛(1003) 및 제 1 열의 m개의 종연산 유닛(1003)만을 포함하고, 즉 해당 k개의 종연산 유닛(1003)은 복수의 종연산 유닛(1003) 중 주연산 유닛(1001)에 직접 접속되는 종연산 유닛(1003)이다. 해당 K개의 종연산 유닛(1003)은 상기 주연산 유닛(1001) 및 복수의 종연산 유닛(1003) 사이에서의 데이터 및 명령의 전송에 이용될 수 있다. K개의 종연산 유닛을 제외한 나머지 종연산 유닛은 해당 연산 명령에 따라서, 수신한 데이터 블록에 대해서 연산을 실행해서 중간 결과를 획득하며, 연산 결과를 상기 K개의 종연산 유닛에 전송하도록 구성된다.
주연산 유닛(1001)은 할당된 연산자를 K개의 종연산 유닛(1003)에 전송해서 연산할 수 있고, 나머지의 종연산 유닛(1003)에 접속함으로써, 해당 나머지의 종연산 유닛(1003)으로부터 중간 결과를 획득할 수 있다. 주연산 유닛(1001)은 해당 복수의 나머지의 종연산 유닛(1003)으로부터 송신된 중간 결과를 처리해서 최종적인 연산 결과를 획득하고, 해당 연산 결과를 상기 기억 유닛(102)에 송신해서 기억시키기 위해서 이용될 수 있다.
또한, 도 3g는 본 개시의 실시예에 따른, 트리 구조로서 구성되는 연산 모듈의 블록도를 나타낸다. 연산 모듈(100)에 있어서의 각 연산 유닛이 트리 구조로서 구성되는 경우, 각 연산 유닛은 주연산 유닛(1001) 및 복수의 종연산 유닛(1003), 상기 주연산 유닛(1001)과 종연산 유닛 사이에 접속되는 트리형 모듈(1004)을 포함할 수 있다. 여기서, 상기 트리형 모듈(1004)은 1개의 루트 포트 1 및 복수의 분기 포트 2를 포함하며, 상기 트리형 모듈의 루트 포트는 상기 주연산 유닛(1001)에 접속되고, 상기 트리형 모듈의 복수의 분기 포트는 복수의 종연산 유닛 중 하나의 종연산 유닛에 각각 접속된다. 상기 트리형 모듈은 송수신 기능을 가진다. 도 3g에 도시된 바와 같이, 해당 트리형 모듈이 송신 기능을 갖지만, 다른 실시예에서는 수신 기능을 가져도 되고, 여기서 한정하지 않는다. 트리형 모듈(1004)은 상기 주연산 유닛과 상기 복수의 종연산 유닛 사이에서 데이터 블록, 가중 및 연산 명령을 전송하기 위해서 사용될 수 있다. 주연산 유닛(1001)은 수신한 연산자를 복수의 연산 명령으로 분할하고, 연산 데이터를 복수의 데이터 블록으로 분할해서 트리형 모듈(1004)에 송신하며, 그 다음에, 트리형 모듈(1004)은 대응하는 데이터, 연산 명령 및 가중을 대응하는 종연산 유닛(1003)에 전송하고 종연산 유닛(1003)으로부터 중간 결과를 수신해서 주연산 유닛(1001)에 전송한다. 그리고, 주연산 유닛(1001)은 중간 결과를 처리해서 최종적인 연산 결과를 획득하고, 해당 연산 결과를 상기 기억 유닛(102)에 송신해서 기억시킬 수 있다.
본 개시의 실시예에 있어서, 해당 트리형 모듈은 적어도 1층의, 전송 기능을 갖는 선구조인 노드를 포함할 수 있고, 해당 노드 자체는 계산 기능을 갖지 않아도 된다. 트리형 모듈이 제로층의 노드를 갖는 경우, 해당 트리형 모듈은 불필요하다.
해당 트리형 모듈(1004)은 n분 트리 구조여도 된다. 예를 들면, 도 3h에, 본 개시의 실시예에 있어서의 2분 트리 구조로서 구성되는 연산 유닛의 블록도를 나타내지만, 다른 실시예에서는 각 연산 유닛은 3분 트리 구조, 또는 다른 n분 트리 구조로서 구성되어도 되고, 해당 n은 2 이상의 정수일 수 있다. 본 출원의 구체적인 실시형태는 상기 n의 구체적인 취할 수 있는 값은 한정하지 않으며, 상기 층수는 2여도 되고, 다른 층수여도 된다. 종연산 유닛은 마지막에서 2번째의 층의 노드 이외의 다른 층의 노드에 접속되고, 예를 들어 마지막에서 1번째의 층의 노드에 접속되도록 해도 된다.
또한, 본 개시의 실시예에 있어서의 연산 유닛은 단독의 캐시를 가질 수 있고 예를 들어, 해당 종연산 유닛의 입력 뉴런 벡터 데이터 및 출력 뉴런 값 데이터를 캐시하는 뉴런 캐시 유닛을 포함할 수 있다.
본 개시의 실시예에 있어서, 각 연산 모듈은 서로 접속되어도 되고, 적어도 2개의 연산 모듈의 접속 관계가 선택적으로 확립되어도 된다. 예를 들어, 적어도 2개의 연산 모듈 사이에 데이터 접속이 존재하고, 한쪽 연산 모듈이 상기 제 1 연산 서브 데이터와 다른쪽 연산 모듈의 제 2 연산 서브 데이터를 이용해서 상기 제 1 연산 서브 커멘드를 실행하고, 여기서, 제 2 연산 서브 데이터는 해당 다른쪽 연산 모듈의 기억 유닛에 기억되어 있는 데이터 및/또는 해당 다른쪽 연산 모듈의 연산 유닛에 의해 생성된 데이터를 포함한다. 즉, 본 개시의 실시예에 있어서의 각 연산 모듈(100) 사이에는, 2개의 연산 모듈 간의 데이터 전송 채널을 확립할 수 있는 유선 접속이나 무선 접속 등의 데이터 접속 관계가 존재해도 된다. 여기서, 연산 모듈(100)이 제 1 연산 서브 커멘드를 실행할 때, 다른쪽 연산 모듈(100)이 생성한 데이터를 필요로 하는 경우, 해당 2개의 연산 모듈 간의 접속 관계에 의해, 데이터의 전송을 실현할 수 있다.
도 3b는 본 개시의 실시예에 따른, 연산 장치의 블록도를 나타내고, 복수의 연산 모듈(100)에 더해서 제어 모듈(200)을 포함할 수 있다. 해당 제어 모듈(200)은 대응하는 연산 서브 커멘드를 실행하도록 연산 모듈을 제어하고, 대응하는 연산 서브 데이터를 기억하도록 메모리를 제어하기 위해서 이용되어도 되고, 또한, 제어 모듈(200)은 각 연산 모듈 간의 접속 상태를 제어해도 된다.
본 개시의 실시예에 있어서의 제어 모듈(200)은 네트워크 모델에 관한 연산 커멘드를 수신해도 되고, 통신 모듈을 통해서 연산 커멘드나 그 외의 정보를 수신 및 전송해도 되고, 연산 커멘드나 그 외의 정보를 직접 수신해도 된다. 통신 모듈은 광섬유, 트위스트 페어 케이블 또는 동축 케이블을 포함한 유선 케이블을 통해서 정보의 전송을 실행하는 유선 통신 유닛 및/또는 라디오 커뮤니케이션에 의해 정보의 전송을 실행하는 라디오 커뮤니케이션 유닛을 포함할 수 있다. 라디오 커뮤니케이션 유닛은 wifi 모듈, NFC 모듈 등을 포함한다. 마찬가지로, 각 연산 모듈(100) 사이는 유선 또는 무선에 의한 데이터 접속되어도 되고, 예를 들면 광섬유에 의해 접속되어도 된다.
제어 모듈(200)은 수신한 연산 커멘드 및 연산 데이터에 기초해서, 각 상기 연산 모듈(100)에 대응하는 연산 서브 커멘드 및 연산 서브 데이터를 할당할 수 있다. 해당 연산 커멘드는 네트워크 모델 연산을 실행하기 위한 복수의 연산 서브 커멘드를 포함하고, 연산 데이터는 각 상기 연산 서브 커멘드를 실행하기 위해서 필요한 연산 서브 데이터를 포함한다. 본 개시의 실시예에 있어서의 제어 모듈(200)은 수신한 연산 커멘드에 있어서의 연산 논리 관계에 기초해서, 각 연산 서브 커멘드 및 연산 서브 데이터를 결정할 수 있다. 예를 들면, 제어 모듈(200)은 연산 커멘드의 논리 관계에 기초해서 유향 그래프를 작성할 수 있다. 해당 유향 그래프의 노드는 각 연산 서브 커멘드를 구분하기 위해서 이용될 수 있고 즉 2개의 노드 간의 연산 동작에 대응하는 연산 커멘드를 1개의 연산 서브 커멘드로 할 수 있으며, 이 경우에 해당 연산 서브 커멘드의 입력 데이터로부터 필요한 연산 서브 데이터를 결정할 수도 있다. 이로써, 연산 모듈을 할당하고, 해당 연산 서브 커멘드를 실행해서, 해당 연산 모듈 내의 기억 유닛에 연산 서브 데이터를 할당할 수 있다.
또한, 제어 모듈(200)은 각 연산 모듈이 대응하는 연산 서브 커멘드를 실행할 때, 다른 연산 모듈로부터의 데이터가 필요하게 되는지 여부를 확인할 수 있어서, 필요하면 해당 2개의 연산 모듈 사이의 접속을 온으로 하고, 필요하지 않으면, 2개의 연산 모듈 사이의 접속을 확립하지 않는다. 예를 들면, 본 개시의 실시예는 각 연산 모듈 사이의 온 또는 오프를 전환 컴포넌트에 의해 실행할 수 있으며, 각 연산 모듈을 해당 전환 컴포넌트에 각각 접속되고, 해당 전환 컴포넌트의 대응하는 회선의 온을 제어함으로써, 대응하는 연산 모듈 사이의 접속을 실현할 수 있다. 이 구성에 의해 연산 장치의 내부 구조를 간소화할 수 있다.
도 3c는 본 개시의 실시예에 따른 제어 모듈의 블록도를 나타낸다. 본 개시의 실시예에 있어서의 제어 모듈(200)은 제 1 할당 유닛(201)과 제 2 할당 유닛(202)을 포함할 수 있다.
제 1 할당 유닛(201)은 수신한 연산 커멘드에 있어서의 연산 논리 관계에 기초해서, 상기 연산 커멘드를 복수의 연산 서브 커멘드로 분할하고, 해당하는 복수의 연산 서브 커멘드를 다른 연산 모듈(100)에 대응해서 할당해서 연산을 행할 수 있다. 제 2 할당 유닛(202)은 각 상기 연산 서브 커멘드를 실행하기 위해서 필요한 연산 서브 데이터를 결정하고, 연산 서브 데이터를 대응하는 연산 모듈에 할당해서 기억시키기 위해서 이용될 수 있다.
즉, 본 개시의 실시예는 연산 커멘드의 할당을 제 1 할당 유닛(201)에 의해 실행하고, 연산 데이터의 할당을 제 2 할당 유닛(202)에 의해 실행할 수 있다. 이로써, 각 연산 모듈이 각각의 연산 서브 커멘드를 실행할 때, 연산 모듈 내의 기억 유닛에 기억되어 있는 데이터를 이용해서 연산 동작을 완료시킬 수 있다.
본 개시의 실시예에 있어서의 구조 구성을 명확하게 하기 위해서, 이하, 본 개시의 실시예에 있어서의 연산 장치를 예로 들어 설명한다. 본 개시의 실시예에 있어서의 연산 장치는 4개의 연산 모듈(100)을 포함하고, 각 연산 모듈(100)은 1개의 기억 유닛(102)와 4개의 연산 유닛(101)을 포함할 수 있다. 예를 들면, 제 1 연산 모듈(100)은 기억 유닛(A0)과 연산 유닛(B0, B1, B11, B10)을 포함하고, 제 2 연산 모듈(100)은 기억 유닛(A1)과 연산 유닛(B2, B9, B12, B15)을 포함하며, 제 3 연산 모듈(100)은 기억 유닛(A2)과 연산 유닛(B4, B5, B6, B7)을 포함하고, 제 4 연산 모듈(100)은 기억 유닛(A3)와 연산 유닛(B3, B8, B13, B14)을 포함할 수 있다. 각 연산 모듈(100)에 있어서의 연산 유닛은 서로 접속되어도 되고, 각 연산 모듈(100)은 제어 모듈(200)의 제어에 따라서 선택적으로 접속되어도 된다.
또한, 제어 모듈(200)은 수신한 연산 커멘드 및 연산 데이터에 기초해서, 각 연산 모듈에, 대응하는 연산 서브 커멘드를 할당함과 아울러, 대응하는 연산 서브 데이터를 기억 유닛에 할당하도록 해도 된다. 이상의 구성에 의해, 연산 장치의 확장성이 보증됨과 아울러, 각 연산 모듈의 설치에 의해 연산 장치의 Numa 아키텍쳐가 실현된다.
이상과 같이, 본 개시의 실시예는 각 연산 모듈에 필요한 데이터를 1개의 메모리에 기억시키는 일 없이, 각 연산 모듈 내의 기억 유닛에 그 연산에 필요한 데이터를 기억시킬 수 있다. 이 구성에 의해, 각 연산 모듈의 기억 유닛에 대한 데이터 액세스의 대역폭을 감소시켜서 데이터 전송 속도를 향상시킬 수 있다. 동시에, 대형 기억 장치에 모든 연산 모듈의 데이터를 기억·읽고 쓰기할 필요가 없기 때문에, 대용량이고 또한 높은 데이터 읽고 쓰기 속도의 기억 장치를 설치할 필요가 없어서, 기억 장치의 코스트를 저감시킬 수 있다. 또한, 본 개시의 실시예는 연산 장치의 확장성을 향상시킬 수 있어, 연산 기능에 대응하는 연산 모듈을 추가함으로써 연산 장치의 연산 기능을 용이하게 확장할 수 있다.
본 개시에서 언급된 상기 각 실시예는 원리적인 논리에 반하지 않는 이상 서로 조합되어서 실시예를 형성할 수 있지만, 지면의 한계상 본 개시를 다시 설명하지 않는다는 것을 이해해야 한다.
또한, 본 개시는 상기 실시예에 있어서의 연산 장치를 포함한 데이터 처리 칩, 전자 기기 및 연산 장치에 적용되는 연산 방법을 더 제공하는데, 대응하는 기술적 해결 수단 및 설명이 방법 부분의 대응하는 기재가 참조하며, 설명은 생략한다.
본 개시의 실시예는 상기 실시예 중 어느 한 항에 기재된 연산 장치를 포함한 데이터 처리 칩을 더 제공한다.
몇 개의 실시예에 있어서, 본 개시는 상기 데이터 처리 칩을 포함한 칩 패키지 구조를 제공한다.
몇 개의 실시예에 있어서, 본 개시는 상기 칩 패키지 구조를 포함한 기판 카드를 제공한다.
본 개시의 실시예는 상기 실시예 중 어느 한 항에 기재된 연산 장치 또는 칩, 또는 상기 기판 카드를 포함한 전자 기기를 더 제공한다.
전자 기기는 데이터 처리 장치, 로보트, 컴퓨터, 프린터, 스캐너, 태블릿형 컴퓨터, 스마트 단말, 휴대전화, 드라이브 레코더, 네비게이터, 센서, 카메라, 서버, 클라우드 서버, 카메라, 비디오 카메라, 프로젝터, 손목시계, 헤드폰, 모바일 스토리지, 웨어러블 기기, 교통 기관, 가전 기기, 및/또는 의료기기를 포함한다.
상기 교통 기관은 비행기, 선박 및/또는 차량을 포함하고, 상기 가전 기기는 텔레비젼, 에어콘, 전자렌지, 냉장고, 밥솥, 가습기, 세탁기, 전등, 가스 풍로, 레인지 푸드를 포함하며, 상기 의료기기는 핵자기 공명계, B초음파 장치 및/또는 심전계를 포함한다.
또한, 본 개시의 실시예는 상기 실시예에 기재된 연산 장치에 적용되는 연산 방법을 더 제공하고, 연산 장치는 복수의 연산 모듈을 포함하며, 해당 복수의 연산 모듈은 대응하는 연산 서브 커멘드를 병렬로 실행함으로써 네트워크 모델의 연산 동작을 완료한다. 도 3d는 본 개시의 실시예에 따른, 연산 방법의 플로우차트를 나타낸다. 각 연산 모듈의 기억 유닛에 의해, 제 1 연산 서브 커멘드를 실행하기 위한 데이터를 포함한 제 1 연산 서브 데이터를 기억하는 S100와, 각 연산 모듈의 연산 유닛에 의해 제 1 연산 서브 데이터를 이용해서 제 1 연산 서브 커멘드를 실행하는 S200를 포함할 수 있으며, 여기서 각 연산 모듈이 실행하는 연산 서브 커멘드가 달라도 된다.
본 개시의 실시예에 있어서, 각 연산 모듈의 연산 유닛에 의해 제 1 연산 서브 데이터를 이용해서 제 1 연산 서브 커멘드를 실행하는 것은 상기 제 1 연산 서브 데이터 및 다른쪽 연산 모듈의 제 2 연산 서브 데이터를 이용해서 제 1 연산 서브 커멘드를 실행하는 것을 더 포함하고, 상기 제 2 연산 서브 데이터는 해당 다른쪽 연산 모듈의 기억 유닛 내에 기억되어 있는 데이터 및/또는 해당 다른쪽 연산 모듈 내의 연산 유닛에 의해 생성된 데이터를 포함한다.
본 개시의 실시예에 있어서, 상기 방법은 수신한 연산 커멘드 및 연산 데이터에 기초해서, 각 상기 연산 모듈에, 대응하는 연산 서브 커멘드 및 연산 서브 데이터를 할당하는 것을 더 포함하고, 상기 연산 커멘드는 복수의 연산 서브 커멘드를 포함하며, 상기 연산 데이터는 각 상기 연산 서브 커멘드를 실행하기 위해서 필요한 연산 서브 데이터를 포함한다.
본 개시의 실시예에 있어서, 수신한 연산 커멘드 및 연산 데이터에 기초해서, 각 상기 연산 모듈에, 대응하는 연산 서브 커멘드 및 연산 서브 데이터를 할당하는 것은, 제 1 할당 유닛에 의해 연산 커멘드에 있어서의 연산 논리 관계에 기초해서, 상기 연산 커멘드를 복수의 연산 서브 커멘드로 분할하고, 해당하는 복수의 연산 서브 커멘드를 다른 연산 모듈에 대응해서 할당하여 연산하는 것과, 제 2 할당 유닛에 의해 각 상기 연산 서브 커멘드를 실행하기 위해서 필요한 연산 서브 데이터를 결정하고, 상기 연산 서브 데이터를 대응하는 연산 모듈에 할당하여 기억하는 것을 포함한다.
본 개시의 실시예에 있어서, 상기 방법은 각 연산 서브 커멘드 사이의 연산 논리 관계에 기초해서 각 상기 연산 모듈을 선택적으로 접속하는 것을 더 포함한다.
한편, 전술한 각 방법의 실시예에 대해서는 설명을 간단하게 하기 위해서, 일련의 동작의 조합으로서 설명했지만, 당업자라면 본 개시는 기재된 동작 순서로 한정되는 것이 아니라는 것이 이해된다. 본 개시에 의하면, 몇 개의 단계는 다른 순서로 또는 동시에 실행되어도 되기 때문이다. 또한, 본 명세서에 기재된 실시예 모두가 선택 가능한 실시예에 속하고, 관련된 동작 및 모듈이 본 개시에 필수라고는 할 수 없다는 것도 당업자에게는 이해된다.
전술한 실시예에서는, 각 실시예의 설명은 각각의 중요한 점이 있으며, 특정의 실시예에 상세하게 기재되지 않은 부분은 다른 실시예의 관련 설명을 참조할 수 있다.
본 출원에 의해 제공되는 몇 개의 실시예에 있어서, 개시되는 장치는 다른 방법에 따라 실현되어도 된다는 점을 이해해야 한다. 예를 들면, 전술한 장치의 실시예는 예시적인 것에 지나지 않고, 예를 들면 상기 유닛의 분할은 논리 기능의 분할에 지나지 않으며, 실제로 실장될 때에, 다른 분할 방식이 있어도 된다. 예를 들면, 복수의 유닛 또는 컴포넌트는 조합해도 되고, 다른 시스템에 집적해도 되며, 몇 개의 특징을 무시해도 되고, 실행하지 않아도 되다. 다른 점으로는, 표시 또는 검토되는 상호 간의 결합 또는 직접 결합 또는 통신 접속은 몇 개의 인터페이스, 장치 또는 유닛을 통한 간접적인 결합 또는 통신 접속이어도 되고, 전기적 또는 다른 형태에서의 결합 또는 접속이어도 된다.
상기 분리된 부재로서 설명된 유닛은 물리적으로 분리되어도 되고, 물리적으로 분리되어 있지 않아도 된다. 유닛으로서 나타난 부재는 물리적인 유닛이어도 되고, 물리적인 유닛이 아니어도 되고, 1개의 장소에 있어도 되고, 복수의 네트워크 유닛에 분산되어도 된다. 실제의 수요에 따라서, 그 중의 일부 또는 전부의 유닛을 선택해서 본 실시예의 해결 수단의 목적을 달성할 수 있다.
또한, 본 출원의 각 실시예에 있어서의 각 기능 유닛은 1개의 처리 유닛에 집적되어도 되고, 각 유닛이 개별적으로 물리적으로 존재해도 되며, 2개 이상의 유닛이 1개의 유닛에 집적되어도 된다. 상기 집적된 유닛은 하드웨어의 형태로 실현되어도 되고, 소프트웨어 프로그램 모듈의 형태로 실현되어도 된다.
상기 집적된 유닛은 소프트웨어 프로그램 모듈의 형태로 실현되어, 독립적인 제품으로서 판매 또는 이용되는 경우, 컴퓨터 판독 가능한 메모리에 기억되어도 된다. 이러한 이해에 기초해서, 본 출원의 기술적 해결 수단은 본질적으로 또는 종래 기술에 공헌하는 부분 또는 해당 기술적 해결 수단의 전부 또는 일부가 소프트웨어 제품으로서 구현화될 수 있으며, 해당 컴퓨터 소프트웨어 제품은 1개의 메모리에 기억되어, 1개의 컴퓨터 기기(퍼스널 컴퓨터, 서버 또는 네트워크 장치 등이어도 된다)에 본 출원의 각 실시예에 기재된 방법의 단계의 전부 또는 일부를 실행시키는 복수의 명령을 포함한다. 또한, 상기 메모리로는 U 디스크, 판독 전용 메모리(ROM, Read-Only Memory), RAM(RAM, Random Access Memory), 리무브벌 하드 디스크, 자기 디스크 또는 광디스크 등, 프로그램 코드를 기억 가능한 각종 매체가 포함된다.
당업자라면, 전술한 실시예의 각종 방법에 있어서의 단계의 전부 또는 일부는 컴퓨터 판독 가능한 메모리에 기억 가능한 프로그램에 의해, 관련된 하드웨어에 지시해서 실행할 수 있다는 것이 이해된다. 메모리로는 플래시 디스크, 판독 전용 메모리(Read-Only Memory; ROM), RAM(Random Access Memory; RAM), 자기 디스크 또는 광디스크 등이 있다.
이상, 본 출원의 실시예에 대해 상세하게 설명했으며, 본 출원의 원리 및 실시형태에 대해 구체예를 적용해서 설명했지만, 이상의 실시예의 설명은 본 출원의 방법 및 그 핵심 사상의 이해를 돕기 위한 것에 지나지 않고, 또한 당업자라면 본 출원의 사상에 기초해서, 구체적인 실시형태 및 적용 범위를 변경할 수 있다. 따라서, 본 명세서의 내용은 본 출원을 한정하는 것으로서 이해되어서는 안된다.
또한, 버스 구조의 프로세서에서는, 프로세서 내부에서 일종의 고정 형식의 데이터를 연산하지만, 프로세서로부터 메모리에 데이터를 쓰기할 때, 2종의 형식으로 메모리에 데이터를 쓰기할 수 있다. 1번째의 형식은 빅 엔디안(big endian)이라고 하고 즉 프로세서 내부 데이터의 논리 상위 바이트가 메모리의 하위 어드레스에 쓰기되고, 프로세서 내부 데이터의 논리 하위 바이트가 메모리의 상위 어드레스에 쓰기된다. 2번째의 형식은 리틀 엔디안이라고 하고, 데이터가 메모리에 기억되는 순서가 빅 엔디안과는 반대로 된다. 기존의 프로세서는 빅 엔디안의 데이터 연산만을 서포트하고 있거나, 또는 리틀 엔디안의 데이터 연산만을 서포트하고 있기 때문에, 종래 기술은 적용성이 좋지 않다고 하는 결점이 있다.
본 개시의 실시예는 적용성이 우수하며, 코스트를 저감시킬 수 있는 데이터 프로세서, 칩, 전자 기기 및 데이터 처리 방법을 제안한다. 본 개시는 데이터 처리의 분야에 관한 것이며, 특히 데이터 프로세서, 칩, 전자 기기 및 데이터 처리 방법에 관한 것이다.
이하에, 첨부의 도면을 참조하면서, 본 개시의 여러가지 예시적인 실시예, 특징 및 태양을 상세하게 설명한다. 도면에 있어서의 같은 부호는 같은 또는 유사한 기능 요소를 나타낸다. 도면에 있어서 실시예의 여러가지 방면을 나타냈지만, 특별히 언급하지 않는 이상, 비례에 따라 도면을 그릴 필요가 없다.
여기서의 용어 '예시적'이란, '예, 실시예로서 이용되는 것 또는 설명적인 것'을 의미한다. 여기서 '예시적'으로 설명되는 어떠한 실시예는 다른 실시예보다 바람직한 또는 뛰어난 것이라고 이해해서는 안된다.
또한, 본 개시를 보다 효과적으로 설명하기 위해서, 이하의 구체적인 실시형태에 있어서 여러가지 구체적인 세부 사항을 나타낸다. 당업자라면, 본 개시는 어떠한 구체적인 세부 사항이 없어도 마찬가지로 실시할 수 있다고 이해해야 한다. 몇 개의 실시예에서는 본 개시의 취지를 강조하기 위해서, 당업자가 숙지하고 있는 방법, 수단, 요소 및 회로에 대해 상세한 설명을 실시하지 않는다.
도 4a은 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다. 본 개시의 실시예의 데이터 프로세서는 데이터 처리용의 칩으로 해서 구성될 수도 있고, 전자 기기내에 배치되어 대응하는 데이터 처리 동작을 실행할 수도 있다. 해당 데이터 프로세서에 의해, 빅 엔디안과 리틀 엔디안 양쪽 모두에의 적용을 실현할 수 있어서, 적용성을 향상시키고, 코스트를 저감할 수도 있다.
도 4a에 도시된 바와 같이, 본 개시의 실시예의 데이터 프로세서는 데이터 변환 모듈(100)과 해당 데이터 변환 모듈(100)에 접속되는 제어 모듈(200)을 포함할 수 있다.
데이터 변환 모듈(100)은 사전 설정된 입도와 사전 설정된 바이트 순서를 포함한 사전 설정된 데이터 형식에 기초해서 제 1 데이터를 제 2 데이터로 변환할 수 있다. 제어 모듈(200)은 수신한 제어 신호에 기초해서, 상기 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 다르다고 확인한 경우, 상기 제 1 데이터를 제 2 데이터로 변환하도록 데이터 변환 모듈(100)을 제어할 수 있다.
본 개시의 실시예에 있어서, 데이터 변환 모듈(100)은 제어 모듈(200)에 의해 전송된 데이터 변환 명령에 따라서 제 1 데이터를 제 2 데이터로 변환할 수 있고, 이 경우, 사전 설정된 입도에 따라 제 1 데이터를 사전 설정된 바이트 순서 형식을 가지는 제 2 데이터로 변환하는 것을 포함할 수 있다. 여기서, 데이터 입도는 데이터의 바이트 비트수를 의미하며, 예를 들면, 8비트, 16비트, 32비트, 64비트 등이지만, 본 개시에서 이것으로 한정되지 않는다. 바이트 순서란 바이트의 기억시의 줄(line)과 입력(출력)시의 줄이 선착순인지 아니면 후착순인지, 즉, 빅 엔디안의 바이트 순서와 리틀 엔디안의 바이트 순서를 포함할 수 있다. 빅 엔디안의 바이트 순서란, 데이터의 논리 상위 바이트가 어드레스 공간의 하위 어드레스에 쓰기되어서 데이터의 논리 하위 바이트가 어드레스 공간의 상위 어드레스에 쓰기되는 것을 말한다. 리틀 엔디안의 바이트 순서란, 데이터의 논리 상위 바이트가 어드레스 공간의 상위 어드레스에 쓰기되어서 데이터의 논리 하위 바이트가 어드레스 공간의 하위 어드레스에 쓰기되는 것을 말한다.
본 개시의 실시예에 있어서의 제어 모듈(200)은 제어 신호를 수신하고, 수신한 제어 신호에 기초해서, 데이터 처리 동작이 실행되는 제 1 데이터의 제 1 어드레스 공간, 제 1 데이터의 데이터 형식, 해당 데이터 처리 동작이 실행되어 출력되는 제 2 데이터의 사전 설정된 데이터 형식, 데이터 처리 동작을 실행하기 위한 사전 설정된 연산 명령, 및 데이터 처리 동작이 실행되어 출력되는 제 2 데이터의 제 2 어드레스 공간을 취득할 수 있다. 여기서, 제 1 어드레스 공간은 제 1 데이터를 기억하는 개시 어드레스 및 종료 어드레스를 포함할 수 있고, 대응해서, 제 2 어드레스 공간은 제 2 데이터를 기억하는 개시 어드레스 및 종료 어드레스를 포함할 수 있음과 아울러, 제 1 데이터의 데이터 형식은 제 1 데이터의 데이터 입도 및 바이트 순서를 포함할 수 있고, 사전 설정된 데이터 형식은 소망한 제 2 데이터의 데이터 형식, 예를 들면 사전 설정된 입도 및/또는 사전 설정된 바이트 순서를 포함할 수 있다.
본 개시의 실시예에 있어서의 제어 모듈(200)은 제어 신호 또는 제어 신호에 기초해서 취득된 각 정보를 기억 모듈에 기억할 수 있으며, 해당 기억 모듈은 데이터 프로세서 내의, 제어 모듈(200) 및 데이터 변환 모듈(100)과는 독립적으로 별개의 기억 장치여도 되고, 제어 모듈(200) 내에 설치된 캐시 또는 메모리여도 된다. 본 개시의 실시예는 이것을 한정하지 않는다. 제어 신호 또는 해당 제어 신호에 기초해서 취득된 각 정보를 기억 모듈에 기억함으로써, 데이터 프로세서 내의 각 모듈 또는 디바이스가 대응하는 데이터 또는 명령을 용이하게 취득할 수 있다. 기억 모듈은 레지스터, 캐시 중 하나 또는 임의의 조합을 포함한다. 구체적으로는 상기 캐시는 상기 계산 명령을 기억하기 위해서 사용되고, 상기 레지스터는 상기 기계 학습 모델, 상기 데이터, 및 스칼라를 기억하기 위해서 사용되며, 상기 캐시는 고속 일시 캐시이다.
제어 모듈(200)은 수신한 제어 신호에 기초해서, 전술한 데이터 변환 동작에 관한 정보를 취득하고, 해당 정보에 따라서, 관련된 데이터 변환 동작을 실행하도록 데이터 변환 모듈(100)을 제어할 수 있다. 여기서, 제어 모듈(200)은 제어 신호에 기초해서 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 동일한지 여부를 확인해서, 동일한 경우, 데이터 변환 모듈(100)에 의한 데이터의 바이트 순서 변환 동작을 실시할 필요가 없으며, 양자에 차이가 있는 경우, 데이터 변환 모듈(100)에 데이터 변환 명령을 송신해서 데이터 변환 모듈(100)이 제 1 데이터를 사전 설정된 데이터 형식에 대응하는 제 2 데이터로 변환하게 제어할 수 있다.
도 4b는 본 개시의 실시예에 따른, 데이터 프로세서에 있어서의 데이터 변환 모듈의 블록도를 나타낸다. 데이터 변환 모듈(100)은, 제 1 데이터를 사전 설정된 입도에 따라 복수의 바이트 그룹으로 분할해서 제 3 데이터를 취득하기 위해서 이용되는 그룹화 유닛(101)과, 데이터의 바이트 순서를 사전 설정된 바이트 순서로 변환하기 위해서 이용되는 바이트 순서 변환 유닛(102)을 포함할 수 있다. 데이터 변환 모듈(100)은 제어 모듈(200)로부터 전송된 데이터 변환 명령에 기초해서 제 1 데이터의 제 1 어드레스 공간을 취득하고, 해당 제 1 어드레스 공간에 기초해서 대응하는 제 1 데이터를 판독하며, 또한 제 2 데이터를 기억하기 위한 제 2 어드레스 공간을 취득하고, 변환해서 획득된 제 2 데이터를 해당 제 2 어드레스 공간에 기억하며, 또한 제 1 데이터의 데이터 형식 및 제 2 데이터의 사전 설정된 데이터 형식을 취득할 수 있다.
제어 모듈(200)은 제 1 데이터의 데이터 입도가 사전 설정된 입도와 다르고 또한 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 다른 경우, 데이터 변환 모듈(100)에 대응하는 데이터 변환 명령을 송신함으로써, 사전 설정된 입도에 기초해서 제 1 데이터를 그룹화하고, 각 바이트 그룹의 입도가 사전 설정된 입도와 같은 제 3 데이터를 취득하도록 그룹화 유닛(101)을 제어하며, 바이트 순서 변환 유닛(102)에 의해 사전 설정된 바이트에 기초해서 제 3 데이터를 제 2 데이터로 변환할 수 있다.
이상의 구성에 의해, 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 다른 경우, 그룹화 유닛(101)에 의해, 그룹 마다의 데이터 입도가 사전 설정된 입도가 되도록 제 1 데이터를 그룹화하고, 또한 바이트 순서 변환 유닛(102)에 의해 제 1 데이터의 바이트 순서를 사전 설정된 바이트 순서로 변환해서 사전 설정된 데이터 형식을 만족하는 제 2 데이터를 획득할 수 있다.
대응해서, 도 4c는 본 개시의 실시예에 따른, 데이터 프로세서에 있어서의 제어 모듈의 블록도를 나타낸다. 본 개시의 실시예의 제어 모듈(200)은 바이트 순서 제어 유닛(201)과, 그룹화 제어 유닛(202)을 포함할 수 있으며, 바이트 순서 제어 유닛(101)은 수신한 제어 신호에 기초해서 제 1 데이터의 바이트 순서를 확인해서 상기 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 다른 경우, 상기 사전 설정된 바이트 순서에 기초해서 데이터 변환 동작을 실행하도록 데이터 변환 모듈(100)을 제어할 수 있다. 그룹화 제어 유닛(202)은 수신한 제어 신호에 기초해서 제 1 데이터의 입도를 확인하여 상기 제 1 데이터의 입도가 사전 설정된 입도와 다른 경우, 데이터 변환 모듈(100)을 제어해서 그룹화 동작을 실행할 때의 그룹화의 그룹수를 결정할 수 있으며, 여기서 그룹화의 그룹수는 제 1 데이터의 비트수와 사전 설정된 입도와의 비이다.
대응해서, 그룹화 제어 유닛(202)은 결정된 그룹화수로 제 1 데이터를 그룹화하도록 그룹화 유닛(101)을 제어하고, 제 3 데이터를 취득하기 위해서 이용할 수 있으며, 바이트 순서 제어 유닛(201)은 제 3 데이터의 바이트 순서를 사전 설정된 바이트 순서로 변환하도록 바이트 순서 변환 유닛(102)를 제어하기 위해서 이용할 수 있다. 여기서, 그룹화 제어 유닛(202)은 제어 신호에 기초해서 제 1 데이터의 입도 및 제 2 데이터의 사전 설정된 입도를 취득하고, 또한 그룹화의 그룹수를 결정할 수 있다. 바이트 순서 제어 유닛(201)은 사전 설정된 바이트 순서에 기초해서 데이터 변환을 실행하고, 즉 제 3 데이터를 제 2 데이터로 변환하도록 바이트 순서 변환 유닛(102)을 제어할 수 있다.
이상은 본 개시의 실시예에 있어서의 제어 모듈 및 데이터 변환 모듈의 실시예에 지나지 않고, 다른 실시예에서는 제어 모듈 및 데이터 변환 모듈 각각은 다른 구조를 가져도 되며, 제어 모듈에 의해 데이터 변환 동작을 실행하도록 데이터 변환 모듈을 제어할 수 있다면, 본 개시의 실시예로 할 수 있다.
이하, 본 개시의 실시예에 따른, 데이터 변환 모듈이 데이터 변환 동작을 실행하는 구체적인 프로세스에 대해 설명한다. 본 개시의 실시예의 그룹화 유닛(101)은 제 1 데이터의 데이터 입도와 사전 설정된 입도의 비에 기초해서, 제 1 데이터를 복수의 바이트 그룹으로 분할하고, 복수의 바이트 그룹을 조합해서 제 3 데이터를 형성하며, 여기서 각 바이트 그룹의 데이터 입도는 상기 사전 설정된 입도와 같다. 각 바이트 그룹에는 적어도 하나의 바이트의 데이터가 포함되고, 각 바이트는 8비트의 데이터이다. 즉, 본 개시의 실시예에 있어서, 그룹화 유닛(101)에 의한 그룹화 동작을 행하는 경우에, 제 1 데이터를 상기의 비로 복수의 바이트 그룹으로 분할하고, 각 바이트 그룹 내의 데이터를 조합해서, 각 바이트 그룹의 조합 데이터로부터 제 3 데이터를 형성할 수 있다.
또한, 본 개시의 실시예는 제 1 데이터의 제 1 어드레스 공간의 어드레스 순서에 기초해서 제 1 데이터를 판독하고, 데이터를 그룹화한다. 여기서, 그룹화 유닛(101)은 제 1 데이터의 어드레스 공간의 하위 어드레스로부터 상위 어드레스의 순서로, 상기 제 1 데이터를 복수의 바이트 그룹으로 분할하고, 해당 복수의 바이트 그룹의 그룹수는 제 1 데이터의 데이터 입도와 사전 설정된 입도의 비이다. 즉, 본 개시의 실시예에 있어서, 제 1 데이터를 대응하는 어드레스 공간에 기억할 때에, 하위 어드레스로부터 상위 어드레스의 순서로 기억할 수 있으므로, 그룹화 유닛(101)은 해당 하위 어드레스로부터 상위 어드레스의 순서로, 제 1 데이터를 판독하고, 제 1 데이터를 재그룹화해서 복수의 바이트 그룹을 획득할 수 있다. 여기서, 제 1 데이터의 입도와 사전 설정된 입도의 비에 따라서 바이트 그룹의 그룹수를 결정할 수 있으며, 각 바이트 그룹은 사전 설정된 입도의 데이터를 포함한다.
데이터 버스에 의해 전송되는 데이터의 비트수는 64의 배수(64*n)이므로, 데이터 변환 모듈(100)에 의해 제 1 데이터의 데이터 입도를 8비트, 16비트, 32비트 또는 64비트로 변환하는 실시예를 이하에 예시한다.
사전 설정된 입도는 8비트여도 되고, 이 경우 제 1 데이터의 그룹화 변환 및 바이트 순서 변환은 불필요하다.
사전 설정된 입도가 16비트의 데이터인 경우, 제 1 어드레스 공간의 하위 어드레스로부터 상위 어드레스의 순서로 2바이트씩에 1개의 바이트 그룹으로서 그룹화한다. 이 경우, 복수의 바이트 그룹을 획득할 수 있고, 그룹수는 제 1 데이터의 입도와 16과의 비로, 해당 바이트 그룹 내의 데이터 입도는 16비트이다.
사전 설정된 입도가 32비트의 데이터인 경우, 제 1 어드레스 공간의 하위 어드레스로부터 상위 어드레스의 순서로 4바이트씩에 1개의 바이트 그룹으로서 그룹화한다. 그룹수는 제 1 데이터의 입도와 32와의 비로, 해당 바이트 그룹 내의 데이터 입도는 32비트이다.
사전 설정된 입도가 64비트의 데이터인 경우, 제 1 어드레스 공간의 하위 어드레스로부터 상위 어드레스의 순서로 8바이트씩에 1개의 바이트 그룹으로서 그룹화한다. 그룹수는 제 1 데이터의 입도와 64와의 비로, 해당 바이트 그룹 내의 데이터 입도는 64비트이다.
이상의 구성에 의해, 제 1 데이터의 그룹화 동작을 완료할 수 있다. 이와 같이 해서, 제 1 데이터의 데이터 입도와 사전 설정된 입도의 비에 기초해서, 바이트 그룹의 그룹수를 용이하게 결정하고, 사전 설정된 데이터 입도에 대응하는 제 3 데이터를 획득할 수 있다.
본 개시의 실시예에 있어서, 그룹화 유닛(101)은 사전 설정된 입도에 대응하는 변환 유닛, 예를 들어 8비트 변환 유닛, 16비트 변환 유닛, 32비트 변환 유닛 또는 64비트 변환 유닛 중 적어도 1개를 포함하고, 또는 다른 실시예에서는 다른 입도의 변환 유닛을 갖고, 사전 설정된 입도에 대응하는 데이터 변환을 실행하는 경우, 대응하는 변환 유닛을 제어해서 데이터 입도 변환을 실시하도록 해도 된다.
또는, 본 개시의 다른 실시예에 있어서, 그룹화 유닛(101)은 전술한 복수의 변환 유닛을 동시에 포함해도 된다. 도 4f는 본 개시의 실시예에 따른, 그룹화 유닛의 블록 구조도를 나타내며, 여기서 8비트 변환 유닛(1011), 16비트 변환 유닛(1012), 32비트 변환 유닛(1013), 64비트 변환 유닛(1014), 및 각 변환 유닛에 접속되는 셀렉터(1015)를 포함한다. 본 개시의 다른 실시예에 있어서, 다른 입도의 변환 유닛을 포함하고, 사전 설정된 입도에 대응하는 그룹화를 실시할 수 있으며, 본 개시의 실시예는 이것을 한정하지 않는다.
셀렉터(1015)는 제 3 데이터의 선택 동작을 실행하기 위해서 이용된다. 즉, 각 변환 유닛(1011, 1012, 1013, 1014)은 각각 제 1 데이터의 그룹화 동작을 실행해서 대응하는 제 3 데이터를 획득할 수 있고, 셀렉터(1015)는 각 변환 유닛의 출력으로부터 사전 설정된 입도에 대응하는 제 3 데이터의 그룹을 선택할 수 있다. 사전 설정된 입도가 변경되면, 해당 사전 설정된 입도에 대응하는 제 3 데이터를 용이하게 취득할 수 있다.
또한, 본 개시의 실시예에 있어서의 바이트 순서 변환 유닛(102)은 이후의 연산 처리에서 다른 바이트 순서의 데이터를 처리하도록 데이터의 바이트 순서를 반전시키기 위해서 이용된다. 그룹화 유닛(102)에 의해 변환된 제 3 데이터에 대해서, 제 3 데이터의 각 바이트 그룹에 있어서의 바이트 순서를 역으로 해서, 각 바이트 그룹의 순서로 상기 제 2 데이터를 획득하도록 바이트 순서 변환을 행할 수 있으며, 여기서 각 바이트 그룹의 데이터 입도는 사전 설정된 입도와 같다.
제 1 데이터의 데이터 입도가 사전 설정된 입도와 같은 경우, 바이트 순서 변환 유닛(102)은 제 1 데이터를 기억하는 하위 어드레스로부터 상위 어드레스의 순서로 제 1 데이터를 복수의 바이트 그룹으로 분할하고, 여기서 1개의 데이터 입도를 단위로 해서 1개의 바이트 그룹으로 한다. 바이트 순서 변환을 실행할 때에 각 바이트 그룹 내의 바이트 순서를 역으로 한다. 예를 들면, 16비트의 데이터 입도의 경우, 각 바이트 그룹 내에 2개의 바이트를 포함하고, 제 1 바이트와 제 2 바이트의 순서를 바꿀 수 있다. 또한, 예를 들면 32비트의 데이터 입도의 경우, 각 바이트 그룹 내에 4개의 바이트를 포함하고, 제 1부터 제 4 바이트의 순서를 반전시켜서 역으로 하며, 또는 64비트의 데이터 입도의 경우, 각 바이트 그룹 내에 8개의 바이트를 포함하고, 제 1부터 제 8 바이트의 순서를 반전해 역으로 하는 등과 같이, 각 바이트 그룹 내의 데이터의 바이트 순서 변환을 실현할 수 있다. 바이트 그룹 내의 바이트 순서를 역으로 한 후, 바이트 그룹의 순서로 제 2 데이터를 구성할 수 있고, 즉 데이터 바이트 순서의 변환 프로세스가 완료되었을 때, 바이트 그룹 내의 바이트 순서가 변환되었지만, 바이트 그룹의 순서는 변함없다.
또한, 제 1 데이터의 데이터 입도가 사전 설정된 입도와 다른 경우, 우선 그룹화 유닛(101)에 의해 제 1 데이터를 사전 설정된 입도에 대응하는 복수의 바이트 그룹으로 분할해서 제 3 데이터를 형성하고, 그리고 바이트 순서 변환 유닛(102)에 의해 제 3 데이터의 바이트 순서를 사전 설정된 바이트 순서로 변환해서 제 2 데이터를 획득한다. 예를 들어, 그룹화 유닛(101)에 의해 16비트의 데이터 입도를 변환할 때, 제 1 데이터를 어드레스가 낮은 것부터 차례로 2개의 바이트씩 복수의 바이트 그룹으로 분할하고, 바이트 순서 변환 유닛(102)에 의해, 각 바이트 그룹 내의 2개의 바이트의 위치를 바꿔서 바이트 그룹 사이의 순서를 바꾸지 않고, 제 2 데이터를 획득한다. 또는 그룹화 유닛(101)에 의해 32비트의 데이터 입도를 변환할 때, 제 1 데이터를 어드레스가 낮은 것부터 차례로 4개의 바이트씩 복수의 바이트 그룹으로 분할하고, 바이트 순서 변환 유닛(102)에 의해, 각 바이트 그룹 내의 4개의 바이트의 순서를 반전시켜서, 바이트 그룹 사이의 순서를 바꾸지 않고, 제 2 데이터를 획득한다. 또는 그룹화 유닛(101)에 의해 64비트의 데이터 입도를 변환할 때, 제 1 데이터를 어드레스가 낮은 것부터 차례로 8개의 바이트씩 복수의 바이트 그룹으로 분할하고, 바이트 순서 변환 유닛(102)에 의해, 각 바이트 그룹 내의 8개의 바이트의 순서를 반전시켜서, 바이트 그룹 사이의 순서를 바꾸지 않고, 제 2 데이터를 획득한다. 이와 같이, 상기 실시예는 바이트 순서 변환 유닛이 바이트 순서 변환을 실행하는 실시예를 설명하는 것일 뿐, 다른 실시예에서는 다른 입도의 데이터의 바이트 순서 변환 프로세스를 실행할 수도 있으며, 여기에서는 일일이 예시하지 않는다.
또한, 도 4c에 도시된 바와 같이, 본 개시의 실시예에 있어서, 제어 모듈(200)은 검출 유닛(203)을 더 포함할 수 있다. 해당 검출 유닛(203)은 제어 모듈(200)에 의해 데이터 변환을 실행하도록 데이터 변환 모듈(100)을 제어하기 전에, 제어 신호에 있어서의 제 2 데이터를 기억하기 위한 제 2 어드레스 공간이 아이들 상태인지 여부를 확인하고, 아이들 상태이면, 데이터 변환을 실행하도록 데이터 변환 모듈(100)을 제어하고, 그렇지 않으면, 제 2 어드레스 공간이 아이들 상태가 되면 대응하는 데이터 변환 동작을 실행하도록 데이터 변환 모듈을 제어한다. 이로써, 어드레스 충돌에 기인하는 데이터 에러를 방지한다.
본 개시의 실시예의 데이터 변환 프로세스를 보다 명확하게 하기 위해서, 이하에 예시한다.
본 개시의 실시예의 데이터 프로세서를 구비한 시스템이 데이터 처리를 실행하는 경우, 제어 버스를 통해서 제어 모듈(200)에 제어 신호를 송신하고, 해당 제어 신호는 데이터 처리되는 제 1 데이터의 제 1 어드레스 공간, 제 1 데이터의 데이터 입도(예를 들면 64비트), 제 1 데이터의 바이트 순서(빅 엔디안), 및 얻어진 제 2 데이터의 제 2 어드레스 공간, 제 2 데이터의 사전 설정된 데이터 입도(32비트), 제 2 데이터의 사전 설정된 바이트 순서(리틀 엔디안) 등의 정보를 포함할 수 있다. 제어 모듈(200)은 해당 제어 신호를 수신하면, 데이터 변환 모듈(100)에 데이터 변환 명령을 송신한다. 이로써, 그룹화 유닛에 의해 제 1 데이터를 사전 설정된 데이터 입도(32비트)로 그룹화해서 제 3 데이터를 획득하고, 바이트 순서 변환 유닛에 의해 제 3 데이터의 각 바이트 그룹의 바이트 순서를 사전 설정된 바이트 순서(리틀 엔디안)로 조정하며, 사전 설정된 데이터 형식을 만족하는 제 2 데이터를 획득한다. 계속해서, 제 2 데이터를, 데이터 버스를 통해서 대응하는 제 2 기억 공간에 출력하거나, 또는 다른 연산 처리에 이용한다.
상기 실시예에 의하면, 제 1 데이터의 데이터 입도 및/또는 바이트 순서 형식의 변환을 완료할 수 있고, 다른 디바이스에 의한 데이터 변환을 실시하는 일 없이 데이터 프로세서를 여러가지 제 1 데이터에 적용할 수 있다.
또한, 도 4d는 본 개시의 실시예에 따른, 데이터 프로세서의 블록도를 나타낸다. 데이터 프로세서는 상기 실시예에 기재된 데이터 변환 모듈(100) 및 제어 모듈(200)에 더해서 연산 모듈(300)을 더 포함할 수 있다. 해당 연산 모듈(300)은 사전 설정된 연산 명령에 따라서 제 2 데이터를 연산 처리할 수 있다.
상기 실시예에 기재와 마찬가지로, 제어 모듈(200)은 어드레스 버스로부터 제어 신호를 취득하고, 데이터 연산을 실행하기 위한 사전 설정된 연산 명령을 대응해서 취득한다. 제어 모듈(200)은 제어 신호에 기초해서 상기 사전 설정된 연산 명령을 결정하고, 상기 사전 설정된 연산 명령에 기초해서 상기 제 2 데이터를 연산 처리하도록 연산 모듈(300)을 제어할 수 있다.
본 개시의 실시예에 있어서, 제어 모듈(200)은 제어 신호에 기초해서, 데이터 변환 모듈(100)에 의한 제 1 데이터의 데이터 변환이 불필요하다고 결정한 경우, 즉 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 같은 경우, 사전 설정된 연산 명령에 기초해서 데이터의 연산 동작을 실행하도록 연산 모듈을 직접 제어한다.
또한, 제어 모듈(200)은 제어 신호에 기초해서 데이터 변환 모듈(100)에 의한 제 1 데이터의 데이터 변환이 필요하다고 결정한 경우, 즉 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 다른 경우, 우선, 데이터 변환 모듈(100)에 의해 제 1 데이터를 제 2 데이터로 변환하고, 그 후, 사전 설정된 연산 명령에 기초해서 제 2 데이터를 연산하도록 연산 모듈(300)을 제어해서 시스템에 필요한 데이터를 획득한다. 한편, 설명하고자 하는 것은 본 개시의 실시예에 있어서, 사전 설정된 연산 명령은 다른 연산 요구에 기초해서 설정할 수 있고, 시스템은 데이터의 연산 처리에 적용하는 연산 명령을 요구에 따라 결정할 수 있으며, 해당 연산 명령에 연산 처리에 적용되는 수식, 룰 등의 정보가 포함되고, 해당 연산 처리에 의해 시스템이 소망하는 데이터를 획득할 수 있다. 따라서, 본 개시의 실시예는 사전 설정된 연산 명령에 대해서 구체적으로 한정하지 않고, 다른 애플리케이션 요구에 있어서 상이한 명령으로 할 수 있다.
나아가, 본 개시의 실시예에 있어서, 제어 모듈(200)은 연산 모듈(300)에 의해 연산 동작을 실행하기 전에, 연산 모듈이 사전 설정된 조건을 만족하는지 여부를 판단할 필요가 있으며, 해당 사전 설정된 조건을 만족하는 경우에만, 연산 처리 동작을 실행하도록 연산 모듈을 제어한다. 여기서, 제어 모듈(200)에 있어서의 검출 유닛(203)은 해당 연산 모듈(300)이 사전 설정된 조건을 만족하는지 여부를 검출할 수 있고, 조건을 만족하면, 제 2 데이터를 연산 처리하도록 연산 모듈을 제어한다.
본 개시의 실시예에 있어서, 검출 유닛(203)은 연산 모듈(300)이 상기 연산 동작을 실행할 수 있는지 여부를 판단해서, 실행할 수 있다면, 제 2 데이터를 연산 처리하도록 연산 모듈을 제어하고, 그렇지 않으면, 상기 연산 모듈이 상기 연산 동작을 실행할 수 있게 되면 제 2 데이터를 연산 처리하도록 연산 모듈을 제어할 수 있다. 연산 모듈(300)은 복수의 연산 명령을 병렬로 처리 가능한 데이터 연산 처리능력을 가진 전자 디바이스여도 된다. 복수의 연산 동작이 존재하는 경우, 연산 모듈(300)은 메모리나 데이터 처리 속도의 제한에 의해, 보다 많은 연산 동작을 원활하게 실시할 수가 없는 경우가 있다. 따라서, 본 개시의 실시예에서는 검출 유닛(203)에 의해, 연산 모듈(300)의 데이터 처리 속도가 사전 설정된 속도보다 높은지, 또는 메모리 공간이 사전 설정된 메모리 공간보다 크다고 확인한 경우, 연산 모듈(300)이 연산 동작을 실행할 수 있다고 결정할 수 있다.
또한, 본 개시의 실시예에 있어서의 연산 모듈(300)은 각각 다른 연산 동작을 실행 가능한 복수의 연산 유닛을 포함할 수 있다. 따라서, 검출 유닛(203)은 비어 있는 연산 유닛이 존재하는 경우, 상기 연산 모듈이 사전 설정된 조건을 만족한다고 판단할 수 있다. 즉, 상기 연산 동작을 실행 가능한 연산 유닛이 존재하는 경우에만, 비어 있는 연산 유닛에 의해 대응하는 연산 동작을 실행하도록 연산 모듈을 제어한다.
본 개시의 실시예에 있어서, 검출 유닛(203)은 나아가 연산 모듈(300)이 현재 실행하고 있는 연산 처리에 사용되는 어드레스 공간과 제 2 데이터의 제 2 어드레스 공간 및 사전 설정된 연산 명령의 어드레스 공간이 충돌하고 있는지 여부를 검출해서, 충돌이 아니면, 상기 연산 모듈이 사전 설정된 조건을 만족한다고 판단할 수 있다. 여기서의 충돌이란, 연산 모듈이 현재 실행하고 있는 연산 동작에 의해 생성된 데이터를 기억하기 위한 어드레스 공간과 제 2 데이터의 어드레스 공간이 겹치고, 혹은 연산 모듈이 현재 실행하고 있는 연산 동작에 의해 생성된 데이터를 기억하기 위한 어드레스 공간과 사전 설정된 연산 명령의 어드레스 공간이 겹ㅊ치며, 혹은 제 2 데이터 동작을 실행한 후에 데이터를 기억하는 어드레스 공간과 연산 모듈이 현재 실행하고 있는 연산 동작에 이용되는 어드레스 공간이 겹치는 것을 의미한다. 상기 어드레스가 충돌하지 않는 경우에만, 연산 동작을 실행하도록 연산 모듈을 제어할 수 있다.
상기 구성에 기초해서, 연산 모듈이 사전 설정된 조건을 만족하는 경우에만, 연산 모듈에 의해 대응하는 연산 동작을 실행할 수 있어 데이터의 안전을 보증함과 아울러, 연산 효율을 향상시킬 수 있다.
이상과 같이, 본 개시의 실시예에 의하면, 다른 변환 디바이스를 이용해서 데이터 변환을 실행하는 일 없이 데이터를 소망한 형식으로 용이하게 변환할 수 있는 데이터 변환 모듈을 데이터 프로세서 내에 설치하는 것과, 다른 변환 디바이스의 사용 코스트를 저감시킬 수 있는 것과 아울러, 데이터 프로세서가 다양한 데이터 형식에 적용 가능하게 되어서, 양호한 적용성을 가진다.
본 개시에서 언급된 상기 각 방법의 실시예는 원리적인 논리에 반하지 않는 이상 서로 조합되어서 실시예를 형성할 수 있지만, 지면의 한계상 본 개시를 다시 설명하지 않는다는 것을 이해해야 한다.
또한, 본 개시는 상기 실시예에 있어서의 데이터 프로세서를 포함한 데이터 처리 칩, 전자 기기 및 데이터 프로세서에 적용되는 데이터 처리 방법을 더 제공하는데, 대응하는 기술적 해결 수단 및 설명이 방법 부분의 대응하는 기재를 참조하며, 설명은 생략한다.
본 개시의 실시예는 상기 실시예 중 어느 한 항에 기재된 데이터 프로세서를 포함한 데이터 처리 칩을 더 제공한다.
몇 개의 실시예에 있어서, 상기 칩을 포함한 칩 패키지 구조를 제공한다.
몇 개의 실시예에 있어서, 상기 칩 패키지 구조를 포함한 기판 카드를 제공한다.
본 개시의 실시예는 상기 실시예 중 어느 한 항에 기재된 데이터 프로세서 또는 데이터 처리 칩, 또는 상기 기판 카드를 포함한 전자 기기를 더 제공한다.
전자 기기는 데이터 처리 장치, 로보트, 컴퓨터, 프린터, 스캐너, 태블릿형 컴퓨터, 스마트 단말, 휴대전화, 드라이브 레코더, 네비게이터, 센서, 카메라, 서버, 클라우드 서버, 카메라, 비디오 카메라, 프로젝터, 손목시계, 헤드폰, 모바일 스토리지, 웨아러블 기기, 교통 기관, 가전 기기 및/또는 의료기기를 포함한다.
상기 교통 기관은 비행기, 선박 및/또는 차량을 포함하고, 상기 가전 기기는 텔레비젼, 에어콘, 전자렌지, 냉장고, 밥솥, 가습기, 세탁기, 전등, 가스 풍로, 레인지 푸드를 포함하며, 상기 의료기기는 핵자기 공명계, B초음파 장치 및/또는 심전계를 포함한다.
또한, 본 개시의 실시예는 상기 실시예에 기재된 데이터 프로세서에 적용되는 데이터 처리 방법을 더 제공한다. 도 4e는 본 개시의 실시예에 따른, 데이터 처리 방법의 플로우차트를 나타내며, 제어 신호를 수신하는 S100와, 수신한 제어 신호에 기초해서 제 1 데이터의 바이트 순서가 사전 설정된 바이트 순서와 다르다고 확인한 경우에, 사전 설정된 데이터 형식에 기초해서 상기 제 1 데이터를 제 2 데이터로 변환하도록 데이터 변환 모듈을 제어하는 S200를 포함할 수 있으며, 상기 데이터 변환 모듈은 사전 설정된 입도와 사전 설정된 바이트 순서를 포함한 사전 설정된 데이터 형식에 기초해서 제 1 데이터를 제 2 데이터로 변환하도록 구성된다.
본 개시의 실시예에 있어서, 상기 데이터 변환 모듈은 그룹화 유닛과 바이트 순서 변환 유닛을 포함하고, 사전 설정된 데이터 형식에 기초해서 상기 제 1 데이터를 제 2 데이터로 변환하도록 데이터 변환 모듈을 제어하는 것은 그룹화 유닛에 의해 상기 사전 설정된 입도에 기초해서 상기 제 1 데이터를 복수의 바이트 그룹으로 분할해서 제 3 데이터를 획득하는 것과, 상기 바이트 순서 변환 유닛에 의해 상기 사전 설정된 바이트 순서에 기초해서 상기 제 3 데이터를 제 2 데이터로 변환하는 것을 포함하고, 여기서 제 3 데이터의 각 바이트 그룹의 입도는 사전 설정된 입도와 같다.
본 개시의 실시예에 있어서, 그룹화 유닛에 의해 상기 사전 설정된 입도에 기초해서 상기 제 1 데이터를 복수의 바이트 그룹으로 분할해서 제 3 데이터를 획득하는 것은 상기 제 1 데이터의 어드레스 공간의 하위 어드레스로부터 상위 어드레스의 순서로 상기 제 1 데이터를 복수의 바이트 그룹으로 분할하고, 상기 복수의 바이트 그룹의 그룹수는 제 1 데이터의 데이터 입도와 사전 설정된 입도의 비와 같은 것과, 상기 복수의 바이트 그룹에 기초해서 상기 제 3 데이터를 획득하는 것을 포함한다.
본 개시의 실시예에 있어서, 상기 바이트 순서 변환 유닛에 의해 상기 사전 설정된 바이트 순서에 기초해서 상기 제 3 데이터를 제 2 데이터로 변환하는 것은, 상기 바이트 순서 변환 유닛에 의해 상기 제 3 데이터의 각 바이트 그룹에 있어서의 바이트 순서를 역으로 하고, 각 바이트 그룹의 순서로 상기 제 2 데이터를 획득하는 것을 포함한다.
본 개시의 실시예에 있어서, 상기 방법은 상기 제어 신호에 기초해서, 제 1 데이터를 기억하기 위한 제 1 어드레스 공간 및 제 2 데이터를 기억하기 위한 제 2 어드레스 공간을 취득하는 것을 더 포함하고, 상기 데이터 변환 모듈은 상기 제 1 어드레스 공간에 기초해서 제 1 데이터를 취득하고, 상기 제 1 데이터를 제 2 데이터로 변환하며, 상기 제 2 데이터를 제 2 어드레스 공간에 기억한다.
본 개시의 실시예에 있어서, 상기 방법은 상기 제어 신호에 기초해서 상기 사전 설정된 연산 명령을 결정하는 것과, 상기 사전 설정된 연산 명령에 기초해서 상기 제 2 데이터를 연산 처리하도록 연산 모듈을 제어하는 것을 더 포함한다.
본 개시의 실시예에 있어서, 상기 방법은 상기 연산 모듈이 사전 설정된 조건을 만족하는지 여부를 검출하는 것과, 조건을 만족하면, 상기 사전 설정된 연산 명령에 기초해서 상기 제 2 데이터를 연산 처리하도록 상기 연산 모듈을 제어하는 것을 더 포함한다.
본 개시의 실시예에 있어서, 상기 연산 모듈이 사전 설정된 조건을 만족하는지 여부를 검출하는 것은, 상기 연산 모듈에 비어 있는 연산 유닛이 있는 경우, 상기 연산 모듈이 사전 설정된 조건을 만족한다고 판단하는 것, 및/또는 상기 연산 모듈이 현재 실행하고 있는 연산 처리에 사용되는 어드레스 공간과 상기 제 2 데이터의 어드레스 공간 및 사전 설정된 연산 명령의 어드레스 공간이 충돌하고 있는지 여부를 검출해서, 충돌이 아니면, 상기 연산 모듈이 사전 설정된 조건을 만족한다고 판단하는 것을 포함한다.
한편, 전술한 각 방법의 실시예에 대해서는 설명을 간단하게 하기 위해서, 일련의 동작의 조합으로서 설명했지만, 당업자라면 본 개시는 기재된 동작 순서로 한정되는 것이 아니라는 것이 이해된다. 본 개시에 의하면, 몇 개의 단계는 다른 순서로 또는 동시에 실행되어도 되기 때문이다. 또한, 본 명세서에 기재된 실시예 모두가 선택 가능한 실시예에 속하고, 관련된 동작 및 모듈이 본 개시에 필수라고는 할 수 없다는 것도 당업자에게는 이해된다.
전술한 실시예에서는, 각 실시예의 설명은 각각의 중요한 점이 있으며, 특정의 실시예에 상세하게 기재되지 않은 부분은 다른 실시예의 관련 설명을 참조할 수 있다.
본 개시에 의해 제공되는 몇 개의 실시예에 있어서, 개시되는 장치는 다른 방법에 따라 실현되어도 된다는 점을 이해해야 한다. 예를 들면, 전술한 장치의 실시예는 예시적인 것에 지나지 않고, 예를 들면 상기 유닛의 분할은 논리 기능의 분할에 지나지 않으며, 실제로 실장될 때에, 다른 분할 방식이 있어도 된다. 예를 들면, 복수의 유닛 또는 컴포넌트는 조합해도 되고, 다른 시스템에 집적해도 되며, 몇 개의 특징을 무시해도 되고, 실행하지 않아도 되다. 다른 점으로는, 표시 또는 검토되는 상호 간의 결합 또는 직접 결합 또는 통신 접속은 몇 개의 인터페이스, 장치 또는 유닛을 통한 간접적인 결합 또는 통신 접속이어도 되고, 전기적 또는 다른 형태의 결합 또는 접속이어도 된다.
상기 분리된 부재로서 설명된 유닛은 물리적으로 분리되어도 되고, 물리적으로 분리되어 있지 않아도 된다. 유닛으로서 나타난 부재는 물리적인 유닛이어도 되고, 물리적인 유닛이 아니어도 되며, 1개의 장소에 있어도 되고, 복수의 네트워크 유닛으로 분산되어도 된다. 실제의 수요에 따라서, 그 중 일부 또는 전부의 유닛을 선택해서 본 실시예의 해결 수단의 목적을 달성할 수 있다.
또한, 본 출원의 각 실시예에 있어서의 각 기능 유닛은 1개의 처리 유닛에 집적되어도 되고, 각 유닛이 개별적으로 물리적으로 존재해도 되며, 2개 이상의 유닛이 1개의 유닛으로 집적되어도 된다. 상기 집적된 유닛은 하드웨어의 형태로 실현되어도 되고, 소프트웨어 프로그램 모듈의 형태로 실현되어도 된다.
상기 집적된 유닛은 소프트웨어 프로그램 모듈의 형태로 실현되어, 독립적인 제품으로서 판매 또는 이용되는 경우, 컴퓨터 판독 가능한 메모리에 기억되어도 된다. 이러한 이해에 기초해서, 본 출원의 기술적 해결 수단은 본질적으로 또는 종래 기술에 공헌하는 부분 또는 해당 기술적 해결 수단의 전부 또는 일부가 소프트웨어 제품으로서 구현될 수 있으며, 해당 컴퓨터 소프트웨어 제품은 1개의 메모리에 기억되어, 1개의 컴퓨터 기기(퍼스널 컴퓨터, 서버 또는 네트워크 장치 등이어도 된다)에 본 출원의 각 실시예에 기재된 방법의 단계의 전부 또는 일부를 실행시키는 복수의 명령을 포함한다. 또한, 상기 메모리로는, U 디스크, 판독 전용 메모리(ROM, Read-Only Memory), RAM(RAM, Random Access Memory), 리무버블 하드 디스크, 자기 디스크 또는 광디스크 등, 프로그램 코드를 기억 가능한 각종 매체가 포함된다.
당업자라면, 전술한 실시예의 각종 방법에 있어서의 단계의 전부 또는 일부는 컴퓨터 판독 가능한 메모리에 기억 가능한 프로그램에 의해, 관련된 하드웨어에 지시해서 실행할 수 있다는 것이 이해된다. 메모리로는 플래시 디스크, 판독 전용 메모리(Read-Only Memory; ROM), RAM(Random Access Memory; RAM), 자기 디스크 또는 광디스크 등이 있다.
이상, 본 출원의 실시예에 대해서 상세하게 설명했으며, 본 출원의 원리 및 실시형태에 대해 구체예를 적용해서 설명했지만, 이상의 실시예의 설명은 본 출원의 방법 및 그 핵심 사상의 이해를 돕기 위한 것에 지나지 않고, 또한 당업자라면 본 출원의 사상에 기초해서, 구체적인 실시형태 및 적용 범위를 변경할 수 있다. 따라서, 본 명세서의 내용은 본 출원를 한정하는 것으로서 이해되어서는 안된다.

Claims (25)

  1. 온 칩 코드의 브레이크 포인트에 의한 디버그 방법으로서,
    온 칩 프로세서에 의해, 브레이크 포인트에 출력 함수가 설정되어 있는 온 칩 코드의 실행을 개시하는 것과,
    상기 온 칩 프로세서에 의해, 상기 온 칩 코드의 상기 출력 함수가 실행되었을 때의 상기 출력 함수의 출력 정보를 취득하는 것과,
    상기 온 칩 프로세서에 의해, 상기 출력 정보를 오프 칩 메모리에 기억하는 것
    을 포함하는 온 칩 코드의 브레이크 포인트에 의한 디버그 방법.
  2. 제 1 항에 있어서,
    상기 온 칩 프로세서에 의해, 상기 오프 칩 메모리 내의 출력 정보에 기초해서, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과를 확인하는 것
    을 더 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 출력 함수는 수치 프린트 함수 또는 문자열 프린트 함수를 포함하는
    방법.
  4. 제 1 항에 있어서,
    상기 출력 정보는 사전 설정된 수치 정보 또는 문자열 정보, 또는 상기 온 칩 코드 내의 상기 출력 함수 이외의 함수의 출력 정보를 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 온 칩 프로세서에 의해, 상기 출력 함수의 출력 정보를 취득하는 것은, 상기 온 칩 프로세서에 의해, 온 칩 시스템의 RAM으로부터 상기 출력 함수의 출력 정보를 취득하는 것을 포함하는
    방법.
  6. 제 1 항에 있어서,
    상기 온 칩 프로세서에 의해, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것
    을 더 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 온 칩 프로세서는 드라이버 프로그램에 의해 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것을 더 포함하는
    방법.
  8. 제 6 항에 있어서,
    상기 온 칩 프로세서에 의해, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것은, 상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보가 갱신되면 갱신된 출력 정보를 출력하는 것을 포함하는
    방법.
  9. 제 8 항에 있어서,
    상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보가 갱신되면 갱신된 출력 정보를 출력하는 것은,
    상기 온 칩 프로세서는 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것과,
    상기 제 1 스레드는 상기 출력 정보의 갱신을 확인한 경우, 상기 오프 칩 메모리 상태 식별자를 갱신하는 것과,
    상기 온 칩 프로세서는 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것과,
    상기 제 2 스레드는 상기 상태 식별자의 갱신을 확인한 경우, 상기 오프 칩 메모리 내의 갱신된 출력 정보를 출력하는 것
    을 포함하는
    방법.
  10. 제 9 항에 있어서,
    상기 온 칩 프로세서는 제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것은, 상기 온 칩 프로세서는 드라이버 프로그램에 의해 상기 제 1 스레드를 기동해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것을 포함하고,
    상기 온 칩 프로세서는 제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것은, 상기 온 칩 프로세서는 HOST 프로그램에 의해 상기 제 2 스레드를 기동해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것을 포함하는
    방법.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 오프 칩 메모리 상태 식별자는 판독 완료 식별자 또는 미판독 식별자를 포함하는
    방법.
  12. 제 6 항에 있어서,
    상기 온 칩 프로세서에 의해 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것은,
    상기 온 칩 프로세서는 제 3 스레드를 이용해서, 상기 오프 칩 메모리의, 수신한 출력 정보에 기초해서 인터럽트 함수를 트리거해서 들어간 상태인 하드웨어 인터럽트 상태, 또는 하드웨어 비인터럽트 상태를 포함한 상기 오프 칩 메모리의 하드웨어 상태를 확인하는 것과,
    상기 제 3 스레드는 상기 오프 칩 메모리의 하드웨어 인터럽트 상태를 확인한 경우, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것
    을 포함하는
    방법.
  13. 온 칩 프로세서로서,
    브레이크 포인트에 출력 함수가 설정되어 있는 온 칩 코드의 실행을 개시하기 위해서 이용되는 개시 모듈과,
    상기 온 칩 코드의 상기 출력 함수가 실행되었을 때의 상기 출력 함수의 출력 정보를 취득하기 위해서 이용되는 출력 정보 취득 모듈과,
    상기 출력 정보를 오프 칩 메모리에 기억하기 위해서 이용되는 기억 모듈
    을 포함하는 온 칩 프로세서.
  14. 제 13 항에 있어서,
    상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보에 기초해서, 상기 온 칩 코드의 브레이크 포인트에 의한 디버그의 결과를 확인하기 위해서 이용되는 브레이크 포인트 디버그 결과 확인 모듈을 포함하는 칩.
  15. 제 13 항에 있어서,
    상기 출력 함수는 수치 프린트 함수 또는 문자열 프린트 함수를 포함하는
    칩.
  16. 제 13 항에 있어서,
    상기 출력 정보는 사전 설정된 수치 정보 또는 문자열 정보, 또는 상기 온 칩 코드 내의 상기 출력 함수 이외의 함수의 출력 정보를 포함하는
    칩.
  17. 제 13 항에 있어서,
    상기 출력 정보 취득 모듈은, 상기 온 칩 프로세서에 의해, 온 칩 시스템의 RAM으로부터 상기 출력 함수의 출력 정보를 취득하는 것을 포함하는
    칩.
  18. 제 13 항에 있어서,
    상기 온 칩 프로세서는 상기 오프 칩 메모리 내의 출력 정보를 출력하기 위해서 이용되는 출력 모듈을 더 포함하는
    칩.
  19. 제 18 항에 있어서,
    상기 출력 모듈은 드라이버 프로그램에 의해 상기 오프 칩 메모리 내의 출력 정보를 출력하기 위해서 이용되는 제 1 출력 서브 모듈을 포함하는
    칩.
  20. 제 18 항에 있어서,
    상기 출력 모듈은 상기 오프 칩 메모리 내의 출력 정보가 갱신되면, 갱신된 출력 정보를 출력하기 위해서 이용되는 제 2 출력 서브 모듈을 포함하는
    칩.
  21. 제 20 항에 있어서,
    상기 제 2 출력 서브 모듈은,
    제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것과,
    상기 제 1 스레드는 상기 출력 정보의 갱신을 확인한 경우, 상기 오프 칩 메모리 상태 식별자를 갱신하는 것과,
    제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것과,
    상기 제 2 스레드는 상기 상태 식별자의 갱신을 확인한 경우, 상기 오프 칩 메모리 내의 갱신된 출력 정보를 출력하는 것에 이용되는
    칩.
  22. 제 21 항에 있어서,
    제 1 스레드를 이용해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것은, 드라이버 프로그램에 의해 상기 제 1 스레드를 기동해서 상기 오프 칩 메모리 내의 출력 정보를 확인하는 것을 포함하고,
    제 2 스레드를 이용해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것은, HOST 프로그램에 의해 상기 제 2 스레드를 기동해서 상기 오프 칩 메모리 상태 식별자를 확인하는 것을 포함하는
    칩.
  23. 제 21 항 또는 제 22 항에 있어서,
    상기 오프 칩 메모리 상태 식별자는 판독 완료 식별자 또는 미판독 식별자를 포함하는
    칩.
  24. 제 18 항에 있어서,
    상기 출력 모듈은,
    제 3 스레드를 이용해서, 상기 오프 칩 메모리의, 수신한 출력 정보에 기초해서 인터럽트 함수를 트리거해서 들어간 상태인 하드웨어 인터럽트 상태, 또는 하드웨어 비인터럽트 상태를 포함한 상기 오프 칩 메모리의 하드웨어 상태를 확인하는 것과,
    상기 제 3 스레드는 상기 오프 칩 메모리의 하드웨어 인터럽트 상태를 확인한 경우, 상기 오프 칩 메모리 내의 출력 정보를 출력하는 것에 이용되는 제 3 출력 서브 모듈을 포함하는
    칩.
  25. 온 칩 브레이크 포인트에 의한 디버그를 행하기 위한, 제 13 항 내지 제 24 항 중 어느 한 한에 기재된 온 칩 프로세서를 포함한 브레이크 포인트 디버그 칩과,
    상기 브레이크 포인트 디버그 칩의 출력 정보를 기억하기 위해서 이용되는 오프 칩 메모리를 포함하는
    브레이크 포인트에 의한 칩 디버그 시스템.
KR1020207036740A 2018-06-27 2019-06-25 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 KR102470893B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
CN201810680472.4A CN110647355B (zh) 2018-06-27 2018-06-27 数据处理器和数据处理方法
CN201810680472.4 2018-06-27
CN201810777693.3A CN110727462B (zh) 2018-07-16 2018-07-16 数据处理器和数据处理方法
CN201810777693.3 2018-07-16
CN201810782174.6 2018-07-17
CN201810782174.6A CN110728364A (zh) 2018-07-17 2018-07-17 一种运算装置和运算方法
CN201811045822.6 2018-09-07
CN201811045822.6A CN110888793A (zh) 2018-09-07 2018-09-07 片上代码断点调试方法、片上处理器及芯片断点调试系统
PCT/CN2019/092805 WO2020001438A1 (zh) 2018-06-27 2019-06-25 片上代码断点调试方法、片上处理器及芯片断点调试系统

Publications (2)

Publication Number Publication Date
KR20210020927A true KR20210020927A (ko) 2021-02-24
KR102470893B1 KR102470893B1 (ko) 2022-11-25

Family

ID=68986105

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207036740A KR102470893B1 (ko) 2018-06-27 2019-06-25 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템

Country Status (5)

Country Link
US (1) US11789847B2 (ko)
EP (2) EP3825841A1 (ko)
JP (1) JP7053891B2 (ko)
KR (1) KR102470893B1 (ko)
WO (1) WO2020001438A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US20200159532A1 (en) 2018-02-13 2020-05-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
KR102354720B1 (ko) 2018-02-13 2022-01-21 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 계산 장치 및 방법
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
WO2019218896A1 (zh) 2018-05-18 2019-11-21 上海寒武纪信息科技有限公司 计算方法以及相关产品
EP3825841A1 (en) 2018-06-27 2021-05-26 Shanghai Cambricon Information Technology Co., Ltd Method and device for parallel computation of a network model
EP3757896B1 (en) 2018-08-28 2023-01-11 Cambricon Technologies Corporation Limited Method and device for pre-processing data in a neural network
EP3859488A4 (en) 2018-09-28 2022-06-29 Shanghai Cambricon Information Technology Co., Ltd Signal processing device, signal processing method and related product
CN111383637A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
CN111832739B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
CN112085192B (zh) 2019-06-12 2024-03-29 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
CN114064506B (zh) * 2021-11-29 2023-04-04 电子科技大学 一种基于深度神经网络的二进制程序模糊测试方法及系统
US11934332B2 (en) * 2022-02-01 2024-03-19 Mellanox Technologies, Ltd. Data shuffle offload

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887475A (ja) * 1994-07-22 1996-04-02 Mitsubishi Electric Corp 情報処理装置および情報処理装置における計算方法
US20040250164A1 (en) * 2003-05-22 2004-12-09 Infineon Technologies North America Corp. Configurable real-time trace port for embedded processors
JP2015509183A (ja) * 2011-12-20 2015-03-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 回路装置、集積回路デバイス、プログラム製品、および方法(内部投票ベースのビルトイン・セルフ・テスト(bist)を備えるマルチコア・プロセッサ)
JP2018514872A (ja) * 2015-04-27 2018-06-07 ユニヴァーシテト チューリッヒ スケーラブルなイベント駆動型計算システムのための異種メモリ構造をもつネットワークおよび階層型ルーティングファブリック
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management

Family Cites Families (172)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0375860A (ja) 1989-08-18 1991-03-29 Hitachi Ltd パーソナライズド端末
JPH087475B2 (ja) 1990-01-29 1996-01-29 富士ゼロックス株式会社 カラー画像形成装置及びその使用方法
US5052043A (en) 1990-05-07 1991-09-24 Eastman Kodak Company Neural network with back propagation controlled through an output confidence measure
JPH0439761A (ja) * 1990-06-05 1992-02-10 Iwaki Electron Corp Ltd データ処理装置
JPH052610A (ja) * 1991-06-25 1993-01-08 Mitsubishi Electric Corp リレーシヨナルデータベースにおける集約演算処理方式
JPH08235149A (ja) * 1995-02-24 1996-09-13 Sumitomo Metal Ind Ltd 単一命令・多データ型並列計算機の命令生成・分配装置
US5544311A (en) * 1995-09-11 1996-08-06 Rockwell International Corporation On-chip debug port
GB9602701D0 (en) 1996-02-09 1996-04-10 Canon Kk Image manipulation
US6047351A (en) * 1997-12-12 2000-04-04 Scenix Semiconductor, Inc. Jitter free instruction execution
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
US7242414B1 (en) 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
JP2000293371A (ja) 1999-04-09 2000-10-20 Hitachi Ltd マイクロプログラム制御方法及び装置
US6732307B1 (en) * 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US6931639B1 (en) 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
AU8446101A (en) 2000-09-07 2002-03-22 Nippon Steel Corp Hexavalent chromium-free surface-treating agent for sn- or al-based coated steelsheet, and surface treated steel sheet
US6751751B1 (en) * 2000-11-06 2004-06-15 Xilinx, Inc. Universal multi-bus breakpoint unit for a configurable system-on-chip
US20020138714A1 (en) 2001-03-22 2002-09-26 Sun Microsystems, Inc. Scoreboard for scheduling of instructions in a microprocessor that provides out of order execution
WO2002086817A1 (en) 2001-04-19 2002-10-31 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive memory allocation
US6877114B2 (en) * 2002-02-14 2005-04-05 Delphi Technologies, Inc. On-chip instrumentation
US20030167460A1 (en) 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
JP2003256385A (ja) * 2002-03-04 2003-09-12 Hitachi Ltd データ処理装置
US7236995B2 (en) 2002-12-27 2007-06-26 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point representations
DE10316381A1 (de) 2003-04-10 2004-10-28 Bayer Technology Services Gmbh Verfahren zum Training von neuronalen Netzen
EP1671233B1 (en) * 2003-09-04 2011-11-16 Koninklijke Philips Electronics N.V. Tree-like data processing system accessing a memory
JP4202244B2 (ja) 2003-12-22 2008-12-24 Necエレクトロニクス株式会社 Vliw型dsp,及びその動作方法
US20060161375A1 (en) 2004-12-30 2006-07-20 Allen Duberstein Optimizing processing speed based on measured temperatures
US7698473B2 (en) * 2005-01-05 2010-04-13 Sony Computer Entertainment Inc. Methods and apparatus for list transfers using DMA transfers in a multi-processor system
US7721128B2 (en) 2005-11-29 2010-05-18 International Business Machines Corporation Implementation of thermal throttling logic
CN1851668A (zh) 2006-06-01 2006-10-25 北京天碁科技有限公司 片上系统芯片、片上系统芯片的跟踪调试系统及方法
US20110060587A1 (en) 2007-03-07 2011-03-10 Phillips Michael S Command and control utilizing ancillary information in a mobile voice-to-speech application
JP5184824B2 (ja) 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法
JP2009110353A (ja) 2007-10-31 2009-05-21 Hitachi Ltd マイクロコントローラ及び制御システム
US7904287B2 (en) 2007-11-13 2011-03-08 International Business Machines Corporation Method and system for real-time prediction of power usage for a change to another performance state
JP4998794B2 (ja) 2007-11-29 2012-08-15 Nkワークス株式会社 画像補正方法と画像補正装置
US20100073068A1 (en) 2008-09-22 2010-03-25 Hanwoo Cho Functional block level thermal control
CN101572829B (zh) 2009-06-10 2011-02-02 中国联合网络通信集团有限公司 Iptv视频质量监测方法、装置和系统
EP2336882A1 (en) 2009-12-18 2011-06-22 Telefonaktiebolaget L M Ericsson (PUBL) Technique for run-time provision of executable code using off-device services
EP2365441B1 (en) * 2010-03-08 2018-01-24 Mobileye Vision Technologies Ltd. System on chip breakpoint methodology
WO2011132277A1 (ja) 2010-04-21 2011-10-27 トヨタ自動車株式会社 内燃機関の制御装置
JP2011253374A (ja) 2010-06-02 2011-12-15 Sony Corp 情報処理装置、および情報処理方法、並びにプログラム
US8452463B2 (en) 2010-06-04 2013-05-28 Apple Inc. Adjusting the thermal behavior of a computing system using indirect information about ambient temperature
US8694572B2 (en) 2010-07-06 2014-04-08 Silminds, Llc, Egypt Decimal floating-point fused multiply-add unit
US8589887B2 (en) * 2010-10-20 2013-11-19 International Business Machines Corporation Registration-based remote debug watch and modify
US8924455B1 (en) 2011-02-25 2014-12-30 Xilinx, Inc. Multiplication of matrices using systolic arrays
AU2012253292B2 (en) 2011-05-12 2015-10-29 Apple Inc. Presence sensing
CN102789413B (zh) * 2011-05-23 2016-02-17 同济大学 一种并行程序的调试系统及方法
US8594982B2 (en) 2011-06-09 2013-11-26 Pulsar Informatics, Inc. Systems and methods for distributed calculation of fatigue-risk prediction and optimization
DE102012009502A1 (de) 2012-05-14 2013-11-14 Kisters Ag Verfahren zum Trainieren eines künstlichen neuronalen Netzes
US9417891B2 (en) 2012-06-11 2016-08-16 Vmware, Inc. Unified storage/VDI provisioning methodology
US9063731B2 (en) 2012-08-27 2015-06-23 Samsung Electronics Co., Ltd. Ultra low power apparatus and method to wake up a main processor
CN102903089B (zh) 2012-09-07 2014-12-17 山东大学 一种Linux环境下生成遥感图像快视图的方法
US9412366B2 (en) 2012-09-18 2016-08-09 Adobe Systems Incorporated Natural language image spatial and tonal localization
KR20150115724A (ko) 2012-11-22 2015-10-14 각고호우징 게이오기주크 아크릴계 공중합체, 광학 필름, 편광판 및 액정 표시 장치
US9851977B2 (en) 2012-12-06 2017-12-26 Kalray Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization
US9274798B2 (en) * 2013-01-18 2016-03-01 Morgan Stanley Multi-threaded logging
US9720732B1 (en) 2013-02-11 2017-08-01 Amazon Technologies, Inc. Parameter selection for optimization of task execution based on execution history for prior tasks
JP2014170295A (ja) 2013-03-01 2014-09-18 Honda Motor Co Ltd 物体認識システム及び物体認識方法
US20190138372A1 (en) 2013-04-29 2019-05-09 Moogsoft, Inc. System for managing an instructure with security
JP6184891B2 (ja) 2014-03-12 2017-08-23 東芝メモリ株式会社 情報処理装置、半導体チップ、情報処理方法およびプログラム
US9507405B2 (en) 2014-06-18 2016-11-29 Oracle International Corporation System and method for managing power in a chip multiprocessor using a proportional feedback mechanism
CN104063319A (zh) * 2014-06-26 2014-09-24 上海凌阳科技有限公司 一种嵌入式系统的调试方法及其装置
US9955007B1 (en) * 2014-07-07 2018-04-24 Ultratec, Inc. Dual compatibility phone system
US9575537B2 (en) 2014-07-25 2017-02-21 Intel Corporation Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
GB2524126B (en) 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths
US9916130B2 (en) 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
FR3030077B1 (fr) 2014-12-10 2016-12-02 Arnault Ioualalen Procede d'ajustement de la precision d'un programme d'ordinateur manipulant au moins un nombre a virgule.
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US10262259B2 (en) 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US10083395B2 (en) 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
CN104899641B (zh) * 2015-05-25 2018-07-13 杭州朗和科技有限公司 深度神经网络学习方法、处理器和深度神经网络学习系统
WO2016199151A2 (en) 2015-06-10 2016-12-15 Mobileye Vision Technologies Ltd. Image processor and methods for processing an image
CN104978303B (zh) 2015-06-19 2019-06-04 上海兆芯集成电路有限公司 单芯片整合的传感器集线器和多传感器管理方法
CN106469291A (zh) 2015-08-19 2017-03-01 中兴通讯股份有限公司 图像处理方法及终端
US10031765B2 (en) 2015-09-24 2018-07-24 Intel Corporation Instruction and logic for programmable fabric hierarchy and cache
US10812831B2 (en) 2015-09-30 2020-10-20 Piksel, Inc. Video stream delivery via adaptive quality enhancement using error correction models
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
WO2017087568A1 (en) 2015-11-17 2017-05-26 Eman Bayani A digital image capturing device system and method
CN106814639A (zh) 2015-11-27 2017-06-09 富泰华工业(深圳)有限公司 语音控制系统及方法
CN105893419A (zh) 2015-11-30 2016-08-24 乐视致新电子科技(天津)有限公司 一种多媒体照片生成方法、装置、设备及手机
US10699186B2 (en) 2015-12-02 2020-06-30 Google Llc Determining orders of execution of a neural network
CN106991478B (zh) 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
CN106997236B (zh) 2016-01-25 2018-07-13 亮风台(上海)信息科技有限公司 基于多模态输入进行交互的方法和设备
US10586173B2 (en) 2016-01-27 2020-03-10 Bonsai AI, Inc. Searchable database of trained artificial intelligence objects that can be reused, reconfigured, and recomposed, into one or more subsequent artificial intelligence models
US10497089B2 (en) 2016-01-29 2019-12-03 Fotonation Limited Convolutional neural network
US10103714B2 (en) 2016-03-01 2018-10-16 Qualcomm Incorporated Adjust voltage for thermal mitigation
JP2017156511A (ja) 2016-03-01 2017-09-07 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US10019779B2 (en) 2016-03-08 2018-07-10 Amazon Technologies, Inc. Browsing interface for item counterparts having different scales and lengths
CN107330515A (zh) 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法
US10552119B2 (en) 2016-04-29 2020-02-04 Intel Corporation Dynamic management of numerical representation in a distributed matrix processor architecture
US10187568B1 (en) 2016-05-02 2019-01-22 Bao Tran Video smart phone
US11055063B2 (en) 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
AU2016203619A1 (en) 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
EP3252949B1 (en) 2016-06-01 2020-03-18 Intel IP Corporation Methods and devices for predistortion of signals
US20170357910A1 (en) 2016-06-10 2017-12-14 Apple Inc. System for iteratively training an artificial intelligence using cloud-based metrics
CN107545889B (zh) 2016-06-23 2020-10-23 华为终端有限公司 适用于模式识别的模型的优化方法、装置及终端设备
CN106156310A (zh) 2016-06-30 2016-11-23 努比亚技术有限公司 一种图片处理装置和方法
US10372588B2 (en) 2016-07-08 2019-08-06 International Business Machines Corporation Providing debug information on production containers using debug containers
DE102016214786A1 (de) 2016-08-09 2018-02-15 Fujitsu Limited Anwendungsprofiling-Jobmanagement-System, -Programm und -Verfahren
US20180046903A1 (en) 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)
CN106354568A (zh) 2016-08-23 2017-01-25 京信通信技术(广州)有限公司 一种不同进程间的通信方法及通信装置
CN107797913A (zh) 2016-09-07 2018-03-13 大陆汽车电子(连云港)有限公司 一种实时系统的软件分析系统与方法
US11907760B2 (en) 2016-09-23 2024-02-20 Apple Inc. Systems and methods of memory allocation for neural networks
CN106650922B (zh) 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
US20180096243A1 (en) 2016-09-30 2018-04-05 General Electric Company Deep learning for data driven feature representation and anomaly detection
US10726330B2 (en) 2016-10-11 2020-07-28 The Research Foundation For The State University Of New York System, method, and accelerator to process convolutional neural network layers
US10732866B2 (en) * 2016-10-27 2020-08-04 Samsung Electronics Co., Ltd. Scaling out architecture for DRAM-based processing unit (DPU)
US10216479B2 (en) 2016-12-06 2019-02-26 Arm Limited Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
CN106951587A (zh) * 2017-02-15 2017-07-14 芯启源(南京)半导体科技有限公司 Fpga调试系统及方法
US10078453B1 (en) * 2017-03-15 2018-09-18 Intel Corporation Storage system, computer program product, and method for managing a hybrid memory device system
CN106951962B (zh) 2017-03-22 2020-09-01 南京地平线机器人技术有限公司 用于神经网络的复合运算单元、方法和电子设备
US10255400B1 (en) * 2017-03-30 2019-04-09 Xilinx, Inc. Debugging system and method
US10332302B2 (en) 2017-04-17 2019-06-25 Intel Corporation Scatter gather engine
US10402932B2 (en) 2017-04-17 2019-09-03 Intel Corporation Power-based and target-based graphics quality adjustment
CN107025629B (zh) 2017-04-27 2021-03-26 维沃移动通信有限公司 一种图像处理方法及移动终端
US11842280B2 (en) 2017-05-05 2023-12-12 Nvidia Corporation Loss-scaling for deep neural network training with reduced precision
US10019668B1 (en) 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
US11144828B2 (en) 2017-06-09 2021-10-12 Htc Corporation Training task optimization system, training task optimization method and non-transitory computer readable medium for operating the same
US10944902B2 (en) 2017-06-20 2021-03-09 Adobe Inc. Digital image generation using capture support data
US9916531B1 (en) 2017-06-22 2018-03-13 Intel Corporation Accumulator constrained quantization of convolutional neural networks
EP3646164A4 (en) 2017-06-30 2021-01-20 INTEL Corporation HETEROGENIC MULTIPLIER
CN107451654B (zh) 2017-07-05 2021-05-18 深圳市自行科技有限公司 卷积神经网络的加速运算方法、服务器及存储介质
CN109214509B (zh) 2017-07-05 2021-07-06 中国科学院沈阳自动化研究所 一种用于深度神经网络高速实时量化结构和运算实现方法
US10427306B1 (en) 2017-07-06 2019-10-01 X Development Llc Multimodal object identification
KR102601604B1 (ko) 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
EP3652681A4 (en) 2017-08-08 2020-07-29 Samsung Electronics Co., Ltd. PROCESS AND APPARATUS FOR DETERMINING MEMORY REQUIREMENTS IN A NETWORK
US20190050710A1 (en) 2017-08-14 2019-02-14 Midea Group Co., Ltd. Adaptive bit-width reduction for neural networks
CN107644254A (zh) 2017-09-09 2018-01-30 复旦大学 一种卷积神经网络权重参数量化训练方法及系统
US11450319B2 (en) 2017-09-29 2022-09-20 Cambricon (Xi'an) Semiconductor Co., Ltd. Image processing apparatus and method
US10224954B1 (en) 2017-09-29 2019-03-05 Intel Corporation Floating point to fixed point conversion
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
WO2019062931A1 (zh) 2017-09-29 2019-04-04 上海寒武纪信息科技有限公司 图像处理装置及方法
JP6540770B2 (ja) 2017-10-17 2019-07-10 富士通株式会社 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法
US10410121B2 (en) 2017-10-25 2019-09-10 SparkCognition, Inc. Adjusting automated neural network generation based on evaluation of candidate neural networks
US20210061028A1 (en) 2017-10-26 2021-03-04 Applied Mechatronic Products Apparatus and method for vehicular monitoring, analysis, and control
US10783634B2 (en) 2017-11-22 2020-09-22 General Electric Company Systems and methods to deliver point of care alerts for radiological findings
US10803379B2 (en) 2017-12-12 2020-10-13 Amazon Technologies, Inc. Multi-memory on-chip computational network
US20190251429A1 (en) 2018-02-12 2019-08-15 Kneron, Inc. Convolution operation device and method of scaling convolution input for convolution neural network
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US20200159532A1 (en) 2018-02-13 2020-05-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11106598B2 (en) 2018-02-13 2021-08-31 Shanghai Cambricon Information Technology Co., Ltd. Computing device and method
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
JP7056225B2 (ja) 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
US10628275B2 (en) 2018-03-07 2020-04-21 Nxp B.V. Runtime software-based self-test with mutual inter-core checking
US11475306B2 (en) 2018-03-22 2022-10-18 Amazon Technologies, Inc. Processing for multiple input data sets
US11562213B2 (en) 2018-04-17 2023-01-24 Intel Corporation Methods and arrangements to manage memory in cascaded neural networks
US10691413B2 (en) 2018-05-04 2020-06-23 Microsoft Technology Licensing, Llc Block floating point computations using reduced bit-width vectors
US10761968B2 (en) * 2018-05-16 2020-09-01 Texas Instruments Incorporated Managing and maintaining multiple debug contexts in a debug execution mode for real-time processors
WO2019218896A1 (zh) 2018-05-18 2019-11-21 上海寒武纪信息科技有限公司 计算方法以及相关产品
CN108717570A (zh) 2018-05-23 2018-10-30 电子科技大学 一种脉冲神经网络参数量化方法
US10360304B1 (en) 2018-06-04 2019-07-23 Imageous, Inc. Natural language processing interface-enabled building conditions control system
CN109062540B (zh) 2018-06-06 2022-11-25 北京理工大学 一种基于cordic算法的可重构浮点运算装置
CN109063820A (zh) 2018-06-07 2018-12-21 中国科学技术大学 利用时频联合长时循环神经网络的数据处理方法
CN109146057B (zh) 2018-06-26 2020-12-08 杭州雄迈集成电路技术股份有限公司 一种基于查表计算的高精度的神经网络工程化方法
EP3825841A1 (en) 2018-06-27 2021-05-26 Shanghai Cambricon Information Technology Co., Ltd Method and device for parallel computation of a network model
CN110728364A (zh) 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
EP3757896B1 (en) 2018-08-28 2023-01-11 Cambricon Technologies Corporation Limited Method and device for pre-processing data in a neural network
EP3859488A4 (en) 2018-09-28 2022-06-29 Shanghai Cambricon Information Technology Co., Ltd Signal processing device, signal processing method and related product
CN109472353B (zh) 2018-11-22 2020-11-03 浪潮集团有限公司 一种卷积神经网络量化电路及量化方法
CN109685202B (zh) 2018-12-17 2023-03-21 腾讯科技(深圳)有限公司 数据处理方法及装置、存储介质和电子装置
CN111383637A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN109800877B (zh) 2019-02-20 2022-12-30 腾讯科技(深圳)有限公司 神经网络的参数调整方法、装置及设备
CN109902745A (zh) 2019-03-01 2019-06-18 成都康乔电子有限责任公司 一种基于cnn的低精度训练与8位整型量化推理方法
CN111832739B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
CN112085192B (zh) 2019-06-12 2024-03-29 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US20210374511A1 (en) 2019-08-23 2021-12-02 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium
JP7146952B2 (ja) 2019-08-23 2022-10-04 安徽寒武紀信息科技有限公司 データ処理方法、装置、コンピュータデバイス、及び記憶媒体
EP4020328A4 (en) 2019-08-23 2023-07-05 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA
WO2021036905A1 (zh) 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887475A (ja) * 1994-07-22 1996-04-02 Mitsubishi Electric Corp 情報処理装置および情報処理装置における計算方法
US20040250164A1 (en) * 2003-05-22 2004-12-09 Infineon Technologies North America Corp. Configurable real-time trace port for embedded processors
JP2015509183A (ja) * 2011-12-20 2015-03-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 回路装置、集積回路デバイス、プログラム製品、および方法(内部投票ベースのビルトイン・セルフ・テスト(bist)を備えるマルチコア・プロセッサ)
JP2018514872A (ja) * 2015-04-27 2018-06-07 ユニヴァーシテト チューリッヒ スケーラブルなイベント駆動型計算システムのための異種メモリ構造をもつネットワークおよび階層型ルーティングファブリック
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management

Also Published As

Publication number Publication date
EP3798850A4 (en) 2022-03-23
US20210182177A1 (en) 2021-06-17
JP7053891B2 (ja) 2022-04-12
EP3825841A1 (en) 2021-05-26
US11789847B2 (en) 2023-10-17
JP2021520566A (ja) 2021-08-19
WO2020001438A1 (zh) 2020-01-02
KR102470893B1 (ko) 2022-11-25
EP3798850A1 (en) 2021-03-31

Similar Documents

Publication Publication Date Title
KR102470893B1 (ko) 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
US20210157992A1 (en) Information processing method and terminal device
JP6821002B2 (ja) 処理装置と処理方法
CN109284823B (zh) 一种运算装置及相关产品
CN109219821B (zh) 运算装置和方法
US5524175A (en) Neuro-computer system for executing a plurality of controlling algorithms
EP3451241A1 (en) Device and method for performing training of convolutional neural network
EP3631624B1 (en) Multifunction vector processor circuits
JP6826181B2 (ja) 計算装置と計算方法
CN111966361B (zh) 用于确定待部署模型的方法、装置、设备及其存储介质
US20210098001A1 (en) Information processing method and terminal device
US10997102B2 (en) Multidimensional address generation for direct memory access
CN109711540B (zh) 一种计算装置及板卡
CN109213581B (zh) 一种数据处理装置和方法
CN110727462B (zh) 数据处理器和数据处理方法
CN111209244A (zh) 数据处理装置及相关产品
JP7265618B2 (ja) 深層学習トレーニングタスクに向けたプロセッサメモリを最適化するための方法及び装置
CN109543835B (zh) 运算方法、装置及相关产品
CN109558565B (zh) 运算方法、装置及相关产品
CN109583580B (zh) 运算方法、装置及相关产品
CN109543833B (zh) 运算方法、装置及相关产品
CN109543836B (zh) 运算方法、装置及相关产品
CN115098107B (zh) 神经网络任务的代码生成方法和装置
CN109558564B (zh) 运算方法、装置及相关产品
CN111026440B (zh) 运算方法、装置、计算机设备和存储介质

Legal Events

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