KR102235803B1 - 반도체 장치 - Google Patents

반도체 장치 Download PDF

Info

Publication number
KR102235803B1
KR102235803B1 KR1020170042125A KR20170042125A KR102235803B1 KR 102235803 B1 KR102235803 B1 KR 102235803B1 KR 1020170042125 A KR1020170042125 A KR 1020170042125A KR 20170042125 A KR20170042125 A KR 20170042125A KR 102235803 B1 KR102235803 B1 KR 102235803B1
Authority
KR
South Korea
Prior art keywords
data
processor
register
alus
instruction
Prior art date
Application number
KR1020170042125A
Other languages
English (en)
Other versions
KR20180111321A (ko
Inventor
김현필
심현우
안성우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170042125A priority Critical patent/KR102235803B1/ko
Priority to US15/717,989 priority patent/US10649771B2/en
Priority to TW107100401A priority patent/TWI776838B/zh
Priority to US15/905,979 priority patent/US10409593B2/en
Priority to JP2018060426A priority patent/JP7154788B2/ja
Priority to CN201810274218.4A priority patent/CN109447892B/zh
Publication of KR20180111321A publication Critical patent/KR20180111321A/ko
Priority to US16/520,761 priority patent/US10990388B2/en
Priority to US17/216,323 priority patent/US11645072B2/en
Application granted granted Critical
Publication of KR102235803B1 publication Critical patent/KR102235803B1/ko
Priority to US18/129,119 priority patent/US20230236832A1/en

Links

Images

Classifications

    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • G06T2207/20164Salient point detection; Corner detection
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Mechanical Treatment Of Semiconductor (AREA)
  • Bipolar Transistors (AREA)
  • Noodles (AREA)

Abstract

반도체 장치가 제공된다. 반도체 장치는 제1 레지스터를 포함하고, 상기 제1 레지스터를 이용하여 ROI(Region On Interest) 연산을 수행하는 제1 프로세서; 및 제2 레지스터를 포함하고, 상기 제2 레지스터를 이용하여 산술 연산을 수행하는 제2 프로세서를 포함하되, 상기 제1 레지스터는 상기 제2 프로세서에 의해 공유되고, 상기 제2 레지스터는 상기 제1 프로세서에 의해 공유된다.

Description

반도체 장치{SEMICONDUCTOR DEVICE}
본 발명은 반도체 장치에 관한 것이다.
이미지, 비전 및 뉴럴 네트워크에 관한 어플리케이션들은 예컨대 행렬 연산을 위해 특화된 명령어와 메모리 구조를 갖는 시스템 상에서 실행될 수 있다. 그런데 이미지, 비전 및 뉴럴 네트워크에 관한 어플리케이션들은 유사한 방식의 연산을 수행하는 경우가 많음에도 불구하고, 이미지, 비전 및 뉴럴 네트워크 각각을 독립적으로 처리하기 위한 프로세서들이 개별적으로 구현되는 경우가 많았다. 그 이유는 이미지, 비전 및 뉴럴 네트워크에 관한 어플리케이션들의 기능적 유사성에도 불구하고, 이미지, 비전 및 뉴럴 네트워크 어플리케이션을 통합 처리할 수 있는 프로세서를 구현하기 위해서는 데이터 처리율, 메모리 대역폭, 동기화 등에 있어서 각각의 어플리케이션에 필요한 요구 사항들이 다르기 때문이다.
특히 이미지, 비전 및 뉴럴 네트워크에 관한 처리가 모두 필요한 시스템의 경우, 이들 어플리케이션에 대한 각각의 요구 사항들을 충족시킬 수 있는 통합된 처리 환경을 제공하기 위한 방안이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는 이미지, 비전 및 뉴럴 네트워크에 관한 처리를 위해, 제어가 용이하면서도 데이터 사용 효율을 높인 통합된 처리 환경을 제공할 수 있는 반도체 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 장치는, 제1 레지스터를 포함하고, 상기 제1 레지스터를 이용하여 ROI(Region On Interest) 연산을 수행하는 제1 프로세서; 및 제2 레지스터를 포함하고, 상기 제2 레지스터를 이용하여 산술 연산을 수행하는 제2 프로세서를 포함하되, 상기 제1 레지스터는 상기 제2 프로세서에 의해 공유되고, 상기 제2 레지스터는 상기 제1 프로세서에 의해 공유된다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 시스템은, 제1 레지스터를 포함하고, 상기 제1 레지스터를 이용하여 ROI(Region On Interest) 연산을 수행하는 제1 프로세서; 및 제2 레지스터를 포함하고, 상기 제2 레지스터를 이용하여 산술 연산을 수행하는 제2 프로세서를 포함하되, 상기 제1 프로세서 및 상기 제2 프로세서는 동일한 ISA(Instruction Set Architecture)를 공유한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 2는 본 발명의 일 실시예에 따른 반도체 장치의 제1 프로세서를 설명하기 위한 개략도이다.
도 3은 본 발명의 일 실시예에 따른 반도체 장치의 제2 프로세서를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 반도체 장치가 제공하는 아키텍처를 설명하기 위한 개략도이다.
도 5a 내지 도 5d는 본 발명의 일 실시예에 따른 반도체 장치가 제공하는 레지스터의 예시적인 구조를 설명하기 위한 개략도이다.
도 6은 본 발명의 일 실시예에 따른 반도체 장치에 데이터가 저장되는 구현례를 설명하기 위한 개략도이다.
도 7은 본 발명의 다른 실시예에 따른 반도체 장치에 데이터가 저장되는 구현례를 설명하기 위한 개략도이다.
도 8a는 다양한 사이즈의 매트릭스에 대해 ROI 연산을 하기 위한 데이터 패턴을 설명하기 위한 개략도이다.
도 8b 및 도 8c는 본 발명의 일 실시예에 따른 ROI 연산을 하기 위한 데이터 패턴을 설명하기 위한 개략도이다.
도 8d 내지 도 8g는 본 발명의 다른 실시예에 따른 ROI 연산을 하기 위한 데이터 패턴을 설명하기 위한 개략도이다.
도 8h는 본 발명의 일 실시예에 따른 반도체 장치가 제공하는 시프트업 연산을 설명하기 위한 개략도이다.
도 9는 본 발명의 다양한 실시예에 따른 반도체 장치를 이용하여 해리스 코너 검출(Harris corner detection)을 수행하는 동작례를 설명하기 위한 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 반도치 장치에서 지원하는, 비전 및 뉴럴 네트워크에 관한 어플리케이션들에서 사용되는 매트릭스 연산들을 효율적으로 처리하기 위한 명령의 구현례를 설명하기 위한 도면이다.
도 11a 및 도 11b는 도 8d의 5 x 5 매트릭스의 컨볼루션 연산을 위한 실제 어셈블리 코드의 예를 설명하기 위한 도면이다.
도 1은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 반도체 장치는 제1 프로세서(100), 제2 프로세서(200), 컨트롤러(300) 및 메모리 버스(400)를 포함한다.
제1 프로세서(100)는 이미지, 비전 및 뉴럴 네트워크에 관한 처리를 위해 주로 사용되는 ROI(Region On Interest) 연산에 특화된 프로세서이다. 예를 들어, 제1 프로세서(100)는 1차원 필터 연산, 2차원 필터 연산, 센서스 변환(Census Transform) 연산, 최소/최대(Min/Max) 필터 연산, SAD(Sum of Absolute Difference) 연산, SSD(Sum of Squared Difference) 연산, NMS(Non Maximum Suppression) 연산, 매트릭스 곱셈 연산 등을 수행할 수 있다.
제1 프로세서(100)는 제1 레지스터(112, 114, 116)를 포함하고, 제1 레지스터(112, 114, 116)를 이용하여 상기 ROI 연산을 수행할 수 있다. 본 발명의 몇몇의 실시예에서, 제1 레지스터는 IR(Image Register)(112), CR(Coefficient Register)(114) 및 OR(Output Register)(116) 중 적어도 하나를 포함할 수 있다.
여기서, IR(112)은 제1 프로세서(100)가 처리하기 위해 입력 받은 이미지 데이터를 저장할 수 있고, CR(114)은 상기 이미지 데이터에 연산할 필터의 계수를 저장할 수 있다. 그리고 OR(116)은 제1 프로세서(100)가 상기 이미지 데이터를 처리한 연산 결과를 저장할 수 있다.
한편, 제1 프로세서(100)는 제1 프로세서(100)에 의해 처리될 수 있는 데이터 패턴을 생성하는 데이터 배치 모듈(Data Arrange module, DA)(190)를 더 포함할 수 있다. 데이터 배치 모듈(190)은 다양한 사이즈의 매트릭스에 대해 ROI 연산을 효율적으로 수행하기 위한 데이터 패턴을 생성한다.
구체적으로, 본 발명의 몇몇의 실시예에서, 데이터 배치 모듈(190)은, 예컨대 IR(112)에 저장된, 제1 프로세서(100)가 처리하기 위해 입력 받은 이미지 데이터를 배치하여 제1 프로세서(100)가 ROI 연산을 효율적으로 수행하기 위한 데이터 패턴을 생성하는 IDA(Image DA)(192)를 포함할 수 있다. 또한, 데이터 배치 모듈(190)은, 예컨대 CR(114)에 저장된, 상기 이미지 데이터에 연산할 필터의 계수 데이터를 배치하여 제1 프로세서(100)가 ROI 연산을 효율적으로 수행하기 위한 데이터 패턴을 생성하는 CDA(Coefficient DA)(194)를 포함할 수 있다. 데이터 배치 모듈(190)로부터 생성되는 데이터 패턴에 대한 구체적인 내용은 도 6 내지 도 8e와 관련하여 후술하도록 한다.
제2 프로세서(200)는 산술 연산을 수행하는 범용 프로세서이다. 본 발명의 몇몇의 실시예에서, 제2 프로세서(200)는 예측(prediction) 연산, 벡터 퍼뮤트(vector permute) 연산, 벡터 비트 조작(vector bit manipulation) 연산, 버터플라이(butterfly) 연산, 정렬(sorting) 연산 등과 같은 벡터 특화 명령어들을 포함하는 벡터 연산 처리에 특화된 벡터 프로세서로 구현될 수 있다. 본 발명의 몇몇의 실시예에서, 제2 프로세서(200)는 SIMD(Single Instruction Multiple Data) 및 다중 슬롯 VLIW(Very Long Instruction Word) 구조를 채택할 수 있다.
제2 프로세서(200)는 제2 레지스터(212, 214)를 포함하고, 제2 레지스터(212, 214)를 이용하여 상기 산술 연산을 수행할 수 있다. 본 발명의 몇몇의 실시예에서, 제2 레지스터는 SR(Scalar Register)(212) 및 VR(Vector Register)(214) 중 적어도 하나를 포함할 수 있다.
여기서, SR(212)은 제2 프로세서(200)의 스칼라 연산에 사용되는 레지스터이고, VR(214)은 제2 프로세서(200)의 벡터 연산에 사용되는 레지스터이다.
본 발명의 몇몇의 실시예에서, 제1 프로세서(100) 및 제2 프로세서(200)는 동일한 ISA(Instruction Set Architecture)를 공유할 수 있다. 이에 따라 ROI 연산에 특화된 제1 프로세서(100)와 산술 연산에 특화된 제2 프로세서(200)가 인스트럭션(instruction) 레벨에서 공유됨으로써 제어가 용이하게 될 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 제1 프로세서(100) 및 제2 프로세서(200)는 레지스터들을 공유할 수 있다. 즉, 제1 레지스터(112, 114, 116)는 제2 프로세서(200)에 의해 공유되고, 제2 레지스터(212, 214)는 제1 프로세서(100)에 의해 공유될 수 있다. 이에 따라 ROI 연산에 특화된 제1 프로세서(100)와 산술 연산에 특화된 제2 프로세서(200)가 각각의 내부 레지스터를 공유함으로써 데이터 사용 효율을 증가시키고 메모리 접근 횟수를 감소시킬 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 제1 프로세서(100)와 제2 프로세서(200)는 별개의 독립된 전원에 의해 구동되도록 구현될 수도 있다. 이에 따라 구체적인 동작 상황에 따라 미사용되는 프로세서에 대한 전원을 차단할 수도 있다.
도 2는 본 발명의 일 실시예에 따른 반도체 장치의 제1 프로세서를 설명하기 위한 개략도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 반도체 장치의 제1 프로세서(100)는 내부 레지스터(110), 로드 스토어 유닛(load store unit, LSU)(120), 데이터 배치 레이어(130), 맵 레이어(140) 및 리듀스 레이어(150)를 포함한다.
내부 레지스터(110)는 도 1과 관련하여 앞서 설명한 IR(112), CR(114) 및 OR(116)을 포함한다.
로드 스토어 유닛(120)은 메모리 장치와 데이터를 주고 받을 수 있다. 예를 들어, 로드 스토어 유닛(120)은 메모리 버스(400)를 통해 메모리 장치에 저장된 데이터를 리드(read)할 수 있다. 상기 로드 스토어 유닛(120) 및 메모리 버스(400)는 도 4와 관련하여 후술할 메모리 계층(105)에 대응될 수 있다.
본 발명의 몇몇의 실시예에서, 로드 스토어 유닛(120)은 1024 비트의 데이터를 동시에 읽을 수 있다. 한편, 본 발명의 몇몇의 실시예에서, 로드 스토어 유닛(120)은 n 개(n은 예컨대, 2, 4, 8 등)의 포트(port)를 지원하여, 1024 x n 비트의 데이터를 동시에 읽을 수 있다. 로드 스토어 유닛(120)이 1024 비트 단위로 데이터를 동시에 읽을 수 있기 때문에, 후술할 데이터 배치 레이어(130)는, SIMD(Single Instruction Multiple Data)에 따라 한 행이 1024 비트로 구성되는 배열 형태로 데이터를 재배열할 수 있다.
데이터 배치 레이어(130)는, 도 1에서 데이터 배치 모듈(190)로 도시된 요소에 대응되며, 제1 프로세서(100)가 처리할 데이터를 재배열한다. 구체적으로, 데이터 배치 레이어(130)는 제1 프로세서(100)가 처리할 다양한 사이즈의 데이터(예컨대, 매트릭스)에 대한 ROI 연산을 효율적으로 수행하기 위한 데이터 패턴을 생성할 수 있다. 데이터 패턴으로 생성되는 데이터의 종류에 따라, 데이터 배치 레이어(130)는 도 1에서 IDA(192) 및 CDA(194)로 도시된 요소들과 각각 대응되는 하위 유닛들을 포함할 수 있다.
구체적으로, 데이터 배치 레이어(130)는 제1 프로세서(100)가 처리할 데이터를, SIMD에 따라 각각 복수의 데이터를 포함하는 복수의 데이터 행의 형태로 재배열할 수 있다. 예를 들어, 데이터 배치 레이어(130)는 제1 프로세서(100)가 ROI 연산을 효율적으로 수행할 수 있도록 이미지 데이터를 SIMD에 따라 각각 복수의 데이터를 포함하는 복수의 데이터 행의 형태로 재배열하고, 한편 이미지 데이터에 연산할 필터의 계수 데이터 역시 SIMD에 따라 각각 복수의 데이터를 포함하는 복수의 데이터 행의 형태로 재배열할 수 있다.
제1 프로세서(100)는 각각의 복수의 데이터 행에 대응하도록 서로 병렬로 배치된 복수의 ALU(Arithmetic Logic Unit)(160)를 포함하며, 복수의 ALU(160)는 맵 레이어(140) 및 리듀스 레이어(150)를 포함할 수 있다. ALU(160)는 맵 레이어(140) 및 리듀스 레이어(150)를 이용하여 각각의 복수의 데이터 행에 저장된 데이터들을 병렬 처리하기 위해 맵 연산, 리듀스 연산 등을 수행한다.
이와 같이 데이터를 재배열하는 구조를 채택함으로써, 이미지, 비전 및 뉴럴 네트워크에 관한 처리에서 자주 사용되는 3 x 3, 4 x 4, 5 x 5, 7 x 7, 8 x 8, 9 x 9, 11 x 11 매트릭스에 대해 특히 효율적인 처리가 가능할 수 있다. 이와 관련한 구체적인 내용은 도 4, 도 6 및 도 7과 관련하여 후술하도록 한다.
도 3은 본 발명의 일 실시예에 따른 반도체 장치의 제2 프로세서를 설명하기 위한 도면이다.
도 3을 참조하면, 제2 프로세서(200)는 페치 유닛(220) 및 디코더(230)를 포함한다.
디코더(230)는 페치 유닛(220)으로부터 제공 받은 인스트럭션을 디코딩한다. 본 발명의 몇몇의 실시예에서, 상기 인스트럭션은 VLIW를 따라, 4 개의 슬롯(slot)(240a, 240b, 240c, 240d)에 의해 처리될수 있다. 예를 들어, 페치 유닛(220)으로부터 페치된 인스트럭션이 128 비트인 경우, 디코더(230)는 상기 페치된 인스트럭션을, 각각 32 비트로 이루어진 4 개의 인스트럭션으로 디코딩할 수 있고, 4 개의 인스트럭션들은 각각 슬롯(240a, 240b, 240c, 240d)에 의해 처리될 수 있다.
본 실시예에서는 설명을 위한 일례로 페치된 인스트럭션이 4 개의 인스트럭션으로 디코딩되어 4 개의 슬롯에 의해 처리될 수 있는 것으로 도시하였으나, 본 발명의 범위가 이에 제한되는 것은 아니고, 상기 인스트럭션은 2 이상의 임의의 개수의 슬롯에 의해 처리될 수 있도록 구현될 수도 있다.
본 실시예에서, 4 개의 슬롯(240a, 240b, 240c, 240d)은 제어 명령(244d)를 제외하고는 모두 동시에 수행 가능하며, 이와 같은 병렬 처리를 효과적으로 수행하기 위해 스칼라 기능 유닛(Scalar Functional Unit, SFU)(242a, 242b, 242d), 벡터 기능 유닛(Vector Functional Unit, VFU)(244a, 244b, 244c), 이동 유닛(MoVe unit, MV)(246a, 246b, 246c, 246d)이 4 개의 슬롯(240a, 240b, 240c, 240d)에 효율적으로 배치될 수 있다.
구체적으로, 제1 슬롯(240a)은 SFU(242a), VFU(244a) 및 MV(246a)를 포함하고, 제2 슬롯(240b)은 SFU(242b), VFU(244b) 및 MV(246b)를 포함할 수 있다. 한편, 제3 슬롯(240c)은 제1 프로세서(100)를 이용하여 처리할 수 있는 명령에 해당하는 FCE(Flexible Convolution Engine) 유닛(242c), VFU(244c) 및 MV(246c)를 포함하고, 제4 슬롯(240d)은 SFU(242d), 제어 명령에 해당하는 제어 명령(ConTrol, CT)(244d) 및 MV(246d)를 포함할 수 있다.
여기서, 제3 슬롯(240c)의 FCE 유닛(242c)의 제1 프로세서(100)에 대응된다. 그리고 제3 슬롯(240c)의 나머지, 제1 슬롯(240a), 제2 슬롯(240b) 및 제4 슬롯(240d)은 제2 프로세서(200)에 대응된다. 예를 들어, 제3 슬롯(240c)의 FCE 유닛(242c)에 배치된 인스트럭션은 제1 프로세서(100)에 의해 실행될 수 있고, 제2 슬롯(240d)에 배치된 인스트럭션은 제2 프로세서(200)에 의해 실행될 수 있다.
그리고 제1 프로세서(100) 및 제2 프로세서(200)는 각 슬롯(240a, 240b, 240c, 240d)에 포함된 MV(246a, 246b, 246c, 246d)를 이용하여 서로의 데이터를 공유할 수 있다. 이에 따라, 제2 프로세서(200)에서 처리되던 작업은 필요한 경우 슬롯(240c)의 FCE 유닛(242c)을 통해 제1 프로세서(100)에 의해 처리될 수도 있다. 그리고 이 경우 제2 프로세서(200)에서 처리되던 데이터 역시 제1 프로세서(100)에 공유될 수도 있다.
한편, SFU(242a, 242b, 242d)에 의해 처리된 결과는 도 1에서도 언급한 SR(212)에 저장될 수 있고, VFU(244a, 244b, 244c)에 의해 처리된 결과는 도 1에서도 언급한 VR(214)에 저장될 수 있다. 물론, SR(212) 및 VR(214)에 저장된 결과는 필요에 따라 제1 프로세서(100) 및 제2 프로세서(200) 중 적어도 하나에 의해 사용될 수 있다.
그러나 도 3에 도시된 구성은, 이하에서 본 발명의 다양한 실시예들에 대한 설명의 편의를 위한 일례에 불과할 뿐이며, 본 발명의 범위가 이에 제한되지 않음은 해당 기술 분야의 통상의 기술자에게 자명하다.
도 4는 본 발명의 일 실시예에 따른 반도체 장치가 제공하는 아키텍처를 설명하기 위한 개략도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 반도체 장치가 제공하는 아키텍처는 메모리 계층(105), 레지스터 파일(110), 데이터 배치 레이어(130), 복수의 ALU(160) 및 이들 요소들을 전반적으로 제어하는 제어부(170)를 포함할 수 있다.
여기서 메모리 계층(105)은 메모리 인터페이스(memory interface)를 제공하며, 앞서 도 1 및 도 2와 관련하여 앞서 설명한 메모리 장치, 메모리 버스(400) 및 로드 스토어 유닛(120) 등이 메모리 계층(105)에 대응될 수 있다.
레지스터 파일(110)은 도 2와 관련하여 앞서 설명한, IR(112), CR(114) 및 OR(116)을 포함하는 내부 레지스터(110)에 대응될 수 있다. 그리고, 레지스터 파일(110)은 도 5a 내지 도 5d와 관련하여 후술할 예시적인 구조를 포함할 수 있다.
데이터 배치 레이어(130)는 도 2와 관련하여 앞서 설명한 데이터 배치 레이어(130)에 대응될 수 있으며, 제1 프로세서(100)가 처리할 다양한 사이즈의 데이터(예컨대, 매트릭스)에 대한 ROI 연산을 효율적으로 수행하기 위한 데이터 패턴을 생성한다.
복수의 ALU(160)는 도 2와 관련하여 앞서 설명한 복수의 ALU(160)에 대응하며, 맵 레이어(140) 및 리듀스 레이어(150)을 포함하고, 맵 연산, 리듀스 연산 등을 수행할 수 있다.
상기 아키텍처는 복수의 ALU(160)들이 공유할 수 있는 레지스터 파일(110)을 이용하여 정교한 플로우 제어 및 복잡한 산술 연산 수행을 가능케 하면서도, 데이터 배치 레이어(130)을 이용하여 레지스터 파일(110)에 저장된 데이터를 패턴화함으로써 입력 데이터의 재사용성을 향상시켰다.
예를 들어, 데이터 배치 레이어(130)는 처리할 데이터(특히 ROI 연산을 수행하기 위한 데이터)를, 제1 ALU 그룹(160a), 제2 ALU 그룹(160b), ... 제8 ALU 그룹(160c) 및 제9 ALU 그룹(160d)에 각각 속한 ALU들이 처리할 수 있도록 데이터 패턴을 생성한다. 여기서 ALU 그룹(160a, 160b, 160c, 160d)은 각각 예컨대 64 개의 ALU를 포함할 수 있는 것으로 도시되었으나, 본 발명의 범위는 이에 제한되지 않는다. 매트릭스로부터 예컨대 9 개의 ALU 그룹(160a, 160b, 160c, 160d)에 의한 처리에 적합한 데이터 패턴을 생성하는 구체적인 설명은 도 6 내지 도 8e과 관련하여 후술하도록 한다.
도 5a 내지 도 5d는 본 발명의 일 실시예에 따른 반도체 장치가 제공하는 레지스터의 예시적인 구조를 설명하기 위한 개략도이다.
도 5a를 참조하면, IR(112)은 제1 프로세서(100)가 특히 ROI 연산을 처리하기 위한 입력 이미지 데이터를 저장하기 위한 것으로, IR이라는 명칭은 구체적인 구현 또는 명명에 따라 얼마든지 달라질 수 있다.
본 실시예에서, IR(112)은 예컨대 16 개의 엔트리(entry)를 포함하도록 구현할 수 있다. 그리고 엔트리(IR[i], 단, i는 0 이상 15 이하의 정수) 각각의 사이즈는 예컨대 1024 비트로 구현될 수 있다.
이 중 엔트리(IR[0]) 내지 엔트리(IR[7])는 다양한 ROI 연산을 위한 이미지 데이터 사이즈를 지원하기 위한 레지스터 파일(register file)(ISR0)로 정의되어 이용될 수 있다. 마찬가지로, 엔트리(IR[8]) 내지 엔트리(IR[15])는 다양한 ROI 연산을 위한 이미지 데이터 사이즈를 지원하기 위한 레지스터 파일(ISR1)로 정의되어 이용될 수 있다.
다만, 유의할 점은, ISR0, ISR1의 정의는 이에 제한되는 것이 아니라, 구체적으로 처리하는 데이터의 사이즈에 따라 가변적으로 그룹화하여 정의될 수 있다는 것이다. 즉, ISR0, ISR1의 정의는, 이미지 데이터의 사이즈, 매트릭스 연산의 특성, 필터 연산의 특성 등을 고려하여 도 5a에 도시된 것과 다른 구조로 정의될 수 있다.
이어서, 도 5b를 참조하면, CR(114)은 IR(112)에 저장된 이미지 데이터에 연산하기 위한 필터의 계수를 저장하기 위한 것으로, CR이라는 명칭은 구체적인 구현 또는 명명에 따라 얼마든지 달라질 수 있다.
본 실시예에서, CR(114)은 예컨대 16 개의 엔트리를 포함하도록 구현할 수 있다. 그리고 엔트리(CR[i], 단, i는 0 이상 15 이하의 정수) 각각의 사이즈는 예컨대 1024 비트로 구현될 수 있다.
이 중 엔트리(CR[0]) 내지 엔트리(CR[7])는 IR(112)의 경우와 마찬가지로 다양한 ROI 연산을 위한 이미지 데이터 사이즈를 지원하기 위한 레지스터 파일(CSR0)로 정의되어 이용될 수 있다. 마찬가지로, 엔트리(CR[8]) 내지 엔트리(CR[15])는 다양한 ROI 연산을 위한 이미지 데이터 사이즈를 지원하기 위한 레지스터 파일(CSR1)로 정의되어 이용될 수 있다.
다만, 유의할 점은, CSR0, CSR1의 정의는 이에 제한되는 것이 아니라, 구체적으로 처리하는 데이터의 사이즈에 따라 가변적으로 그룹화하여 정의될 수 있다는 것이다. 즉, CSR0, CSR1의 정의는, 이미지 데이터의 사이즈, 매트릭스 연산의 특성, 필터 연산의 특성 등을 고려하여 도 5b에 도시된 것과 다른 구조로 정의될 수 있다.
이어서, 도 5c를 참조하면, OR(116)은 제1 프로세서(100)가 이미지 데이터를 처리한 연산 결과를 저장하기 위한 것으로, OR이라는 명칭은 구체적인 구현 또는 명명에 따라 얼마든지 달라질 수 있다.
본 실시예에서, OR(116)은 예컨대 16 개의 엔트리를 포함하도록 구현할 수 있다. 그리고 각각의 엔트리(OR[i], 단, i는 0 이상 15 이하의 정수) 각각의 사이즈는 예컨대 2048 비트로 구현될 수 있다.
본 발명의 몇몇의 실시예에서, OR(116)은 다시 데이터 배치 레이어(130)의 입력 레지스터로 사용될 수도 있다. 이 경우 OR(116)에 저장된 연산 결과를 효율적으로 재사용할 수 있도록, OR(116)의 각각의 엔트리(OR[i])는 상부 파트(ORh[i]) 및 하부 파트(ORl[0])로 구분되어 사용될 수 있다. 예를 들어, 엔트리(OR[0])는 1024 비트를 갖는 상부 파트(ORh[0])와, 1024 비트를 갖는 하부 파트(ORl[0])를 포함할 수 있다. 이와 같이 OR(116)의 각각의 엔트리(OR[i])는 상부 파트(ORh[i]) 및 하부 파트(ORl[0])로 구분된 것은, 도 5d와 관련하여 후술할 W 레지스터와의 호환성을 위해서이다. W 레지스터는 도 5에 도시된 레지스터 파일(Ve)에 포함되는 엔트리와 레지스터 파일(Vo)에 포함되는 엔트리를 하나의 엔트리로 정의한 것이다.
이와 같이 IR(112) 및 CR(114)의 각각의 엔트리와 동일한 사이즈를 갖도록 OR(116)의 엔트리들을 정의함으로써, IR(112), CR(114) 및 OR(116) 사이의 데이터 이동이 용이해질 수 있다.
이 중 엔트리(OR[0]) 내지 엔트리(OR[7])는 IR(112), CR(114)의 경우와 마찬가지로 다양한 ROI 연산을 위한 이미지 데이터 사이즈를 지원하기 위한 레지스터 파일(OSR0)로 정의되어 이용될 수 있다. 마찬가지로, 엔트리(OR[8]) 내지 엔트리(OR[15])는 다양한 ROI 연산을 위한 이미지 데이터 사이즈를 지원하기 위한 레지스터 파일(OSR1)로 정의되어 이용될 수 있다.
다만, 유의할 점은, OSR0, OSR1의 정의는 이에 제한되는 것이 아니라, 구체적으로 처리하는 데이터의 사이즈에 따라 가변적으로 그룹화하여 정의될 수 있다는 것이다. 즉, OSR0, OSR1의 정의는, 이미지 데이터의 사이즈, 매트릭스 연산의 특성, 필터 연산의 특성 등을 고려하여 도 5c에 도시된 것과 다른 구조로 정의될 수 있다.
또한, IR(112), CR(114) 및 OR(116)에 대한 엔트리의 사이즈나, 레지스터 파일을 구성하는 엔트리의 개수가 이제까지 설명한 실시예들에 한정되는 것은 아니며, 구체적인 구현 목적에 따라 그 엔트리의 사이즈나 개수는 얼마든지 달라질 수 있다.
한편, 도 5a 내지 도 5c에서 설명한, IR(112), CR(114) 및 OR(116)는 그 용도에 따라 구분하여 설명되었으나, 본 발명의 몇몇의 실시예에서, 제1 프로세서(100)의 관점에서는 서로 동일한 사이즈를 갖는 레지스터가 4 세트 존재하는 것처럼 인식하도록 레지스터 가상화를 구현할 수도 있다.
이제 도 5d를 참조하면, VR(214)은 제2 프로세서(200)가 벡터 연산을 수행하기 위한 데이터를 저장하기 위한 것이다.
본 실시예에서, VR(214)은 16 개의 엔트리를 포함하도록 구현할 수 있다. 그리고 각각의 엔트리(VR[i], 단, i는 0 이상 15 이하의 정수) 각각의 사이즈는 예컨대 1024 비트로 구현될 수 있다.
본 실시예에서, 16 개의 엔트리 중 그 인덱스가 짝수에 해당하는 8 개의 엔트리를 레지스터 파일(Ve)로, 16 개의 엔트리 중 그 인덱스가 홀수에 해당하는 8 개의 엔트리를 레지스터 파일(Vo)로 정의할 수 있다. 그리고 레지스터 파일(Ve)에 포함되는 엔트리와 레지스터 파일(Vo)에 포함되는 엔트리를 하나의 엔트리로 정의하여 W 레지스터를 구현할 수 있다.
예를 들어, 엔트리(Ve[0]) 및 엔트리(Vo[1])를 포함하는 하나의 엔트리(W[0])를 정의하고, 엔트리(Ve[2]) 및 엔트리(Vo[3])를 포함하는 하나의 엔트리(W[1])를 정의하는 방식으로 총 8 개의 엔트리(W[i], 단, i는 0 이상 7 이하의 정수)를 포함하는 W 레지스터를 구현할 수 있다.
VR(214)에 대한 엔트리의 사이즈나, 레지스터 파일을 구성하는 엔트리의 개수가 이제까지 설명한 실시예들에 한정되는 것은 아니며, 구체적인 구현 목적에 따라 그 엔트리의 사이즈나 개수는 얼마든지 달라질 수 있다.
한편, 도 5a 내지 도 5c에서 설명한, IR(112), CR(114) 및 OR(116)와 함께, VR(214)는 제1 프로세서(100) 및 제2 프로세서(200) 관점에서 서로 동일한 사이즈를 갖는 레지스터가 5 세트 존재하는 것처럼 인식하도록 레지스터 가상화를 구현할 수도 있다.
이 경우, 가상화된 레지스터에 저장된 데이터는 도 3에 도시된 MV(246a, 246b, 246c, 246d)를 통해 IR(112), CR(114), OR(116)와 VR(214) 사이에 이동할 수 있다. 이에 따라, 제1 프로세서(100) 및 제2 프로세서(200)는 메모리 장치가 아닌 레지스터를 이용하여 데이터를 공유하거나, 저장된 데이터를 재활용할 수 있다.
도 6은 본 발명의 일 실시예에 따른 반도체 장치에 데이터가 저장되는 구현례를 설명하기 위한 개략도이다.
도 6을 참조하면, 데이터 배치 레이어(130)에 의해 재배열된 데이터는 병렬로 배치된 9 개의 데이터 행(DATA 1 내지 DATA 9)을 구성할 수 있다.
각각의 데이터 행(DATA 1 내지 DATA 9)은 세로 방향으로 복수의 레인(lane)을 가질 수 있다. 예를 들어, 제1 데이터 행(DATA 1)의 제1 원소(A1), 제2 데이터 행(DATA 2)의 제1 원소(B1), ..., 제9 데이터 행(DATA 9)의 제1 원소(D1)는 제1 레인을 형성할 수 있고, 제1 데이터 행(DATA 1)의 제2 원소(A2), 제2 데이터 행(DATA 2)의 제2 원소(B2), ..., 제9 데이터 행(DATA 9)의 제2 원소(D2)는 제2 레인을 형성할 수 있다.
본 발명의 일 실시예에서, 각 레인의 폭은 16 비트일 수 있다. 즉, 제1 데이터 행(DATA 1)의 제1 원소(A1)는 16 비트의 데이터 형태로 저장될 수 있다. 이 경우, 제1 데이터 행(DATA 1)은 16 비트의 데이터 형태를 갖는 원소들을 64개 포함할 수 있다.
한편, 제1 프로세서(100)는 데이터 배치 레이어(130)에 의해 재배열된 데이터를 처리하기 위한 복수의 ALU를 포함하며, 복수의 ALU는 9 개의 데이터 행(DATA 1 내지 DATA 9)에 각각 대응되는 9 x 64 개의 ALU를 포함할 수 있다. 예를 들어, 도 4의 제1 ALU 그룹(160a)은 제1 데이터 행(DATA 1)에 대응되고, 도 4의 제2 ALU 그룹(160b)은 제2 데이터 행(DATA 2)에 대응될 수 있다. 그리고 도 4의 제9 ALU 그룹(160d)은 제9 데이터 행(DATA 9)에 대응될 수 있다
그리고 제1 ALU 그룹(160a)의 64 개의 ALU들은 각각 제1 데이터 행(DATA 1)의 64 개의 원소에 해당하는 데이터를 병렬 처리할 수 있고, 제2 ALU 그룹(160b)의 64 개의 ALU들은 각각 제2 데이터 행(DATA 2)의 64 개의 원소에 해당하는 데이터를 병렬 처리할 수 있다. 그리고 제9 ALU 그룹(160d)의 64 개의 ALU들은 각각 제9 데이터 행(DATA 9)의 64 개의 원소에 해당하는 데이터를 병렬 처리할 수 있다.
본 발명의 다양한 실시예에 따른 데이터 배치 레이어(130)에 의해 재배열된 데이터의 데이터 행의 개수는 9 개로 한정되는 것은 아니고, 구체적인 구현 목적에 따라 얼마든지 달라질 수 있다. 더불어 복수의 데이터 행에 각각 대응되는 복수의 ALU 개수 역시 이에 따라 달라질 수 있다.
그런데 도 8a와 관련하여 후술하는 바와 같이, 데이터 배치 레이어(130)에 의해 재배열된 데이터의 데이터 행의 개수가 9 개인 경우, 특히 다양한 사이즈의 매트릭스에 대한 ROI 연산 시 그 효율성을 특히 높일 수 있다.
도 7은 본 발명의 다른 실시예에 따른 반도체 장치에 데이터가 저장되는 구현례를 설명하기 위한 개략도이다.
도 7을 참조하면, 데이터 배치 레이어(130)에 의해 재배열된 데이터는 병렬로 배치된 9 개의 데이터 행(DATA 1 내지 DATA 9)을 구성할 수 있다.
도 6과 다른 점만을 설명하면, 본 실시예에서, 각각의 데이터 행(DATA 1 내지 DATA 9)은 세로 방향으로 복수의 레인을 갖되, 각 레인의 폭은 8 비트일 수 있다. 즉, 제1 데이터 행(DATA 1)의 제1 원소(A1)는 8 비트의 데이터 형태로 저장될 수 있다. 이 경우, 제1 데이터 행(DATA 1)은 8 비트의 데이터 형태를 갖는 원소들을 128개 포함할 수 있다.
한편, 제1 프로세서(100)는 데이터 배치 레이어(130)에 의해 재배열된 데이터를 처리하기 위한 복수의 ALU를 포함하며, 복수의 ALU는 9 개의 데이터 행(DATA 1 내지 DATA 9)에 각각 대응되는 9 x 128 개의 ALU를 포함할 수 있다.
본 발명의 다양한 실시예에 따른 데이터 배치 레이어(130)에 의해 재배열된 데이터의 데이터 행의 개수는 9 개로 한정되는 것은 아니고, 구체적인 구현 목적에 따라 얼마든지 달라질 수 있다. 더불어 복수의 데이터 행에 각각 대응되는 복수의 ALU개수 역시 이에 따라 달라질 수 있다.
그런데 도 8a와 관련하여 후술하는 바와 같이, 데이터 배치 레이어(130)에 의해 재배열된 데이터의 데이터 행의 개수가 9 개인 경우, 특히 다양한 사이즈의 매트릭스에 대한 ROI 연산 시 그 효율성을 특히 높일 수 있다.
도 8a는 다양한 사이즈의 매트릭스에 대해 ROI 연산을 하기 위한 데이터 패턴을 설명하기 위한 개략도이고, 도 8b 및 도 8c는 본 발명의 일 실시예에 따른 ROI 연산을 하기 위한 데이터 패턴을 설명하기 위한 개략도이고, 도 8d 내지 도 8g 본 발명의 다른 실시예에 따른 ROI 연산을 하기 위한 데이터 패턴을 설명하기 위한 개략도이다. 이들 도 8a 내지 도 8g를 참조하면, 이미지, 비전 및 뉴럴 네트워크에 관한 어플리케이션들에서 가장 흔하게 사용되는 매트릭스 사이즈에 따라, 데이터 배치 레이어(130)에 의해 재배열된 데이터가 이용되는 패턴을 알 수 있다.
도 8a 에서, 매트릭스(M1)는ROI 연산의 대상이 되는 이미지의 사이즈가 3 x 3인 경우에 필요한 이미지 데이터들을 포함하고, 매트릭스(M2)는 ROI 연산의 대상이 되는 이미지의 사이즈가 4 x 4인 경우에 필요한 이미지 데이터들을 포함한다. 이와 마찬가지로 매트릭스(M6)은 ROI 연산의 대상이 되는 이미지의 사이즈가 9 x 9인 경우에 필요한 이미지 데이터들을 포함하고, 매트릭스(M7)는 ROI 연산의 대상이 되는 이미지의 사이즈가 11 x 11인 경우에 필요한 이미지 데이터들을 포함한다.예를 들어, 메모리 장치에 도 8a 도시된 것과 같은 이미지 데이터가 저장되어 있다고 가정하자. 도 8b에 도시된 바와 같이, 만일 사이즈 3 x 3의 매트릭스(M11, M12, M13)에 대해 ROI 연산을 해야 하는 경우, 제1 프로세서(100)는 메모리 장치에 저장되어 있는 도 8a의 이미지 데이터를 리드하여, IR(112)에 저장한다.
이 경우, 도 8c를 참조하면, 병렬로 배치된 9 개의 데이터 행(DATA 1 내지 DATA 9)에서 세로 방향의 첫번째 레인에는, 매트릭스(M11)에 해당하는 이미지 데이터(N11 내지 N19)가 배치된다. 다음으로 두번째 레인에는, 매트릭스(M12)에 해당하는 이미지 데이터(N12, N13, N21, N15, N16, N22, N18, N19, N23)가 배치된다. 다음으로 세번째 레인에는, 매트릭스(M13)에 해당하는 이미지 데이터(N13, N21, N31, N16, N22, N32, N19, N23, N33)가 배치된다.
이에 따라 복수의 ALU(ALU1_1 내지 ALU9_1)는 매트릭스(M11)에 해당하는 이미지 데이터를 포함하는 첫번째 레인을 연산하고, 복수의 ALU(ALU1_2 내지 ALU9_2)는 매트릭스(M12)에 해당하는 이미지 데이터를 포함하는 두번째 레인을 연산한다. 그리고 복수의 ALU(ALU1_3 내지 ALU9_3)는 매트릭스(M13)에 해당하는 이미지 데이터를 포함하는 세번째 레인을 연산한다.
이와 같은 방식으로 이미지 데이터를 처리함에 따라, 본 실시예에서, ROI 연산의 대상이 되는 매트릭스가 3 x 3 사이즈를 갖는다고 가정하면, 제1 프로세서(100)는 한 사이클에 3 개의 이미지 라인에 대해 매트릭스 연산을 수행할 수 있다. 이 때, 9 개의 데이터 행(DATA 1 내지 DATA 9)을 병렬 처리하는 복수의 ALU의 사용 효율은 100 %가 된다.
한편, 도 8d에 도시된 바와 같이, 만일 사이즈 5 x 5의 매트릭스(M31, M32)에 대해 ROI 연산을 해야 하는 경우, 제1 프로세서(100)는 메모리 장치에 저장되어 있는 도 8a의 이미지 데이터를 리드하여, IR(112)에 저장한다.
이 경우, 도 8e 내지 도 8g를 참조하면, 5 x 5 매트릭스 연산은 총 세 사이클에 걸쳐 연산이 이루어진다. 도 8e에 따른 첫 번째 사이클에는 3 x 3 매트릭스와 같은 방식으로 연산이 된다. 도 8f에 따른 두 번째 사이클에는 도 8a의 매트릭스(M2) 매트릭스에서 도 8a의 매트릭스(M1)를 제외한 이미지 데이터(N21 내지 N24)가 ALU(ALU1_1 내지 ALU9_1) 또는 첫 번째 벡터 레인에 할당되고, 이미지 데이터(N31, N32, N33, N34, N27, N26, N25)의 데이터는 ALU(ALU2_2 내지 ALU9_2) 또는 두번째 벡터 레인에 할당된다. 세 번째 이후 레인에 대해서도 동일한 방법으로 데이터가 할당된다. 도 8g에 따른 세 번째 사이클에는 매트릭스(M3)에서 매트릭스(M2)를 제외한 데이터(N31 내지 N28)가 ALU(ALU1_1 내지 ALU9_1) 또는 첫번째 벡터 레인에 할당되고, 이 후의 레인들도 같은 방식으로 할당되어 처리된다.
이와 같은 방식으로 이미지 데이터를 처리함에 따라, 본 실시예에서, ROI 연산의 대상이 되는 매트릭스가 5 x 5 사이즈를 갖는다고 가정하면, 제1 프로세서(100)는 두 번째 사이클에서 2 개의 데이터에 대해서만 연산을 수행하지 않기 때문에 ALU의 사용 효율은 93 %((64 lane x 9 column x 3 cycle - 64 lane x 2 column) x 100 / 64 x 9 x 3)가 된다.
이와 같은 방식으로 따져보면, ROI 연산의 대상이 되는 매트릭스가 4 x 4 사이즈를 갖는다고 가정하면, 제1 프로세서(100)는 두 사이클에 걸쳐 매트릭스 연산이 수행되고 이때 2 개의 데이터만 미사용하므로, ALU의 사용 효율은 89 %가 된다.
ROI 연산의 대상이 되는 매트릭스가 7 x 7 사이즈를 갖는다고 가정하면, 제1 프로세서(100)는 6 사이클에 걸쳐 매트릭스 연산을 수행하고 5 개의 데이터만을 미사용하므로, ALU의 사용 효율은 91 %가 된다.
ROI 연산의 대상이 되는 매트릭스가 8 x 8 사이즈를 갖는다고 가정하면, 제1 프로세서(100)는 8 사이클 동안 매트릭스 연산을 수행하고 8 개의 데이터만을 미사용하므로, ALU의 사용 효율은 89 %가 된다.
ROI 연산의 대상이 되는 매트릭스가 9 x 9 사이즈를 갖는다고 가정하면, 제1 프로세서(100)는 9 사이클에 걸쳐 9 개의 이미지 라인에 대해 9 x 9 매트릭스 연산을 수행하고 모든 데이터가 모두 사용되므로, ALU의 사용 효율은 100 %가 된다.
ROI 연산의 대상이 되는 매트릭스가 11 x 11 사이즈를 갖는다고 가정하면, 제1 프로세서(100)는 14 사이클에 걸쳐 수행되며 11개의 이미지 라인 중 8 개의 데이터만을 미사용하므로, ALU의 사용 효율은 96 %가 된다.
도 8a 내지 도 8g에서 살펴본 바와 같이, 데이터 배치 레이어(130)에 의해 재배열된 데이터의 데이터 행의 개수가 9 개인 경우, 이미지, 비전 및 뉴럴 네트워크에 관한 어플리케이션들에서 가장 흔하게 사용되는 3 x 3, 4 x 4, 5 x 5, 7 x 7, 8 x 8, 9 x 9, 11 x 11 사이즈를 비롯한 다양한 사이즈의 매트릭스에 대한 ROI 연산 시 제1 프로세서(100)의 ALU 사용 효율이 약 90%의 수준을 유지할 수 있다.
본 발명의 몇몇의 실시예에서, 연산하는 매트릭스의 사이즈가 커지면 기존의 매트릭스 사이즈보다 커진 부분에 대해서만 데이터 배치가 이루어진다. 예를 들어, 매트릭스(M1)에 대해 제1 연산 후 매트릭스(M2)에 대해 제2 연산을 해야 하는 경우, 제2 연산을 위해 필요한 이미지 데이터(N21 내지 N27)에 대해서만 추가적인 데이터 배치가 이루어질 수 있다.
한편, 본 발명의 몇몇의 실시예서, 복수의 ALU는 IR(112)에 저장된 이미지 데이터와, CR(114)에 저장된 필터 계수를 이용하여 연산을 수행한 후 OR(116)에 그 결과를 저장할 수 있다.
도 8h는 본 발명의 일 실시예에 따른 반도체 장치가 제공하는 시프트업 연산을 설명하기 위한 개략도이다.
도 8h를 참조하면, 본 발명의 일 실시예에 따른 반도체 장치가 제공하는 시프트업 연산은 메모리 장치로부터 미리 IR(112)에 저장한 이미지 데이터들을 효율적으로 처리하기 위해, IR(112)에 저장된 데이터를 리드하는 방법을 제어한다.
구체적으로 시프트업 연산은, 만일 사이즈 5 x 5의 매트릭스(M31, M32)에 대해 ROI 연산을 해야 하는 경우, 도 8h에서 제1 영역(R1)에 해당하는 이미지 데이터들을 모두 처리하였고, 이후 제2 영역(R2)에 해당하는 이미지 데이터들을 처리해야 하는 경우, 추가적으로 필요한 제6행의 데이터들만 메모리로부터 IR(112)로 리드하는 것이다.
예를 들어, 제1 영역(R1)에 해당하는 제1행 내지 제5행의 데이터가 각각 도 5a의 IR[0] 내지 IR[4]에 저장되어 있었다면, IR[5]에는 제6행의 데이터가 미리 저장되어 있도록 함으로써, 추가적인 메모리 접근을 피하면서 IR(112)의 리드 영역을 제2 영역(R2)으로 조절하는 것만으로 제2행 내지 제6행에 대한 사이즈 5 x 5의 매트릭스(M31, M32)에 대해 ROI 연산을 계속 진행할 수 있다.
도 9는 본 발명의 다양한 실시예에 따른 반도체 장치를 이용하여 해리스 코너 검출(Harris corner detection)을 수행하는 동작례를 설명하기 위한 흐름도이다. 해리스 코너 검출 방법은 해당 기술 분야의 통상의 기술자에게 널리 알려진 것이므로 그 상세한 내용은 생략하도록 한다.
도 9를 참조하면, 해리스 코너 검출 방법의 일례는 단계(S901)에서 이미지를 입력 받는 것을 포함한다. 구체적으로 제1 프로세서(100)가 도 1의 메모리 버스(400)을 통해 코너 검출을 위한 이미지를 입력 받는다.
단계(S903)에서, 상기 방법은 미분 값(Derivative Value, DV)을 연산한다. 구체적으로 제1 프로세서(100)는 필요에 따라 데이터 배치 레이어(130)을 통해 재배열된 이미지 데이터로부터, 예컨대 X 축과 Y 축으로 픽셀에 대한 미분 값(DV)을 연산한다. 이때 미분은 Sobel 필터라는 1차원 필터를 x축(Ix=Gx * I)과 y축(Iy = Gy * I) 방향으로 각 이미지에 미분 계수를 곱함으로써 쉽게 구해진다. 입력된 이미지는 IR(112)에 저장되고 미분 계수는 CR(114)에 저장되며 곱셈 결과는 OR(116)에 저장된다.
다음으로, 단계(S905)에서, 상기 방법은 미분 곱(Derivative Product, DP)을 연산한다. 구체적으로 제1 프로세서(100)는 필요에 따라 데이터 배치 레이어(130)을 통해 재배열된 미분 값(DV)로부터, 모든 픽셀에 대한 미분 곱(DP)을 연산한다. 단계(S903)의 결과를 바탕으로 x축, y축 결과를 제곱(Ix2, Iy2)하고 x축과 y축 결과를 서로 곱(Ixy = Ix * Iy)해 DV 값을 구하게 된다. 이 때 x축과 y축 결과는 단계(S903)의 결과 OR(116)에 저장된 결과를 재활용하여 OR(116)에서 IDA/CDA 패턴을 이용해 벡터 ALU입력으로 사용하여 연산결과를 다시 OR(116)에 저장한다.
다음으로, 단계(S907)에서, 상기 방법은 SSD(Sum of Squred Difference)를 연산한다. 구체적으로 제1 프로세서(100)는 미분 곱(DP)을 이용하여 SSD를 연산한다. SSD 연산(Sx2=Gx * Ix2, Sy2 = Gy * Iy2, Sxy = Gxy * Ix * Iy)도 단계(S905)와 같은 방법으로 단계(S905)의 결과인 OR(116)로부터 IDA를 거쳐 벡터 FU에 데이터를 할당하고 CR(114)에 저장된 미분 계수를 곱하여 다시 OR(116)에 저장하게 된다.
이후, 단계(S909)에서, 상기 방법은 특징 점 매트릭스(key point matrix)를 정의한다. 그런데 특징 점 매트릭스를 결정하는 것은 ROI 처리에 특화된 제1 프로세서(100)만으로는 수행이 어렵기 때문에, 제2 프로세서(200)를 통해 처리할 수 있다.
이 경우, 제1 프로세서(100)의 OR(116)에 저장된 결과 값들은 제2 프로세서(200)에 공유되어 재사용될 수 있다. 예를 들어, 제1 프로세서(100)의 OR(116)에 저장된 결과 값들은 도 3의 MV를 이용하여 제2 프로세서(200)의 VR(214)로 이동될 수 있다. 또는 OR(116)의 값을 바로 입력받을 수 있는 FU는 MV를 거치지 않고 제1 프로세서(100)의 결과를 사용할 수도 있다.
다음으로, 단계(S911)에서, 상기 방법은 응답 함수(R=Det(H) - k(Trace(H)2))를 연산한다. 구체적으로 제2 프로세서(200)는 VR(214)에 저장된 단계(S909)의 결과 값들을 이용하여 응답 함수를 연산한다. 이 단계에서는 제2 프로세서(200)만 사용하므로 모든 연산의 중간 및 최종 결과는 VR(214)에 저장된다.
이후, 단계(S913)에서, 상기 방법은 NMS(Non Maximum Suppression) 연산을 수행하여 특징 점을 검출한다. 본 단계(S913)는 다시 제1 프로세서(100)에 의해 처리될 수 있다.
이 경우, 제1 프로세서(200)의 VR(214)에 저장된 결과 값들은 제1 프로세서(100)에 공유되어 재사용될 수 있다. 예를 들어, 제2 프로세서(200)의 VR(214)에 저장된 결과 값들은 도 3의 MV를 이용하여 제1 프로세서(100)의 OR(116)로 이동될 수 있다. 또는 VR(214)에서 바로 IDA/CDA 를 통해 벡터 FU에 할당 될 수도 있다.
이와 같은 방식으로, 입력된 이미지의 코너 검출 작업이 완료될 때까지 제1 프로세서(100)와 제2 프로세서(200)의 레지스터만을 사용하므로, 메모리 장치를 접근할 필요가 없다. 이에 따라 메모리 장치를 접근하는 데 소요되는 오버헤드, 전력 소모와 같은 비용들을 현저하게 줄일 수 있다.
도 10은 본 발명의 일 실시예에 따른 반도치 장치에서 지원하는, 비전 및 뉴럴 네트워크에 관한 어플리케이션들에서 사용되는 매트릭스 연산들을 효율적으로 처리하기 위한 명령의 구현례를 설명하기 위한 도면이다.
도 10을 참조하면, 제1 프로세서(100)는 비전 및 뉴럴 네트워크에 관한 어플리케이션들에서 사용되는 매트릭스 연산들을 효율적으로 처리하기 위한 명령들을 지원한다. 이들 명령들은 크게 3 종류의 명령으로 구분될 수 있다.
맵(MAP) 명령은, 예컨대 복수의 ALU(160)를 이용하여 데이터를 연산하기 위한 명령으로, Add, Sub, Abs, AbsDiff, Cmp, Mul, Sqr 등의 연산을 지원한다. 맵(MAP) 명령은 제1 프로세서(100)의 OR(116)을 타겟 레지스터로 삼으며, 피연산자로서 IDA(192) 및 CDA(194) 중 적어도 하나에 의한 데이터 패턴을 이용한다. 그리고 추가적으로 처리 데이터의 단위가 8 비트인지 16 비트인지를 나타내는 필드를 포함할 수 있다.
리듀스(REDUCE) 명령은, 예컨대 트리 연산을 위한 명령으로, Add 트리, 최소 트리, 최대 트리 등의 연산을 지원한다. 리듀스(REDUCE) 명령은 제1 프로세서(100)의 OR(116)과 제2 프로세서(200)의 VR(214) 중 적어도 하나를 타겟 레지스터로 삼으며, IDA(192) 및 CDA(194) 중 적어도 하나에 의한 데이터 패턴을 이용한다. 그리고 추가적으로 처리 데이터의 단위가 8 비트인지 16 비트인지를 나타내는 필드를 포함할 수 있다.
맵 리듀스(MAP_REDUCE) 명령은 맵 연산과 리듀스 연산을 결합한 명령을 말한다. 맵 리듀스(MAP_REDUCE) 명령은 제1 프로세서(100)의 OR(116)과 제2 프로세서(200)의 VR(214) 중 적어도 하나를 타겟 레지스터로 삼으며, IDA(192) 및 CDA(194) 중 적어도 하나에 의한 데이터 패턴을 이용한다. 그리고 추가적으로 처리 데이터의 단위가 8 비트인지 16 비트인지를 나타내는 필드를 포함할 수 있다.
이제까지 설명한 본 발명의 다양한 실시예에 따르면, 제1 프로세서(100) 및 제2 프로세서(200)는 동일한 ISA(Instruction Set Architecture)를 공유함으로써 ROI 연산에 특화된 제1 프로세서(100)와 산술 연산에 특화된 제2 프로세서(200)가 인스트럭션(instruction) 레벨에서 공유됨으로써 제어가 용이하게 될 수 있고, 1 프로세서(100) 및 제2 프로세서(200)는 레지스터들을 공유함으로써 데이터 사용 효율을 증가시키고 메모리 접근 횟수를 감소시킬 수 있다. 뿐만 아니라 제1 프로세서(100)가 처리할 다양한 사이즈의 데이터(예컨대, 매트릭스)에 대한 ROI 연산을 효율적으로 수행하기 위한 데이터 패턴을 이용함으로써, 이미지, 비전 및 뉴럴 네트워크에 관한 처리에서 자주 사용되는 3 x 3, 4 x 4, 5 x 5, 7 x 7, 8 x 8, 9 x 9, 11 x 11 매트릭스에 대해 특히 효율적인 처리가 가능할 수 있다.
도 11a 및 도 11b는 도 8d의 5 x 5 매트릭스의 컨볼루션 연산을 위한 실제 어셈블리 명령의 예를 설명하기 위한 도면이다.
도 10 및 도 11a를 참조하면, 첫 번째 줄의 MAPMUL_ReduceAcc16(IDA_Conv3(IR), CDA_Conv3(CR, w16)) 명령에서 MAPMUL_ReduceAcc16은 도 10의 스테이지, 타켓 레지스터, 연산자1, 연산자2 및 오피명령(Opcode)에 따라 MAP 스테이지와 Reduce 스테이지에서 수행될 명령어를 의미한다. 따라서 16 비트 데이터에 대해 MAP 스테이지에서는 Mul 명령어를 수행하고 Reduce 스테이지에서는 add tree를 수행하는데, 이전 덧셈 결과를 accumulation 하기 때문에 Acc 명령어를 사용한다. 각각의 라인에서 연산자 ":"는 제1 프로세서(100) 및 제2 프로세서(200)의 각 슬롯(240a, 240b, 240c, 240d)에서 처리될 명령어를 구별하는 연산자이다. 따라서, SIMD(Single Instruction Multiple Data) 및 다중 슬롯 VLIW(Very Long Instruction Word) 구조의 명령어 세트를 이용하여 제1 프로세서(100) 및 제2 프로세서(200)에서 연산동작을 수행한다. 예를 들면, MAPMul_ReducedAcc16은 제1 프로세서(100)이 있는 슬롯에 할당되며, 명령어 ShupReg=1는 제2 프로세서(200)에 해당되는 슬롯에 할당된다. 명령어 ShupReg는 Shiftup register 명령어이며, 도 8f에서 설명한대로 연산에 사용되는 레지스터 데이터 영역 (레지스터 윈도우)를 변경하는 명령어이며, 제1 프로세서(100) 또는 제2 프로세서(200)에서 수행되도록 구현될 수 있다. MAPMul_ReducedAcc16 명령을 제외한 그외 명령어들은 제2 프로세서(200)에 해당되는 슬롯에서 수행될 수 있으며, 구현방법에 따라 이에 제한되지 않고 제1 프로세서(100)에서도 수행될 수 있다.
이때 IDA_Conv3(IR), CDA_Conv3(CR, w16)이라는 가상의 레지스터로부터 입력 값을 받는다. Conv3은 도 8b의 3 x 3 매트릭스의 데이터 패턴을 IR(112)과 CR(114)로부터 입력받는 것을 의미한다. 상기 어셈블리 명령이 수행되면 OR(116)의 첫번째 레인에는 도 8b의 매트릭스(M11)의 결과가 저장되고 두 번째 레인에는 매트릭스(M12), 세 번째 레인에는 매트릭스(M13)의 결과가 저장되고, 이후의 레인에도 같은 방법으로 결과가 저장된다.
두 번째 어셈블리 명령 MAPMUL_ReduceAcc16(IDA_Conv4(IR), CDA_Conv4(CR, w16)) 는 입력 데이터 패턴만 달리하여 같은 방법으로 연산된다. 이때 입력은 앞의 5 x 5 매트릭스 연산에서 설명 했듯이 4 x 4 매트릭스에서 3 x 3 매트릭스의 데이터를 뺀 나머지 데이터 들이(도 11b에서 D2 영역에서 D1 영역을 제외한 영역의 이미지 데이터) FU의 각 레인에 입력되고, 3 x 3 결과와 함께 add tree를 타고 OR(116)에 해당 결과를 저장하게 된다. 이 결과는 4 x 4 사이즈에 대한 컨볼루션(convolultion) 연산 결과를 의미한다.
마지막 MAPMUL_ReduceAcc16(IDA_Conv5(IR), CDA_Conv5(CR, w16))는 5 x 5 매트릭스에서 4 x 4 매트릭스 데이터를 뺀 나머지 데이터에 대해 앞의 연산과 동일한 연산을 수행한다.
이 세 개의 명령어를 수행하고 나면 입력된 5행의 5 x 5 매트릭스에 대해 컨볼루션 필터의 결과가 OR(116)에 저장된다. 이 후 연산 윈도우가 한 줄 내려와 제1행 내지 제5행에 해당하는 5 x 5 매트릭스 연산을 다시 수행하게 되는데, 이를 위해 제5행만 새로이 입력받고 이전에 사용된 제1행 내지 제4행은 도 8h와 관련하여 설명한 레지스터 시프트 업 명령어를 통해 재 사용하게 된다.
본 실시예에 따르면, 한 번 입력된 데이터는 메모리 장치로부터 다시 리드되지 않기 때문에 메모리 접근 빈도를 줄여 성능과 파워 효율을 극대화 할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1: 반도체 장치 100: 제1 프로세서
200: 제2 프로세서 300: 컨트롤러
400: 메모리 버스

Claims (20)

  1. 제1 레지스터를 포함하고, 상기 제1 레지스터를 이용하여 ROI(Region On Interest) 연산을 수행하되, 인스트럭션을 SIMD(Single Instruction Multiple Data) 구조에 따라 처리하는 제1 프로세서; 및
    제2 레지스터를 포함하고, 상기 제2 레지스터를 이용하여 산술 연산을 수행하되, 인스트럭션을 VLIW(Very Long Instruction Word) 구조에 따라 처리하는 제2 프로세서를 포함하되,
    상기 제1 레지스터는 상기 제2 프로세서에 의해 공유되고, 상기 제2 레지스터는 상기 제1 프로세서에 의해 공유되고,
    상기 제2 프로세서에 의해 처리되는 인스트럭션은 2 이상의 슬롯(slot)을 포함하고,
    상기 2 이상의 슬롯 중 적어도 하나의 슬롯은 상기 제1 프로세서를 이용하여 실행되는 반도체 장치.
  2. 제1항에 있어서,
    상기 제1 프로세서 및 상기 제2 프로세서는 동일한 ISA(Instruction Set Architecture)를 공유하는 반도체 장치.
  3. 제1항에 있어서,
    상기 제1 레지스터는 IR(Image Register), CR(Coefficient Register) 및 OR(Output Register) 중 적어도 하나를 포함하는 반도체 장치.
  4. 제1항에 있어서,
    상기 제2 레지스터는 SR(Scalar Register) 및 VR(Vector Register) 중 적어도 하나를 포함하는 반도체 장치.
  5. 제1항에 있어서,
    상기 제1 프로세서는 처리할 데이터를 재배열하는 데이터 배치 유닛(data arrange unit)을 포함하는 반도체 장치.
  6. 제5항에 있어서,
    상기 제1 프로세서는 서로 병렬로 배치된 복수의 ALU(Arithmetic Logic Unit)를 포함하고,
    상기 복수의 ALU는 상기 데이터 배치 유닛에 의해 재배열된 상기 데이터를 병렬 처리하는 반도체 장치.
  7. 제6항에 있어서,
    상기 제1 프로세서는 서로 병렬로 배치된 복수의 ALU를 포함하고,
    상기 복수의 ALU에 데이터를 제공하기 위한 9 개 행의 SIMD(Single Instruction Multiple Data) 구조를 포함하는 반도체 장치.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 제1 레지스터를 포함하고, 상기 제1 레지스터를 이용하여 ROI(Region On Interest) 연산을 수행하되, 인스트럭션을 SIMD(Single Instruction Multiple Data) 구조에 따라 처리하는 제1 프로세서; 및
    제2 레지스터를 포함하고, 상기 제2 레지스터를 이용하여 산술 연산을 수행하되, 인스트럭션을 VLIW(Very Long Instruction Word) 구조에 따라 처리하는 제2 프로세서를 포함하되,
    상기 제1 프로세서 및 상기 제2 프로세서는 동일한 ISA(Instruction Set Architecture)를 공유하고,
    상기 제2 프로세서에 의해 처리되는 인스트럭션은 2 이상의 슬롯(slot)을 포함하고, 상기 2 이상의 슬롯 중 적어도 하나의 슬롯은 상기 제1 프로세서를 이용하여 실행되는 반도체 장치.
  12. 삭제
  13. 제11항에 있어서,
    상기 제1 레지스터는 IR(Image Register), CR(Coefficient Register) 및 OR(Output Register) 중 적어도 하나를 포함하는 반도체 장치.
  14. 제11항에 있어서,
    상기 제2 레지스터는 SR(Scalar Register) 및 VR(Vector Register) 중 적어도 하나를 포함하는 반도체 장치.
  15. 제11항에 있어서,
    상기 제1 프로세서는 처리할 데이터를 재배열하는 데이터 배치 유닛(data arrange unit)을 포함하는 반도체 장치.
  16. 제15항에 있어서,
    상기 제1 프로세서는 서로 병렬로 배치된 복수의 ALU(Arithmetic Logic Unit)를 포함하고,
    상기 복수의 ALU는 상기 데이터 배치 유닛에 의해 재배열된 상기 데이터를 병렬 처리하는 반도체 장치.
  17. 제16항에 있어서,
    상기 제1 프로세서는 서로 병렬로 배치된 복수의 ALU를 포함하고,
    상기 복수의 ALU에 데이터를 제공하기 위한 9 개 행의 SIMD(Single Instruction Multiple Data) 구조를 포함하는 반도체 장치.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020170042125A 2017-03-31 2017-03-31 반도체 장치 KR102235803B1 (ko)

Priority Applications (9)

Application Number Priority Date Filing Date Title
KR1020170042125A KR102235803B1 (ko) 2017-03-31 2017-03-31 반도체 장치
US15/717,989 US10649771B2 (en) 2017-03-31 2017-09-28 Semiconductor device
TW107100401A TWI776838B (zh) 2017-03-31 2018-01-05 半導體裝置
US15/905,979 US10409593B2 (en) 2017-03-31 2018-02-27 Semiconductor device
JP2018060426A JP7154788B2 (ja) 2017-03-31 2018-03-27 半導体装置
CN201810274218.4A CN109447892B (zh) 2017-03-31 2018-03-29 半导体装置
US16/520,761 US10990388B2 (en) 2017-03-31 2019-07-24 Semiconductor device
US17/216,323 US11645072B2 (en) 2017-03-31 2021-03-29 Semiconductor device
US18/129,119 US20230236832A1 (en) 2017-03-31 2023-03-31 Semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170042125A KR102235803B1 (ko) 2017-03-31 2017-03-31 반도체 장치

Publications (2)

Publication Number Publication Date
KR20180111321A KR20180111321A (ko) 2018-10-11
KR102235803B1 true KR102235803B1 (ko) 2021-04-06

Family

ID=63865574

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170042125A KR102235803B1 (ko) 2017-03-31 2017-03-31 반도체 장치

Country Status (5)

Country Link
US (4) US10409593B2 (ko)
JP (1) JP7154788B2 (ko)
KR (1) KR102235803B1 (ko)
CN (1) CN109447892B (ko)
TW (1) TWI776838B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US20220334634A1 (en) * 2021-04-16 2022-10-20 Maxim Integrated Products, Inc. Systems and methods for reducing power consumption in embedded machine learning accelerators

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004259143A (ja) * 2003-02-27 2004-09-16 Nec Electronics Corp プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
US20080252747A1 (en) * 1997-07-15 2008-10-16 Silverbrook Research Pty Ltd Vliw image processor
US20120260064A1 (en) 2011-04-07 2012-10-11 Via Technologies, Inc. Heterogeneous isa microprocessor with shared hardware isa registers

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3167363B2 (ja) * 1991-08-29 2001-05-21 株式会社東芝 関心領域設定方法及び画像処理装置
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
JP2889842B2 (ja) 1994-12-01 1999-05-10 富士通株式会社 情報処理装置及び情報処理方法
JP3209205B2 (ja) * 1998-04-28 2001-09-17 日本電気株式会社 プロセッサにおけるレジスタ内容の継承装置
US6139498A (en) 1998-12-29 2000-10-31 Ge Diasonics Israel, Ltd. Ultrasound system performing simultaneous parallel computer instructions
US6397324B1 (en) * 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
JP2001014139A (ja) 1999-06-28 2001-01-19 Nec Corp ワークファイルを使用するマルチスレッドソート処理方式及び処理方法
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US6898691B2 (en) 2001-06-06 2005-05-24 Intrinsity, Inc. Rearranging data between vector and matrix forms in a SIMD matrix processor
US7162573B2 (en) 2003-06-25 2007-01-09 Intel Corporation Communication registers for processing elements
GB2409066B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7386842B2 (en) 2004-06-07 2008-06-10 International Business Machines Corporation Efficient data reorganization to satisfy data alignment constraints
JP2006011924A (ja) * 2004-06-28 2006-01-12 Fujitsu Ltd 再構成可能演算装置および半導体装置
KR20070055487A (ko) * 2004-07-13 2007-05-30 쓰리플러스원 테크놀러지, 인크 프로그램가능한 프로세서 아키텍처
JP2006236715A (ja) 2005-02-23 2006-09-07 Matsushita Electric Works Ltd 照明器具
JP2007004542A (ja) * 2005-06-24 2007-01-11 Renesas Technology Corp 半導体信号処理装置
US20070116357A1 (en) * 2005-11-23 2007-05-24 Agfa-Gevaert Method for point-of-interest attraction in digital images
US7624250B2 (en) 2005-12-05 2009-11-24 Intel Corporation Heterogeneous multi-core processor having dedicated connections between processor cores
KR100739785B1 (ko) 2006-01-09 2007-07-13 삼성전자주식회사 관심 영역 기반 영상 부호화, 복호화 방법 및 장치
US20070239970A1 (en) * 2006-04-06 2007-10-11 I-Tao Liao Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File
US7697443B2 (en) * 2006-04-13 2010-04-13 International Business Machines Corporation Locating hardware faults in a parallel computer
TW200813724A (en) * 2006-07-28 2008-03-16 Samsung Electronics Co Ltd Multipath accessible semiconductor memory device with host interface between processors
CN101163240A (zh) * 2006-10-13 2008-04-16 国际商业机器公司 一种滤波装置及其方法
US8725991B2 (en) 2007-09-12 2014-05-13 Qualcomm Incorporated Register file system and method for pipelined processing
US8213515B2 (en) * 2008-01-11 2012-07-03 Texas Instruments Incorporated Interpolated skip mode decision in video compression
US8248422B2 (en) 2008-01-18 2012-08-21 International Business Machines Corporation Efficient texture processing of pixel groups with SIMD execution unit
JP2010015257A (ja) * 2008-07-01 2010-01-21 Canon Inc 画像処理装置、画像処理方法、及びプログラム
US9652231B2 (en) 2008-10-14 2017-05-16 International Business Machines Corporation All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture
US9152427B2 (en) * 2008-10-15 2015-10-06 Hyperion Core, Inc. Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
JP5445469B2 (ja) 2009-01-13 2014-03-19 日本電気株式会社 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント
JP2010192983A (ja) * 2009-02-16 2010-09-02 Renesas Electronics Corp フィルタ処理装置及び半導体装置
KR101110550B1 (ko) 2009-04-08 2012-02-08 한양대학교 산학협력단 프로세서 장치, 멀티 프로세서 시스템 및 멀티 프로세서 시스템의 공유메모리 접근 방법
KR101027906B1 (ko) 2009-04-28 2011-04-12 한국과학기술원 물체 인식 방법 및 장치
KR101662769B1 (ko) 2010-03-09 2016-10-05 삼성전자주식회사 고속 정렬 장치 및 방법
KR101079691B1 (ko) 2010-06-01 2011-11-04 공주대학교 산학협력단 데이터 정렬 방법과 상기 방법을 수행할 수 있는 장치들
KR101670958B1 (ko) 2010-11-30 2016-11-01 삼성전자주식회사 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치
JP5648465B2 (ja) 2010-12-17 2015-01-07 富士通セミコンダクター株式会社 グラフィックスプロセッサ
GB2489914B (en) * 2011-04-04 2019-12-18 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector operations
WO2013046475A1 (en) * 2011-09-27 2013-04-04 Renesas Electronics Corporation Apparatus and method of a concurrent data transfer of multiple regions of interest (roi) in an simd processor system
JP5708450B2 (ja) 2011-11-10 2015-04-30 富士通株式会社 マルチコアプロセッサシステム、レジスタ利用方法、およびレジスタ利用プログラム
JP5554358B2 (ja) * 2012-03-23 2014-07-23 株式会社東芝 マルチプロセッサシステムおよび電力制御方法
CN102707931A (zh) * 2012-05-09 2012-10-03 刘大可 一种基于并行数据通道的数字信号处理器
US9405538B2 (en) 2012-12-28 2016-08-02 Intel Corporation Functional unit having tree structure to support vector sorting algorithm and other algorithms
KR20140092135A (ko) 2013-01-15 2014-07-23 한국전자통신연구원 빅 데이터를 위한 병렬 정렬 방법 및 장치
KR101482229B1 (ko) 2013-04-29 2015-01-14 주식회사 실리콘아츠 컴퓨터 실행 가능한 데이터 정렬 방법, 이를 수행하는 데이터 정렬 시스템 및 이를 저장하는 기록매체
JP6462979B2 (ja) * 2013-09-06 2019-01-30 キヤノン株式会社 画像処理装置、画像処理方法、プログラムおよび記憶媒体
KR102122406B1 (ko) 2013-11-06 2020-06-12 삼성전자주식회사 셔플 명령어 처리 장치 및 방법
KR102310246B1 (ko) 2014-04-23 2021-10-08 삼성전자주식회사 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
KR101573618B1 (ko) 2014-07-04 2015-12-01 한양대학교 산학협력단 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치
US9563953B2 (en) * 2014-08-28 2017-02-07 Qualcomm Incorporated Systems and methods for determining a seam
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
JP2016091488A (ja) 2014-11-11 2016-05-23 アズビル株式会社 データソート方法およびプログラム
JP2016112285A (ja) 2014-12-17 2016-06-23 日立アロカメディカル株式会社 超音波診断装置
KR102332523B1 (ko) * 2014-12-24 2021-11-29 삼성전자주식회사 연산 처리 장치 및 방법
KR101665207B1 (ko) 2014-12-31 2016-10-14 (주)베라시스 복수개의 검출윈도우를 통한 관심영역에서의 차량식별방법
KR101645517B1 (ko) * 2015-04-01 2016-08-05 주식회사 씨케이앤비 특징점 추출 장치 및 방법과 이를 이용한 콘텐츠의 온라인 유통 현황 분석을 위한 이미지 매칭 시스템
US9569661B2 (en) * 2015-05-21 2017-02-14 Futurewei Technologies, Inc. Apparatus and method for neck and shoulder landmark detection
JP2017037505A (ja) * 2015-08-11 2017-02-16 ルネサスエレクトロニクス株式会社 半導体装置
US20170337156A1 (en) * 2016-04-26 2017-11-23 Onnivation Llc Computing machine architecture for matrix and array processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080252747A1 (en) * 1997-07-15 2008-10-16 Silverbrook Research Pty Ltd Vliw image processor
JP2004259143A (ja) * 2003-02-27 2004-09-16 Nec Electronics Corp プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
US20120260064A1 (en) 2011-04-07 2012-10-11 Via Technologies, Inc. Heterogeneous isa microprocessor with shared hardware isa registers

Also Published As

Publication number Publication date
CN109447892A (zh) 2019-03-08
US10409593B2 (en) 2019-09-10
KR20180111321A (ko) 2018-10-11
CN109447892B (zh) 2023-11-28
US20180300128A1 (en) 2018-10-18
JP2018173956A (ja) 2018-11-08
TWI776838B (zh) 2022-09-11
US20210216312A1 (en) 2021-07-15
US20230236832A1 (en) 2023-07-27
JP7154788B2 (ja) 2022-10-18
TW201837716A (zh) 2018-10-16
US11645072B2 (en) 2023-05-09
US10990388B2 (en) 2021-04-27
US20190347096A1 (en) 2019-11-14

Similar Documents

Publication Publication Date Title
US11775313B2 (en) Hardware accelerator for convolutional neural networks and method of operation thereof
TWI450192B (zh) 用於處理器中之控制處理的裝置及方法
TWI384400B (zh) 用於非對稱雙路徑處理之電腦處理器、其操作方法和相關的電腦程式產品
US20070271325A1 (en) Matrix multiply with reduced bandwidth requirements
US20140122551A1 (en) Arithmetic logic unit
EP3623941B1 (en) Systems and methods for performing instructions specifying ternary tile logic operations
US10649771B2 (en) Semiconductor device
JP2008071130A (ja) Simd型マイクロプロセッサ
US10248384B2 (en) Arithmetic processing device and control method for arithmetic processing device
US9141386B2 (en) Vector logical reduction operation implemented using swizzling on a semiconductor chip
US20230236832A1 (en) Semiconductor device
US9898286B2 (en) Packed finite impulse response (FIR) filter processors, methods, systems, and instructions
JP7506086B2 (ja) データ処理
EP3329363B1 (en) Vector arithmethic instruction
WO2021229232A1 (en) Variable position shift for matrix processing
TW201802669A (zh) 用於執行重新排列操作的設備及方法
US10749502B2 (en) Apparatus and method for performing horizontal filter operations
US7558816B2 (en) Methods and apparatus for performing pixel average operations
US9690752B2 (en) Method and system for performing robust regular gridded data resampling
US20230214236A1 (en) Masking row or column positions for matrix processing
US20030159023A1 (en) Repeated instruction execution
US20210042127A1 (en) Group Load Register of a Graph Streaming Processor
JP2005267362A (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
JPH0330182B2 (ko)

Legal Events

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