KR102900552B1 - 컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치 - Google Patents
컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치Info
- Publication number
- KR102900552B1 KR102900552B1 KR1020200158952A KR20200158952A KR102900552B1 KR 102900552 B1 KR102900552 B1 KR 102900552B1 KR 1020200158952 A KR1020200158952 A KR 1020200158952A KR 20200158952 A KR20200158952 A KR 20200158952A KR 102900552 B1 KR102900552 B1 KR 102900552B1
- Authority
- KR
- South Korea
- Prior art keywords
- input data
- address
- data
- buffer
- sender
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
- Stored Programmes (AREA)
- Complex Calculations (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
도 2는 일 실시예에 따른 컨벌루션 연산을 위한 데이터 공유 방법의 동작을 도시한 순서도이다.
도 3은 컨벌루션 연산을 위한 데이터 공유 방법의 일례를 도시한 흐름도이다.
도 4는 일 실시예에 따른 컨벌루션 연산을 위한 데이터 공유 방법에 의해 데이터가 공유되는 상황을 설명하기 위한 도면이다.
도 5는 도 4의 다음 클락에 저장되거나 전송되는 데이터를 도시한 도면이다.
도 6은 일 실시예에 따른 페처의 구성을 도시한 도면이다.
도 7은 일 실시예에 따른 컨벌루션 연산 장치를 도시한 도면이다.
Claims (27)
- 로더(Loader), 복수의 센더(Sender), 버퍼 컨트롤러(Buffer Controller) 및 재사용 버퍼(Reuse Buffer)를 포함하는 페처(fetcher)의 데이터 공유 방법에 있어서,
상기 로더에 의해, 메모리(Memory)에 저장된 입력 특징 맵(input feature map)의 입력 데이터를 로딩 순서에 따라 로딩 단위로 로딩하는 단계;
상기 버퍼 컨트롤러에 의해, 상기 로딩된 입력 데이터를 상기 로딩 순서에 따라 순환적으로 할당된 주소의 상기 재사용 버퍼에 저장하는 단계; 및
상기 복수의 센더(Sender) 각각에 의해, 상기 재사용 버퍼에 저장된 입력 데이터 중에서 컨벌루션 연산의 출력 데이터 각각에 대응하는 입력 데이터를 처리기로 전송하는 단계를 포함하고,
상기 복수의 센더 각각에 의해 전송되는 각각의 입력 데이터의 일부는 서로 중복되는,
컨벌루션 연산을 위한 데이터 공유 방법. - 제1항에 있어서,
상기 로딩된 입력 데이터에 포함된 이전 입력 데이터와 현재 입력 데이터에 대하여, 상기 이전 입력 데이터에 할당된 주소가 상기 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 재사용 버퍼의 첫번째 주소인,
컨벌루션 연산을 위한 데이터 공유 방법. - 제1항에 있어서,
상기 로딩하는 단계는,
컨벌루션 연산이 수행될 출력 데이터에 대응하는 입력 데이터 중에서 이전 클락(clock)에서 로딩된 입력 데이터와 중복되는 입력 데이터를 제외한 나머지 입력 데이터를 로딩하는,
컨벌루션 연산을 위한 데이터 공유 방법. - 제1항에 있어서,
이전 클락(clock)에서 로딩된 입력 데이터 중에서 컨벌루션 연산이 수행될 출력 데이터에 대응하는 입력 데이터와 중복되는 입력 데이터를 제외한 나머지 입력 데이터에 할당된 주소를 플러싱(flushing)하는 단계를 더 포함하는,
컨벌루션 연산을 위한 데이터 공유 방법. - 제1항에 있어서,
상기 복수의 센더는 제1 센더와 제2 센더를 포함하고, 상기 제1 센더는 제1 출력 데이터에 대응하고 상기 제2 센더는 상기 제1 출력 데이터에 인접한 제2 출력 데이터에 대응하고, 제1 입력 데이터, 제2 입력 데이터, 제3 입력 데이터, 제4 입력 데이터, 제5 입력 데이터 및 제6 입력 데이터는 각각 상기 재사용 버퍼의 제1 주소, 제2 주소, 제3 주소, 제4 주소, 제5 주소 및 제6 주소에 저장되고,
상기 전송하는 단계는,
상기 제1 센더에 의해 상기 제1 입력 데이터, 상기 제2 입력 데이터, 상기 제3 입력 데이터 및 상기 제4 입력 데이터는 상기 처리기로 전송되고, 상기 제2 센더에 의해 상기 제3 입력 데이터, 상기 제4 입력 데이터, 상기 제5 입력 데이터 및 상기 제6 입력 데이터는 상기 처리기로 전송되는,
컨벌루션 연산을 위한 데이터 공유 방법. - 제3항에 있어서,
상기 복수의 센더는 제1 센더와 제2 센더를 포함하고,
이전 클락에서, 상기 제1 센더는 제1 출력 데이터에 대응하고 상기 제2 센더는 상기 제1 출력 데이터에 인접한 제2 출력 데이터에 대응하고, 로딩된 제1 입력 데이터, 제2 입력 데이터, 제3 입력 데이터, 제4 입력 데이터, 제5 입력 데이터 및 제6 입력 데이터는 각각 상기 재사용 버퍼의 제1 주소, 제2 주소, 제3 주소, 제4 주소, 제5 주소 및 제6 주소에 저장되고,
현재 클락에서, 상기 제1 센더는 제3 출력 데이터에 대응하고 상기 제2 센더는 상기 제3 출력 데이터에 인접한 제4 출력 데이터에 대응하고,
상기 로딩하는 단계는,
컨벌루션 연산이 수행될 상기 제3 출력 데이터 및 상기 제4 출력 데이터에 대응하는 상기 제5 입력 데이터, 상기 제6 입력 데이터, 제7 입력 데이터, 제8 입력 데이터, 제9 입력 데이터, 제10 입력 데이터 중에서 상기 이전 클락에서 로딩된 입력 데이터와 중복되는 상기 제5 입력 데이터 및 상기 제6 입력 데이터를 제외한 나머지 입력 데이터를 로딩하는,
컨벌루션 연산을 위한 데이터 공유 방법. - 제4항에 있어서,
상기 복수의 센더는 제1 센더와 제2 센더를 포함하고,
이전 클락에서, 상기 제1 센더는 제1 출력 데이터에 대응하고 상기 제2 센더는 상기 제1 출력 데이터에 인접한 제2 출력 데이터에 대응하고, 로딩된 제1 입력 데이터, 제2 입력 데이터, 제3 입력 데이터, 제4 입력 데이터, 제5 입력 데이터 및 제6 입력 데이터는 각각 상기 재사용 버퍼의 제1 주소, 제2 주소, 제3 주소, 제4 주소, 제5 주소 및 제6 주소에 저장되고,
현재 클락에서, 상기 제1 센더는 제3 출력 데이터에 대응하고 상기 제2 센더는 상기 제3 출력 데이터에 인접한 제4 출력 데이터에 대응하고,
상기 이전 클락에서 로딩된 입력 데이터 중에서 컨벌루션 연산이 수행될 상기 제3 출력 데이터 및 상기 제4 출력 데이터에 대응하는 입력 데이터와 중복되는 상기 제5 입력 데이터 및 상기 제6 입력 데이터를 제외한 상기 제1 입력 데이터, 상기 제2 입력 데이터, 상기 제3 입력 데이터 및 상기 제4 입력 데이터에 할당된 주소를 플러싱하는 단계를 더 포함하는,
컨벌루션 연산을 위한 데이터 공유 방법. - 로더(Loader), 복수의 센더(Sender), 버퍼 컨트롤러(Buffer Controller) 및 복수의 재사용 버퍼(Reuse Buffer)를 포함하는 페처(fetcher)의 데이터 공유 방법에 있어서, 상기 복수의 재사용 버퍼는 제1 재사용 버퍼 및 제2 재사용 버퍼를 포함하고,
상기 로더에 의해, 메모리(Memory)에 저장된 입력 특징 맵(input feature map)의 입력 데이터를 로딩 순서에 따라 로딩 단위로 로딩하는 단계;
상기 버퍼 컨트롤러에 의해, 상기 제1 재사용 버퍼 또는 상기 제2 재사용 버퍼의 주소를 상기 로딩 순서에 따라 상기 로딩된 입력 데이터에 순환적으로 할당하고, 상기 할당된 주소에 상기 로딩된 입력 데이터를 저장하는 단계; 및
상기 복수의 센더 각각에 의해, 상기 제1 재사용 버퍼 또는 상기 제2 재사용 버퍼에 저장된 입력 데이터 중에서 컨벌루션 연산의 출력 데이터 각각에 대응하는 입력 데이터를 처리기로 전송하는 단계를 포함하고,
상기 복수의 센더 각각에 의해 전송되는 각각의 입력 데이터의 일부는 서로 중복되는,
컨벌루션 연산을 위한 데이터 공유 방법. - 제8항에 있어서,
상기 로딩된 입력 데이터에 포함된 이전 입력 데이터와 현재 입력 데이터에 대하여, 상기 이전 입력 데이터에 할당된 주소가 상기 제1 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 제1 재사용 버퍼의 첫번째 주소이고,
상기 이전 입력 데이터에 할당된 주소가 상기 제2 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 제2 재사용 버퍼의 첫번째 주소인,
컨벌루션 연산을 위한 데이터 공유 방법. - 제8항에 있어서,
상기 로딩된 입력 데이터에 포함된 이전 입력 데이터와 현재 입력 데이터에 대하여, 상기 이전 입력 데이터에 할당된 주소가 상기 제1 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 제2 재사용 버퍼의 첫번째 주소이고,
상기 이전 입력 데이터에 할당된 주소가 상기 제2 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 제1 재사용 버퍼의 첫번째 주소인,
컨벌루션 연산을 위한 데이터 공유 방법. - 제8항에 있어서,
상기 로딩하는 단계는,
컨벌루션 연산이 수행될 출력 데이터에 대응하는 입력 데이터 중에서 이전 클락(clock)에서 로딩된 입력 데이터와 중복되는 입력 데이터를 제외한 나머지 입력 데이터를 로딩하는,
컨벌루션 연산을 위한 데이터 공유 방법. - 제8항에 있어서,
이전 클락(clock)에서 로딩된 입력 데이터 중에서 컨벌루션 연산이 수행될 출력 데이터에 대응하는 입력 데이터와 중복되는 입력 데이터를 제외한 나머지 입력 데이터에 할당된 주소를 플러싱(flushing)하는 단계를 더 포함하는,
컨벌루션 연산을 위한 데이터 공유 방법. - 하드웨어와 결합되어 제1항 내지 제12항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
- 로더(Loader);
복수의 센더(Sender);
버퍼 컨트롤러(Buffer Controller); 및
재사용 버퍼(Reuse Buffer)를 포함하고,
상기 로더는, 메모리(Memory)에 저장된 입력 특징 맵(input feature map)의 입력 데이터를 로딩 순서에 따라 로딩 단위로 로딩하고,
상기 버퍼 컨트롤러는, 상기 로딩된 입력 데이터를 상기 로딩 순서에 따라 순환적으로 할당된 주소의 상기 재사용 버퍼에 저장하고,
상기 복수의 센더(Sender) 각각은, 상기 재사용 버퍼에 저장된 입력 데이터 중에서 컨벌루션 연산의 출력 데이터 각각에 대응하는 입력 데이터를 처리기로 전송하고,
상기 복수의 센더 각각에 의해 전송되는 각각의 입력 데이터의 일부는 서로 중복되는,
페처. - 제14항에 있어서,
상기 로딩된 입력 데이터에 포함된 이전 입력 데이터와 현재 입력 데이터에 대하여, 상기 이전 입력 데이터에 할당된 주소가 상기 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 재사용 버퍼의 첫번째 주소인,
페처. - 제14항에 있어서,
상기 로더는, 컨벌루션 연산이 수행될 출력 데이터에 대응하는 입력 데이터 중에서 이전 클락(clock)에서 로딩된 입력 데이터와 중복되는 입력 데이터를 제외한 나머지 입력 데이터를 로딩하는,
페처. - 제14항에 있어서,
상기 버퍼 컨트롤러는, 이전 클락(clock)에서 로딩된 입력 데이터 중에서 컨벌루션 연산이 수행될 출력 데이터에 대응하는 입력 데이터와 중복되는 입력 데이터를 제외한 나머지 입력 데이터에 할당된 주소를 플러싱(flushing)하는,
페처. - 제14항에 있어서,
상기 복수의 센더는 제1 센더와 제2 센더를 포함하고, 상기 제1 센더는 제1 출력 데이터에 대응하고 상기 제2 센더는 상기 제1 출력 데이터에 인접한 제2 출력 데이터에 대응하고, 제1 입력 데이터, 제2 입력 데이터, 제3 입력 데이터, 제4 입력 데이터, 제5 입력 데이터 및 제6 입력 데이터는 각각 상기 재사용 버퍼의 제1 주소, 제2 주소, 제3 주소, 제4 주소, 제5 주소 및 제6 주소에 저장되고,
상기 제1 센더는, 상기 제1 입력 데이터, 상기 제2 입력 데이터, 상기 제3 입력 데이터 및 상기 제4 입력 데이터를 상기 처리기로 전송하고,
상기 제2 센더는, 상기 제3 입력 데이터, 상기 제4 입력 데이터, 상기 제5 입력 데이터 및 상기 제6 입력 데이터를 상기 처리기로 전송하는,
페처. - 제16항에 있어서,
상기 복수의 센더는 제1 센더와 제2 센더를 포함하고,
이전 클락에서, 상기 제1 센더는 제1 출력 데이터에 대응하고 상기 제2 센더는 상기 제1 출력 데이터에 인접한 제2 출력 데이터에 대응하고, 로딩된 제1 입력 데이터, 제2 입력 데이터, 제3 입력 데이터, 제4 입력 데이터, 제5 입력 데이터 및 제6 입력 데이터는 각각 상기 재사용 버퍼의 제1 주소, 제2 주소, 제3 주소, 제4 주소, 제5 주소 및 제6 주소에 저장되고,
현재 클락에서, 상기 제1 센더는 제3 출력 데이터에 대응하고 상기 제2 센더는 상기 제3 출력 데이터에 인접한 제4 출력 데이터에 대응하고,
상기 로더는,
컨벌루션 연산이 수행될 상기 제3 출력 데이터 및 상기 제4 출력 데이터에 대응하는 상기 제5 입력 데이터, 상기 제6 입력 데이터, 제7 입력 데이터, 제8 입력 데이터, 제9 입력 데이터, 제10 입력 데이터 중에서 상기 이전 클락에서 로딩된 입력 데이터와 중복되는 상기 제5 입력 데이터 및 상기 제6 입력 데이터를 제외한 나머지 입력 데이터를 로딩하는,
페처. - 제17항에 있어서,
상기 복수의 센더는 제1 센더와 제2 센더를 포함하고,
이전 클락에서, 상기 제1 센더는 제1 출력 데이터에 대응하고 상기 제2 센더는 상기 제1 출력 데이터에 인접한 제2 출력 데이터에 대응하고, 로딩된 제1 입력 데이터, 제2 입력 데이터, 제3 입력 데이터, 제4 입력 데이터, 제5 입력 데이터 및 제6 입력 데이터는 각각 상기 재사용 버퍼의 제1 주소, 제2 주소, 제3 주소, 제4 주소, 제5 주소 및 제6 주소에 저장되고,
현재 클락에서, 상기 제1 센더는 제3 출력 데이터에 대응하고 상기 제2 센더는 상기 제3 출력 데이터에 인접한 제4 출력 데이터에 대응하고,
상기 로더는,
상기 이전 클락에서 로딩된 입력 데이터 중에서 컨벌루션 연산이 수행될 상기 제3 출력 데이터 및 상기 제4 출력 데이터에 대응하는 입력 데이터와 중복되는 상기 제5 입력 데이터 및 상기 제6 입력 데이터를 제외한 상기 제1 입력 데이터, 상기 제2 입력 데이터, 상기 제3 입력 데이터 및 상기 제4 입력 데이터에 할당된 주소를 플러싱하는,
페처. - 로더(Loader);
복수의 센더(Sender);
버퍼 컨트롤러(Buffer Controller); 및
복수의 재사용 버퍼(Reuse Buffer)를 포함하고,
상기 복수의 재사용 버퍼는 제1 재사용 버퍼 및 제2 재사용 버퍼를 포함하고,
상기 로더는,
메모리(Memory)에 저장된 입력 특징 맵(input feature map)의 입력 데이터를 로딩 순서에 따라 로딩 단위로 로딩하고,
상기 버퍼 컨트롤러는, 상기 제1 재사용 버퍼 또는 상기 제2 재사용 버퍼의 주소를 상기 로딩 순서에 따라 상기 로딩된 입력 데이터에 순환적으로 할당하고, 상기 할당된 주소에 상기 로딩된 입력 데이터를 저장하고,
상기 복수의 센더 각각은, 상기 제1 재사용 버퍼 또는 상기 제2 재사용 버퍼에 저장된 입력 데이터 중에서 컨벌루션 연산의 출력 데이터 각각에 대응하는 입력 데이터를 처리기로 전송하고,
상기 복수의 센더 각각에 의해 전송되는 각각의 입력 데이터의 일부는 서로 중복되는,
페처. - 제21항에 있어서,
상기 로딩된 입력 데이터에 포함된 이전 입력 데이터와 현재 입력 데이터에 대하여, 상기 이전 입력 데이터에 할당된 주소가 상기 제1 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 제1 재사용 버퍼의 첫번째 주소이고,
상기 이전 입력 데이터에 할당된 주소가 상기 제2 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 제2 재사용 버퍼의 첫번째 주소인,
페처. - 제21항에 있어서,
상기 로딩된 입력 데이터에 포함된 이전 입력 데이터와 현재 입력 데이터에 대하여, 상기 이전 입력 데이터에 할당된 주소가 상기 제1 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 제2 재사용 버퍼의 첫번째 주소이고,
상기 이전 입력 데이터에 할당된 주소가 상기 제2 재사용 버퍼의 마지막 주소인 경우, 상기 현재 입력 데이터에 할당될 주소는 상기 제1 재사용 버퍼의 첫번째 주소인,
페처. - 제21항에 있어서,
상기 로더는,
컨벌루션 연산이 수행될 출력 데이터에 대응하는 입력 데이터 중에서 이전 클락(clock)에서 로딩된 입력 데이터와 중복되는 입력 데이터를 제외한 나머지 입력 데이터를 로딩하는,
페처. - 제21항에 있어서,
상기 버퍼 컨트롤러는,
이전 클락)에서 로딩된 입력 데이터 중에서 컨벌루션 연산이 수행될 출력 데이터에 대응하는 입력 데이터와 중복되는 입력 데이터를 제외한 나머지 입력 데이터에 할당된 주소를 플러싱하는,
페처. - 메모리(Memory);
페처(fetcher);
버퍼 컨트롤러(Buffer Controller);
처리기(Executer); 및
저장장치를 포함하고,
상기 페처는,
로더(Loader);
복수의 센더(Sender); 및
재사용 버퍼(Reuse Buffer)를 포함하고,
상기 로더는, 상기 메모리에 저장된 입력 특징 맵(input feature map)의 입력 데이터를 로딩 순서에 따라 로딩 단위로 로딩하고,
상기 버퍼 컨트롤러는, 상기 로딩 순서에 따라 순환적으로 상기 재사용 버퍼의 주소를 상기 로딩된 입력 데이터에 할당하고, 상기 할당된 주소에 상기 로딩된 입력 데이터를 저장하고,
상기 복수의 센더(Sender) 각각은, 상기 재사용 버퍼에 저장된 입력 데이터 중에서 컨벌루션 연산의 출력 데이터 각각에 대응하는 입력 데이터를 상기 처리기로 전송하고,
상기 복수의 센더 각각에 의해 전송되는 각각의 입력 데이터의 일부는 서로 중복되는,
컨벌루션 연산 장치. - 제26항에 있어서,
상기 처리기는,
상기 복수의 센더(Sender) 각각으로부터 수신한 입력 데이터에 대해 컨벌루션 연산을 수행하여 상기 복수의 센더 각각에 대응하는 출력 데이터를 출력하고 상기 저장장치에 저장하는,
컨벌루션 연산 장치.
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020200158952A KR102900552B1 (ko) | 2020-11-24 | 2020-11-24 | 컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치 |
| US17/317,339 US11971823B2 (en) | 2020-11-24 | 2021-05-11 | Computing method and device with data sharing |
| CN202110570492.8A CN114548358A (zh) | 2020-11-24 | 2021-05-25 | 计算方法和装置 |
| US18/618,355 US20240232091A1 (en) | 2020-11-24 | 2024-03-27 | Computing method and device with data sharing |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020200158952A KR102900552B1 (ko) | 2020-11-24 | 2020-11-24 | 컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20220071618A KR20220071618A (ko) | 2022-05-31 |
| KR102900552B1 true KR102900552B1 (ko) | 2025-12-16 |
Family
ID=81657074
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020200158952A Active KR102900552B1 (ko) | 2020-11-24 | 2020-11-24 | 컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US11971823B2 (ko) |
| KR (1) | KR102900552B1 (ko) |
| CN (1) | CN114548358A (ko) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102762454B1 (ko) * | 2022-12-16 | 2025-02-03 | 서울대학교산학협력단 | 차세대 고속 경량 객체인식 fpga npu 시스템을 위한 계산유닛, 버퍼 및 데이터 이동 최적화 방법론 |
| CN118378007B (zh) * | 2024-06-24 | 2024-09-17 | 安徽芯纪元科技有限公司 | 一种im2col转换方法及转换装置 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20180212894A1 (en) * | 2015-08-02 | 2018-07-26 | Wave Computing, Inc. | Fork transfer of data between multiple agents within a reconfigurable fabric |
| US20180285715A1 (en) | 2017-03-28 | 2018-10-04 | Samsung Electronics Co., Ltd. | Convolutional neural network (cnn) processing method and apparatus |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101478025B1 (ko) * | 2009-07-23 | 2015-01-06 | 삼성전자주식회사 | 무선 단말 및 그 단말에서의 데이터 통신 방법 |
| KR101713930B1 (ko) * | 2010-04-22 | 2017-03-09 | 삼성전자주식회사 | 휴대 단말기의 송신 장치 및 그의 운용 방법 |
| EP3098681B1 (en) * | 2015-05-27 | 2020-08-26 | Tata Consultancy Services Limited | Artificial intelligence based health management of host system |
| KR102631381B1 (ko) | 2016-11-07 | 2024-01-31 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
| CN108228081B (zh) * | 2016-12-21 | 2021-03-02 | 伊姆西Ip控股有限责任公司 | 用于数据保护的方法和设备 |
| KR20180123846A (ko) | 2017-05-10 | 2018-11-20 | 울산과학기술원 | 합성곱 신경망을 위한 논리적 3차원 구조의 재구성형 연산 가속기 |
| US10318889B2 (en) * | 2017-06-26 | 2019-06-11 | Konica Minolta Laboratory U.S.A., Inc. | Targeted data augmentation using neural style transfer |
| GB2568086B (en) * | 2017-11-03 | 2020-05-27 | Imagination Tech Ltd | Hardware implementation of convolution layer of deep neutral network |
| US20190220739A1 (en) * | 2018-01-16 | 2019-07-18 | Electronics And Telecommunications Research Institute | Neural network computing device and operation method thereof |
| US11436483B2 (en) * | 2018-01-17 | 2022-09-06 | Mediatek Inc. | Neural network engine with tile-based execution |
| US20190303757A1 (en) * | 2018-03-29 | 2019-10-03 | Mediatek Inc. | Weight skipping deep learning accelerator |
| US11783174B2 (en) | 2018-05-04 | 2023-10-10 | Apple Inc. | Splitting of input data for processing in neural network processor |
| CN109146072B (zh) | 2018-08-01 | 2021-03-23 | 上海天数智芯半导体有限公司 | 基于卷积神经网络加速器的数据重用方法 |
| US11176427B2 (en) | 2018-09-26 | 2021-11-16 | International Business Machines Corporation | Overlapping CNN cache reuse in high resolution and streaming-based deep learning inference engines |
| US12079592B2 (en) * | 2018-11-20 | 2024-09-03 | Samsung Electronics Co., Ltd. | Deep neural network accelerator including lookup table based bit-serial processing elements |
| US11620503B2 (en) * | 2020-03-18 | 2023-04-04 | Arm Limited | Neural network processing |
| US20220067498A1 (en) * | 2020-09-03 | 2022-03-03 | Samsung Electronics Co., Ltd. | Apparatus and method with neural network operation |
-
2020
- 2020-11-24 KR KR1020200158952A patent/KR102900552B1/ko active Active
-
2021
- 2021-05-11 US US17/317,339 patent/US11971823B2/en active Active
- 2021-05-25 CN CN202110570492.8A patent/CN114548358A/zh active Pending
-
2024
- 2024-03-27 US US18/618,355 patent/US20240232091A1/en active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20180212894A1 (en) * | 2015-08-02 | 2018-07-26 | Wave Computing, Inc. | Fork transfer of data between multiple agents within a reconfigurable fabric |
| US20180285715A1 (en) | 2017-03-28 | 2018-10-04 | Samsung Electronics Co., Ltd. | Convolutional neural network (cnn) processing method and apparatus |
Also Published As
| Publication number | Publication date |
|---|---|
| US11971823B2 (en) | 2024-04-30 |
| KR20220071618A (ko) | 2022-05-31 |
| US20240232091A1 (en) | 2024-07-11 |
| US20220164289A1 (en) | 2022-05-26 |
| CN114548358A (zh) | 2022-05-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11768911B2 (en) | Method and apparatus for execution of neural network | |
| KR102879261B1 (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
| US11675997B2 (en) | Device and method for processing convolution operation using kernel | |
| US20240311194A1 (en) | Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture | |
| US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
| US10846621B2 (en) | Fast context switching for computational networks | |
| CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
| EP3502975A1 (en) | Methods and apparatus for model parallelism in artificial neural networks | |
| CN114830135A (zh) | 算子的层次分区 | |
| CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
| KR102900552B1 (ko) | 컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치 | |
| KR20200031150A (ko) | 데이터 처리장치의 데이터 항목들 내의 성분들의 계수 | |
| KR102793525B1 (ko) | 컨벌루션 연산을 위한 데이터 전송 방법, 페처 및 컨벌루션 연산 장치 | |
| US20210089873A1 (en) | Apparatus and system for execution of neural network | |
| US20200117449A1 (en) | Accelerated Access to Computations Results Generated from Data Stored in Memory Devices | |
| KR20240175181A (ko) | 그래프 생성 방법, 상기 방법을 수행하는 전자 장치 및 태스크 셋을 할당하는 전자 장치 | |
| CN113743567B (zh) | 一种将深度学习模型部署到加速单元的方法 | |
| KR102416691B1 (ko) | 다중 객체 인식용 기계학습을 위한 다중 데이터셋 기반 학습 장치 및 방법 | |
| US20200167888A1 (en) | Monitoring apparatus and monitoring method | |
| KR20240044918A (ko) | Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법 | |
| US12147746B1 (en) | Method and system for verifying operation and data precision of hardware for artificial intelligence | |
| US11734225B2 (en) | Matrix tiling to accelerate computing in redundant matrices | |
| US20230214445A1 (en) | Electronic device and control method for electronic device | |
| US12175282B2 (en) | System, method, and apparatus for selecting a CPU or an accelerator to preprocess data based on monitored information | |
| US20250321965A1 (en) | Computing system, hardware accelerator device, and method for deep learning inference |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| A201 | Request for examination | ||
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| D22 | Grant of ip right intended |
Free format text: ST27 STATUS EVENT CODE: A-1-2-D10-D22-EXM-PE0701 (AS PROVIDED BY THE NATIONAL OFFICE) |
|
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| F11 | Ip right granted following substantive examination |
Free format text: ST27 STATUS EVENT CODE: A-2-4-F10-F11-EXM-PR0701 (AS PROVIDED BY THE NATIONAL OFFICE) |
|
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| U11 | Full renewal or maintenance fee paid |
Free format text: ST27 STATUS EVENT CODE: A-2-2-U10-U11-OTH-PR1002 (AS PROVIDED BY THE NATIONAL OFFICE) Year of fee payment: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| Q13 | Ip right document published |
Free format text: ST27 STATUS EVENT CODE: A-4-4-Q10-Q13-NAP-PG1601 (AS PROVIDED BY THE NATIONAL OFFICE) |