1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Kỹ thuật điện tử: Thiết kế cấu trúc phần cứng cho mạng nơron tích chập

70 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

PHҤM THӂ VINH

THIӂT Kӂ CҨU TRÚC PHҪN CӬNG CHO MҤNG 1ѪRON TÍCH CHҰP

Chuyên ngành: Kӻ thuұWĈLӋn Tӱ Mã sӕ: 60520203

LUҰ19Ă17+Ҥ&6Ƭ

TP HӖ &+Ë0,1+7+È1*1Ă0

Trang 2

3 Phҧn BiӋn 2: TiӃQ6ƭ1JX\ӉQ0LQK6ѫQ 4 Uӹ Viên: TiӃQ6ƭ7Uҫn Hoàng Linh

5 7Kѭ.ê7LӃQ6ƭ1JX\ӉQ/ê7KLrQ7Uѭӡng

Xác nhұn cӫa Chӫ tӏch HӝLÿӗQJÿiQKJLi/9 Yj 7Uѭӣng Khoa quҧn lý chuyên ngành sau khi luұQYăQÿmÿѭӧc sӳa chӳa (nӃu có)

Trang 3

ĈҤI HӐC QUӔC GIA TP.HCM CӜNG HÒA XÃ HӜI CHӪ 1*+Ƭ$9,ӊT NAM

NHIӊM VӨ LUҰ19Ă17+Ҥ&6Ƭ

Hӑ tên hӑc viên: Phҥm ThӃ Vinh MSHV: 1670849 1Jj\WKiQJQăPVLQK 07/04/1994 1ѫLVLQK TP.Hӗ Chí Minh Chuyên ngành: Kӻ thuұWĈLӋn Tӱ Mã sӕ: 60520203

,7Ç1Ĉӄ TÀI: THIӂT Kӂ CҨU TRÚC PHҪN CӬNG CHO

MҤ1*1Ѫ-RON TÍCH CHҰP

NHIӊM VӨ VÀ NӜI DUNG:

- Tìm hiӇu giҧi thuұt CNN, mô hình VGG16 - ThiӃt kӃ kiӃn trúc phҫn cӭng cho CNN - HiӋn thӵc cҩu trúc CNN trên FPGA

- Thӵc hiӋn ӭng dөng cҩX WU~F &11 WUrQ )3*$ ÿӇ nhұn dҥng cҧm xúc khuôn mһt

II NGÀY GIAO NHIӊM VӨ: *KLWKHRWURQJ4ĈJLDRÿӅ tài): 11/02/2019 III NGÀY HOÀN THÀNH NHIӊM VӨ: (GhLWKHRWURQJ4ĈJLDRÿӅ tài):

08/12/2019

IV CÁN BӜ +ѬӞNG DҮN (Ghi rõ hӑc hàm, hӑc vӏ, hӑ, tên):

TiӃn Sƭ 7UѭѫQJ4XDQJ9LQK

Trang 4

Lӡi cҧPѫQ HVTH: Phҥm ThӃ Vinh

LӠI CҦ0Ѫ1

(P[LQÿѭӧc gӱi lӡi cҧPѫQFKkQWKjQKÿӃn thҫ\7UѭѫQJ4XDQJ9LQKÿmKѭӟng dүQYjJL~Sÿӥ em trong suӕt quá trình thӵc hiӋQÿӅ WjLĈӗng thӡi gӱi lӡi cҧPѫQÿӃn ÿӗng sӵ ĈLQK9LӋt HҧLÿmÿӗng hành trong quá trình nghiên cӭu

Tp Hӗ Chí Minh, tháng QăP

Phҥm ThӃ Vinh

Trang 5

Tóm tҳt luұQYăQ HVTH: Phҥm ThӃ Vinh

TÓM TҲT LUҰ19Ă1

MҥQJ Qѫron tích chұp ( Convolutional Neural Network hay CNN ) là mӝt trong nhӳng thuұt toán mҥnh nhҩt hiӋn nay cho bài toán phân loҥi Tuy nhiên, nhӳng mҥQJQKѭ9**ÿzLKӓi rҩt nhiӅu sӭc mҥnh tính toán ӣ các lӟp tích chұS'RÿyFiFnhà nghiên cӭXÿmWҥo ra nhiӅu bӝ WăQJWӕFÿmÿѭӧc thiӃt kӃ nhҵm cҧi thiӋn tӕFÿӝ tính toán cӫa mҥng, tuy nhiên hҫu hӃWÿӅu sӱ dөng nhӳng phҫn cӭng FPGA mҥnh vӟi sӕ Oѭӧng tài nguyên phong phú tuy nhiên chi phí cao Trong nghiên cӭXQj\W{LÿӅ suҩt mӝt bӝ WăQJWӕc cho mҥng CNN mà cө thӇ là mҥng VGG16 trên phҫn cӭng FPGA chi phí thҩp vӟi sӕ Oѭӧng tài nguyên bӏ giӟi hҥQ'Rÿһc tính giӕng nhau giӳa các lӟp

mҥng trong VGG16, tôi thiӃt kӃ mӝt bӝ WăQJWӕc chuyên dөng vӟi các tham sӕ có thӇ tái thiӃt lұp bҵng phҫn mӅm Tôi tiӃQKjQKÿiQKgiá bӝ WăQJWӕFÿmWKLӃt kӃ vӟi mҥng 9**Yjÿҥt tӕFÿӝ 38.8 GOP/s ӣ tӕFÿӝ xung clock 150Mhz trên chip Cyclone V 6R&6DXÿyÿӇ ÿѭDO}LWăQJWӕc vào ӭng dөng thӵc tӃ, tôi tiӃn hành sӱ dөng lõi cho mӝt mҥng mà tôi tӵ xây dӵng nhҵm phân loҥi cҧm xúc khuôn mһt Mөc tiêu cӫa viӋc xây dӵng mô hình ӭng dөng này là thiӃt kӃ mӝt hӋ thӕng phân loҥLÿӝc lұp có khҧ QăQJWӵ vұn hành vӟi chi phí thҩSYjWLrXKDRtWQăQJOѭӧng

Trang 6

Abstract HVTH: Phҥm ThӃ Vinh

ABSTRACT

Convolutional Neural Network (CNN) is one of the most powerful algorithms available today However, networks like VGG require a lot of computational power in convolution layers So researchers have created many accelerators that are designed to improve the computing speed of the network, but most use powerful FPGA hardware with lots of resources, but costly In this study, We proposed an accelerator for CNN, specifically VGG16 on low-cost FPGA hardware, with a limited number of resources Due to the similarity between the network layers in VGG16, We designed a dedicated accelerator with parameters that can be reconfigured by software I evaluated the accelerator designed with the VGG16 network and reached 38.8 GOP / s at a clock speed of 150 MHz on the Cyclone V SoC chip Then, to get the core into practical applications, We used the core for a neural network, which built to classify facial emotions The goal of building this application model is to design an independent classification system that is able to operate on its own with low cost and low energy consumption

Trang 7

LӡLFDPÿRDQ HVTH: Phҥm ThӃ Vinh

LӠ,&$0Ĉ2$1

Tôi tên Phҥm ThӃ Vinh, là hӑc viên cao hӑc ngành Kӻ thuұWĈLӋn Tӱ tҥLWUѭӡng Ĉҥi hӑc Bách Khoa, thành phӕ Hӗ &Kt0LQK7{L[LQFDPÿRDQcông trình nghiên cӭu này là do chính tôi thӵc hiӋn Trong suӕt quá trình thӵc hiӋQÿӅ WjLQj\FiFWѭliӋu tham khҧo sӱ dөQJÿѭӧc trích dүn tӯ các nguӗn thӵc tӃ, uy tín và chҩWOѭӧng KӃt quҧ WKXÿѭӧc ÿѭӧc thӵc hiӋn mӝWFiFKÿӝc lұp và hoàn toàn trung thӵc

Tp Hӗ Chí Minh, WKiQJQăP

Phҥm ThӃ Vinh

Trang 8

6ѫĈӗ ThiӃt KӃ Lõi IP CNN Trong HӋ Thӕng Soc Cyclone V: 9

Input Buffer (IB): 11

Processing Engine (PE): 15

Output Buffer (OB): 18

Nguyên Lí HoҥWĈӝng CӫD/}L7ăQJ7ӕc: 24

Phҫn MӅm Trên Lõi Arm: 27

&+ѬѪ1*.ӂT QUҦ THӴC HIӊN 29

Trang 10

Danh sách hình vӁ HVTH: Phҥm ThӃ Vinh

DANH SÁCH HÌNH VӀ

Hình 3.7 Quá trình thӵc hiӋn tích chұp giӳa trӑng sӕ và box (input window) tӯ

Trang 11

Danh sách hình vӁ HVTH: Phҥm ThӃ Vinh Hình 4.5 cӱa sә WUѭӧt box màu xanh duy chuyӇn dӑc theo vùng nhӟ là box màu

Trang 12

Danh sách bҧng biӇu HVTH: Phҥm ThӃ Vinh

DANH SÁCH BҦNG BIӆU

Trang 13

&KѭѫQJ0ӣ Ĉҫu HVTH: Phҥm ThӃ Vinh

&+ѬѪ1* MӢ ĈҪU

1.1 Lý Do ChӑQĈӅ Tài:

MҥQJ Qѫron tích chұS ÿmSKiWWULӇn nhanh chóng và trӣ thành mӝt công cө quan trӑng trong ӭng dөng phân loҥLÿһc biӋWÿӕi vӟi các dӳ liӋu hình ҧnh và âm thanh Trong nhӳQJQăPJҫQÿk\QKiӅu mҥng CNN mҥnh mӁ ÿmÿѭӧFÿӅ xuҩt nhҵm cҧi thiӋQÿӝ FKtQK[iFQKѭ$OH[QHW>@9**>@,QFHSWLRQ>@«FiFSKѭѫQJSKiSdӵa trên mҥng VGG là mӝWKѭӟng tiӃp cұn phә biӃn trong các ӭng dөQJQKѭSKkQloài cây [4], phân loҥi hoa [5], phân loҥi cҧm xúc khuôn mһW>@«7X\QKLrQPҥng 9**ÿzLKӓi rҩt nhiӅu khҧ QăQJWtQKWRiQFҫQÿӃQ*23ÿӇ xӱ lý chӍ 1 ҧnh 244x244 5*%ĈLӅu này dүn ÿӃQÿӝ trӉ lӟn khi hiӋn thӵc mҥng trên phҫn mӅm NhiӅu phҫn cӭQJÿmÿѭӧFÿӅ xuҩt sӱ dөng dӵa trên GPU, FPGA, ASIC [7-10] nhҵm giҧi quyӃt vҩQÿӅ vӅ khҧ QăQJWtQKWRiQ7URQJÿyFiFQӅn tҧQJWăQJWӕc dӵDWUrQ)3*$ѭXWKӃ KѫQVRYӟi các nӅn tҧng khác vì lӧi thӃ có thӇ tái lұp trình và hiӋu quҧ vӅ mһWQăQJOѭӧng

Thӵc tӃ cho thҩ\KѫQFiFSKpSWtQKFӫa CNN nҵm ӣ lӟp tích chұp [9] trong khi lӟp fully-connected lҥLWLrXWѫQQKLӅu bӝ nhӟ Lҩy ví dө, VGG16 cҫn 30.69 GOP cho tҩt cҧ 13 lӟp tích chұSGRÿyFҫQÿӃQKѫQ0%NK{QJJLDQEӝ nhӟ ÿӇ OѭXWҩt cҧ các tham sӕ (ӣ dҥng sӕ float ĈLӅXÿyGүn tӟi viӋc các tác giҧ tұp trung cҧi thiӋn khҧ QăQJWtQKWRiQEҵng viӋc áp dөng các kӻ thuұWQKѭ:LQRJUDG>@))7>@loop optimization [8-@VWRFKDVWLF>@«1Kӳng nghiên cӭXQj\ÿҥWÿѭӧc hiӋXQăQJrҩWFDRQKѭQJNK{QJOjPJLҧPÿLÿӝ chính xác cӫa mҥng Bên cҥnh tính hiӋu quҧ cӫa thuұt toán thì viӋc sӱ dөng chip FPGA cao cҩp và mҥQKFNJQJOjPӝt lí do quan trӑng trong kӃt quҧ ÿҥWÿѭӧc DRÿyEjLWRiQWUӣ nên phӭc tҥSKѫQNKLKLӋn thӵc mӝt mҥng FyNtFKWKѭӟc lӟQQKѭ9**[Xӕng chip FPGA chi phí thҩp

Trong nghiên cӭXQj\W{LÿӅ xuҩt mӝt bӝ WăQg tӕc có thӇ ÿѭӧc tái thiӃt lұp cҩu hình hoҥWÿӝQJYjWѭѫQJWKtFKYӟi các lӟp tích chұp cӫa mҥng VGG và có thӇ chҥy trên chip FPGA chi phí thҩp là Intel Cyclone V SoC Bӝ WăQJWӕc này nҵm trong mӝt hӋ thӕQJNK{QJÿӗng nhҩt (heterogeneous system), hӋ thӕng này bao gӗm mӝt vi xӱ lý ARM và thành phҫn FPGA Trong khi bӝ YLÿLӅu khiӇn có trách nhiӋm thiӃt lұp

Trang 14

&KѭѫQJ0ӣ Ĉҫu HVTH: Phҥm ThӃ Vinh các tham sӕ cho tӯng lӟp tích chұp và chuҭn bӏ các dӳ liӋu cho phҫn FPGA Thành phҫn FPGA thӵc hiӋn tҩt cҧ các hoҥWÿӝng còn lҥi QKѭOj]HURSadding, tích chұp, PD[SRROLQJYjDFWLYDWLRQ+ѫQQӱa, bҵng viӋt tӕLѭXPLOWL-port cӫa bӝ ÿLӅu khiӇn 6'5$0W{LÿҥWÿѭӧc bang thông bӝ nhӟ FDRKѫQOrQWӟL*%V'RÿyKӋ thӕng cӫDW{LÿҥWÿѭӧc hiӋXQăQJOj*23VFKRFiFOӟp tích chұp cӫa mҥng VGG16 vӟi tҫn sӕ hoҥWÿӝQJOj0+]FNJQJQKѭVӱ dөng tài nguyên hӋ thӕng hiӋu quҧ KѫQVRvӟi các nghiên cӭXWUѭӟFÿk\

Phҫn tiӃp theo cӫa luұQYăQWURQJFKѭѫQJ tôi sӁ trình bày tәng quan mҥng Qѫron tích chұp, mҥng VGG, các kӻ thuұt tӕWѭX YzQJ Oһp và giӟi thiӋu vӅ board DE10-Standard vӟi chip Cyclone V cӫa Intel bên trong Tôi mô tҧ thiӃt kӃ hӋ thӕng cӫa mình ӣ FKѭѫQJ và nguyên lý hoҥWÿӝng ӣ FKѭѫQJ4 &KѭѫQJWUuQKEj\FiF kӃt quҧ thӱ nghiӋm vӟi bӝ WăQJWӕc và phân tích &KѭѫQJWUuQKEj\YLӋc ӭng dөng O}LWăQJWӕc cho bài toán phân loҥi cҧm xúc khuôn mһt Cuӕi cùng là kӃt luұn cӫDÿӅ ÿѭӧFWUuQKEj\WURQJFKѭѫQJ

1.2 Mөc Tiêu Và NhiӋm Vө Cӫa LuұQ9ăQ:

Các kiӃn thӭc và kӃt quҧ cҫQÿҥWÿѭӧc ӣ ÿӅ tài này là: x Tìm hiӇu giҧi thuұt CNN, mô hình VGG16 x ThiӃt kӃ kiӃn trúc phҫn cӭng cho CNN x HiӋn thӵc cҩu trúc CNN trên FPGA

x Thӵc hiӋn ӭng dөng cҩXWU~F&11WUrQ)3*$ÿӇ nhұn dҥng cҧm xúc khuôn mһt

Trang 15

&KѭѫQJ7әng Quan HVTH: Phҥm ThӃ Vinh

&+ѬѪ1* TӘNG QUAN

Mҥng VGG16:

MҥQJ9**ÿѭӧc giӟi thiӋu bӣi Simonyan cùng các cӝng sӵ [2] trong cuӝc thi Image-Net LargeScale Vision Recognition Challenge (ILSVRC) diӉQ UD YjR QăP2014 Mҥng cӫa hӑ ÿҥt top-5 error là 7.32%, chӍ thua sau quán quân cӫa cuӝFWKLQăPÿyOj*RRJOH1HW>@Yӟi top-5 error là 6.67% Mһc dù mҥng VGG chӭa sӕ Oѭӧng tham sӕ rҩt lӟQQKѭQJFҩu trúc lҥLÿѫQJLҧQKѫQUҩt nhiӅu so vӟi GoogleNet Trong hình 2.1, mҥng VGG là mӝt chuӛi các lӟp tích chұp và các lӟp dense Mӛi lӟp tích chұp dùng bӝ lӑc rҩt nhӓ FyNtFKWKѭӟc là 3x3 Stride và padGLQJÿӅu có giá trӏ cӕ ÿӏnh là 1 nhҵm giӳ lҥi nhiӅu thông tin giӳDFiFNrQKFNJQJQKѭNtFKWKѭӟc cӫa ngõ ra sau khi thӵc hiӋn tích chұS6DXÿy KjPDFWLYDWLRQ là RELU (rectified linear unit) ÿѭӧFGQJÿӇ WăQJWtQKSKLWX\Ӄn cӫa mҥng Công thӭc cӫD5(/8QKѭsau: (1)

RELU (x) = max(0,x) (1)

Max-SRROLQJVDXÿyÿѭӧFGQJÿӇ giҧm mүu, mӝt cӱa sә ÿѭӧFWUѭӧt trên mӛi vùng ҧQKFyNtFKWKѭӟc 2x2 vӟi stride OjĈLӇm ҧnh có giá trӏ cao nhҩt trong cӱa sә sҿ ÿѭӧc chӑn làm giá trӏ ngõ ra Sau NKLSRROLQJNtFKWKѭӟc ngõ ra cӫa feature maps ÿѭӧc giҧPÿLPӝt nӳa so vӟi input feature maps

CONV 0 MAXPOOLING

CONV N

Hình 2.1 VGG like neural network

Ta có thӇ thҩy rҵng mӛi lӟp tích chұp có cùng các thông sӕ giӕQJ QKDX QKѭ OjcQJNtFKWKѭӟc bӝ lӑc 3x3, stride và padding number và activation theo sau phép chұp Có 5 tham sӕ WKD\ÿәi dӑc theo các lӟp CONV trong mҥng VGG là input size, output size, sӕ Oѭӧng input feature map, sӕ Oѭӧng output feature map và có max pooling hay không, chi tiӃt trong bҧng 2.WURQJÿyLQSXWVL]HYjRXWSXWVL]HOjNtFKWKѭӟc cӫa input và output feature maps, Nimap và Nomap là sӕ Oѭӧng input và output

Trang 16

&KѭѫQJ7әng Quan HVTH: Phҥm ThӃ Vinh feature maps Mӛi lӟp CONV theo sau là mӝt lӟSPD[SRROLQJÿѭӧFÿiQKGҩu là 1 trong cӝt max pooling Do ÿyW{LÿmÿӅ xuҩt mӝt bӝ WăQJWӕc dӵa trên lӟp mҥng có thӇ tái thiӃt lұp cho mҥQJ9**WURQJÿyQyFyWKӇ thӵc hiӋQPD[SRROLQJQKѭPӝt tùy chӑQYjÿLӅu chӍnh các tham sӕ NKiFÿӇ thӵc hiӋn các lӟp CONV khác nhau trong mҥng VGG

Bҧng 2.1 Các thiӃt lұp cho các lӟp khác nhau cӫa mҥng VGG16

ܱܷܶ݅ ൌ σܰ݅݊ܫ݆ܰٔ ܩ݅ǡ݆൅ ܤ݅

7KHRQKѭY Ma FQJFiFÿӗng sӵ trong nghiên cӭu [9] thì có bӕn cҩSÿӝ vòng lһp trong lӟp tích chұSQKѭKuQK7URQJÿy1LIYj1RIWѭѫQJӭng biӇu diӉn cho sӕ Oѭӧng cӫa input feature maps và output feature maps Hӑ cNJQJÿӗng thӡi nghiên cӭu mӝt các kӻ Oѭӥng các kӻ thuұt tӕLѭXYzQJOһSÿmÿѭӧc hiӋn thӵc trong các nghiên cӭXWUѭӟFÿk\>± 18] Các kӻ thuұt này là sӵ kӃt hӧp cӫa viӋc áp dөng kӻ thuұt unrolling vào các lӟp khác nhau, cө thӇ QKѭVDX

1 Type A: unroll loop-1, loop-2, loop-4

Trang 17

&KѭѫQJ7әng Quan HVTH: Phҥm ThӃ Vinh 2 Type B: unroll loop-2,loop-4

3 Type C: unroll loop-1, loop-3 4 Type D: unroll loop-3, loop-4

Input feature map

output feature map

Loop 4

Loop 3Loop 2Loop 1

Hình 2.2 Bӕn loҥi vòng lһp trong CNN.

Phân tích cӫa hӑ cho thҩy rҵng loҥi D (unroll loop-3, loop- FyѭXWKӃ KѫQVRYӟi các loҥi khác bӣi vì nó có khҧ QăQJWiLVӱ dөng lҥi dӳ liӋu cho cҧ input và weight 7KrPYjRÿyORҥi D còn cho phép tính toán song song tӕWKѫQ'RÿyW{LTX\ӃWÿӏnh sӱ dөQJKѭӟng tiӃp cұn loҥi D cho viӋc hiӋn thӵc bӝ Wăng tӕFÿӗng thӡi cҧi tiӃn thêm nhҵm tӕLÿDKyDNKҧ QăQJFӫa toàn hӋ thӕng

DE10 Standard Board:

DE10 là mӝt board FPGA SoC dӵa trên dòng chip chi phí thҩp cӫa Altera là Cyclone V SoC (hình 2.3) Chip Cyclone V bao gӗm 2 thành phҫQÿѭӧc chia ra bӣi ÿѭӡng kҿ PjXÿӓ Phҫn bên trái là Hard Processing System (HPS) bao gӗm lõi vi xӱ lý cӭng ARM, bӝ ÿLӅu khiӇn EMAC, bӝ ÿLӅu khiӇQ6'5$0«WURQJNKLSKҫn bên phҧLOj)3*$ÿѭӧFGXQJÿӇ xây dӵng các phҫn cӭng tùy chӍnh Hai thành phҫn này hoҥWÿӝng trên nhӳQJEXVNKiFQKDXGRÿyPӝt cҫX$;,ÿѭӧFGXQJÿӇ giao tiӃp giӳa HPS logic và khӕL)3*$7KrPYjRÿyFҫu AXI cung cҩp mӝt giao tiӃp gӑi là FPGA-to-+366'5$0WK{QJTXDÿyQJѭӡi dung có thӇ truy cұp trӵc tiӃp vào bӝ ÿLӅu khiӇn SDRAM tӯ phía FPGA mà không cҫn thông qua hӋ thӕng AXI cӫa HPS Giao tiӃp này cho phép tӕLÿDWӟi 4 Avalon MM read ports và 4 Avalon MM write ports, tәng ÿӝ rӝng dӳ liӋu là 256 bit Lӧi ích này có thӇ WăQJEDQJWK{QJFӫa bӝ nhӟ ngoài lên

Trang 18

&KѭѫQJ7әng Quan HVTH: Phҥm ThӃ Vinh tӟi 4.6GB/s Tài nguyên sҹn có trên chip CycORQH96R&)3*$ÿѭӧc thӇ hiӋn trong bҧng 2.2

ARM EMACController

AXI Bridge

1GB DDR3Micro sd card

On chipOff chip

Hình 2.3 Cҩu trúc chung cӫa hӋ thӕng Cyclone V SoC

Bҧng 2.2 Tài nguyên có sҹn trên chip Intel SoC FPGA Cyclone V

Resource Available

On chip memory (Kb)

5570

Trang 19

Input buffer

Output bufferregister

Avalon MM interface

Control busData busProcessing Engine

AXI Bridge

Hình 3.1 KiӃn trúc chung cӫa bӝ WăQJWӕc VGG.

Quy trình cho viӋc dӵ ÿRiQÿѭӧc mô tҧ trong hình 3.2WURQJÿy1OjVӕ Oѭӧng lӟp &2197DFNJQJFyWKӇ thҩy trong hình 3.2 là bӝ WăQJWӕc chӍ có thӇ hiӋn thӵc mӝt lӟp tҥi mӝt thӡLÿLӇPGRÿyFKѭѫQJWUuQKFKҥy trên ARM cҫn phҧi tái thiӃt lұp lҥi các tham sӕ cho các lӟp phía sau sau khi bӝ WăQJWӕc kӃt thúc tính toán cho lӟp hiӋn tҥi Giҧ sӱ rҵng hoҥWÿӝng thiӃt lұp các tham sӕ cҫn vài chu kǤ Pi\ÿӇ chuyӇn dӳ liӋu ÿLӅu khiӇn tӯ ARM xuӕng thanh ghi KӃt quҧ là thӡi gian bӏ chiӃm bӣi viӋc xӱ lý trên phҫn mӅPOjNK{QJÿiQJNӇ

Trang 20

&KѭѫQJ7KLӃt KӃ HӋ Thӕng HVTH: Phҥm ThӃ Vinh Data

Parameter configuration

Start the

N loopsRGB image

Hình 3.2 Trình tӵ hoҥWÿӝng cӫDYLÿLӅu khiӇn và bӝ WăQJWӕc

6ѫĈӗ ThiӃt KӃ Lõi IP CNN Trong HӋ Thӕng Soc Cyclone V:

Hình 3.3 mô tҧ chi tiӃt kiӃn trúc toàn hӋ thӕQJ6R&7URQJÿyKӋ thӕQJÿѭӧc chia thành hai thành phҫn chính là HPS và FPGA, hai thành phҫn này giao tiӃp vӟi nhau qua 3 cҫu AXI: HPS_to_FPGA; Lightweight HPS_to_FPGA và

Lightweight HPS_to_FPGABridge

M/S: Master/ slave AXI interface

M/S: Master/Slave Avalon MM interfaceSrc(src_alp)/ sink: soure/sink Avalon ST interface

IP core

Hình 3.3 Chi tiӃt kiӃn trúc hӋ thӕng

Hình 3.4 mô tҧ khӕi Top level cӫa lõi CNN, các luӗng dӳ liӋXYjRYjUDÿӅu dùng giao tiӃS$YDORQ7URQJÿy

x Giao tiӃp Avalon slave : nhұn các tín hiӋu ÿLӅn khiӇn thanh ghi tӯ vi xӱ lý x Giao tiӃp Avalon read/write master (slave): truyӅn/ nhұn dӳ liӋu (input feature

PDSZHLJKWELDV &yFiFKJKLÿӑc dӳ liӋu tӯ CNN core:

Trang 21

&KѭѫQJ7KLӃt KӃ HӋ Thӕng HVTH: Phҥm ThӃ Vinh o Dùng vi xӱ Oê$50ÿӇ truyӅn/ nhұn dӳ liӋu tӕFÿӝ cao thông qua cҩu

[31:0]Avalon slave inteface

rmaster_readdatavalidrmaster_waitrequestrmaster_burstcount[7:0]Avalon read master

interface

Avalon write master interface

Hình 3.4 6ѫÿӗ Top-level lõi CNN

Bên trong cӫa top module là các khӕi con khác (hình 3.5), mӛi khӕLFRQÿҧm nhұn nhӳng chӭFQăQJNKiFQKDXWURQJTXiWUuQK[ӱ lý các lӟp tích chұS6DXÿk\OjVѫOѭӧc chӭFQăQJFӫa tӯng module này:

x Giao tiӃS$YDORQ PDVWHUVODYH ÿLӅu khiӇn các tín hiӋu giao tiӃp Avalon.x Input buffer: bӝ ÿӋm chӭa dӳ liӋu input IHDWXUHPDSZHLJKWELDVÿӗng thӡi

ÿLӅu khiӇn truyӅn dӳ liӋu vào bӝ Processing Engine

x Processing engine: bӝ tính toán, bao gӗm 32 bӝ PU, mӝi bӝ PU gӗm 4 bӝ PE, mӛi PE là mӝt bӝ accumulator (nhân và cӝng dӗn)

x Output buffer: bӝ ÿӋm dӳ liӋu ngõ ra tӯ Processing Engine

Trang 22

&KѭѫQJ7KLӃt KӃ HӋ Thӕng HVTH: Phҥm ThӃ Vinh

PUAvalon MM

Read Masterinterface

Input buffer

Processing engine

Output buffer

Avalon MM Write Masterinterface

Avalon MM slaveinterface

Control busData bus

FromAvalon slave

FromAvalon slave

Avalon master module

Hình 3.5 6ѫÿӗ khӕi các module cӫa lõi CNN

Input Buffer (IB):

IB OѭXWUӳ dӳ liӋu hình ҧnh, bias và trӑng sӕ ÿӑc tӯ bӝ nhӟ ngoҥi (hình 3.6) IB FNJQJWKӵc hiӋn viӋc zero padding cho input feature map, công viӋFQj\WKѭӡQJÿѭӧc thӵc hiӋn bҵng phҫn mӅP,PHPZPHPEPHPÿyQJYDLWUzOjPRQFKLSEXIIHUQKҵm OѭXLQSXWIHDWXUe map, trӑng sӕ YjELDV,%ÿѭӧc tҥo tӯ bӝ nhӟ RAM 2 port (2-PORT RAM) vӟLÿӝ rӝng dӳ liӋXÿӑc và ghi khác nhau Tôi thiӃt lұp cho port ghi dӳ liӋu tӟi 256 bit nhҵPWѭѫQJWKtFKYӟLSRUWÿӑc Avalon MM ÿmWKҧo luұn trong phҫn 2.3 Khӕi Data Router nhұn dӳ liӋu tӯ buffer và sҳp xӃp lҥLWUѭӟc khi nҥp vào khӕi xӱ lý trung tâm Processing Engine

Input map

Weight map

Bias map

Zero padding

External memory

Hình 3.6 ThiӃt kӃ Input Buffer

Trang 23

&KѭѫQJ7KLӃt KӃ HӋ Thӕng HVTH: Phҥm ThӃ Vinh &y1ZPHPVOѭXWUӳ N các kernel map khác nhau trong lӟp CONV Mӛi kernel thӵc hiӋn tính tích chұp vӟi input feature map và sӁ trҧ lҥi kӃt quҧ là output feature PDSWѭѫQJӭQJ'RÿyEӝ WăQJWӕc cҫn Nof/N vòng nhҵm tҥo ra kӃt quҧ hoàn chӍnh .tFKWKѭӟc cӫa tӯQJZPHPÿѭӧc tính trong công thӭF  WURQJÿyVӕ PREC là sӕ byte biӇu diӉn trӑng sӕ và dӳ liӋu, Nif_max là giá trӏ tӕLÿDWURQJFiFJLiWUӏ Nif cӫa tҩt cҧ các lӟp CONV trong mҥng

Swmem = PREC*9*Nif_max (3)

Các sӕ bias cӫa cӫa các lӟp CONV chiӃm mӝt tӍ lӋ rҩt nhӓ trong tәng sӕ các tham sӕGRÿyFiFJLiWUӏ bias ÿѭӧFÿӑc mӝt lҫn duy nhҩt khi bҳWÿҫXOѭXWURQJEPHPWiLsӱ dөQJYjÿѭӧc hӫy sau khi kӃWWK~FTXiWUuQKWăQJWӕF&NJQJQKѭYӟi wmem, kích WKѭӟc cӫDEPHPÿѭӧc mô tҧ trong công thӭF  WURQJÿy1RIBPmOjJLiWUӏ lӟn nhҩt giӳa các Nof cӫa tҩt cҧ các lӟp CONV trong mҥng

Sbmem = PREC*Nof_max (4)

Bӣi vì giӟi hҥn cӫa bӝ nhӟ WUrQFKLSFiFLQSXWIHDWXUHPDSÿѭӧc chia ra thành các hӝSPjXQKѭP{Wҧ trong hình 3.7 Mӛi hӝp chӭa 2 dòng cӫa mӛi input feature map YjÿѭӧFOѭXWURQJLPHP'RÿyNK{QJJLDQOѭXWUӳ cҫn thiӃt cӫDLPHPÿѭӧc mô tҧ trong công thӭF  WURQJÿy6LQ OjNtFKWKѭӟc cӫa các input feature map có dҥng vuông.

Simem = PREC*2*Sin*Nif_max (5)

Sӵ kӃt hӧp cӫa 2 imems tҥo thành cӱa sә ngõ vào (hình 3.7 FyNtFKWKѭӟc 4x4 Cӱa sә này sҿ di chuyӇn dӑc theo tҩt cҧ input feature map dӑc theo trөc z và thӵc hiӋn tính tích chұp vӟi trӑng sӕ nhҵm tҥo ra các map tҥm Nif NhӳQJPDSQj\ÿѭӧc cӝng lҥi cùng nhau và vӟLPDSELDVÿӇ tҥRUDRXWSXWIHDWXUHPDSNtFKWKѭӟF[6DXÿycӱa sә di chuyӇn dӑc theo trөc x vӟLEѭӟc nhҧy là 2 và lһp lҥi quá trình nhҵm tҥo ra nhӳQJRXWSXWIHDWXUHPDSNtFKWKѭӟc 2x2 khác.

Trang 24

Input feature mapSin

6ѫÿӗ khӕi cӫD,QSXW%XIIHUÿѭӧc mô tҧ chi tiӃWQKѭKuQK

DATA ROUTER

Input dataweight

To Processing engineData signal

From Avalon read control

ControlControl signal

From/toAvalon read control

Control signalFromRegister

Control busData bus

Hình 3.8 6ѫÿӗ khӕi Input Buffer

imem : bӝ nhӟ chӭa input feature map, sӱ dөng 2-PORT RAM cӫa Altera, trong

ÿySRUWZULWHFyEӝ rӝQJGDWDEXVOjSRUWUHDGGDWDFyÿӝ rӝng bus là 64 Trong

Trang 25

&KѭѫQJ7KLӃt KӃ HӋ Thӕng HVTH: Phҥm ThӃ Vinh mӝt lҫn khӕi Processing Engine tính toán thì cҫQÿӑc cùng lúc 2 imem, imem thӭ 3 OjYQJÿӋm cӫa lҫn xӱ lý kӃ tiӃSÿӇ WăQJKLӋu suҩWWtQKWRiQ4XiWUuQKÿӑc các imem theo máy trҥQJWKiL KuQK WURQJÿy6ÿӑc 2 imem0 và imem1, S1ÿӑc imem1 YjLPHP6ÿӑc imem2 và imem0 Mӛi lҫn chuyӇn trҥng thái giӳa các trҥng thái S_x thì imem thӭ nhҩt (imem0) bӏ clear (ví dө trҥng thái S0 chuyӇn sang trҥng thái S1 thì imem0 bӏ clear) và sҹn sàng ghi vào dӳ liӋu kӃ tiӃp Sau khi xӱ lý xong tҩt cҧ các input feature map thì các trҥng thái S_x trӣ vӅ trҥng thái reset

Hình 3.9 Máy trҥng thái Input Buffer

wmem: bӝ nhӟ chӭa các trӑng sӕ weights, sӱ dөng 2-PORT RAM cӫa Altera,

WURQJÿySRUWZULWHFyEӝ rӝQJGDWDEXVOjSRUWUHDGGDWDFyÿӝ rӝng bus là 144 (16 bit/pixel x 9 weights) TronJÿyFyEӝ ÿӋPFRQÿӇ OѭXNHUQHONKiFQKDXcӫa weights

bmem: bӝ nhӟ chӭa các giá trӏ bias, sӱ dөng 2-PORT RAM cӫD$OWHUDWURQJÿy

port write có bӝ rӝQJGDWDEXVOjSRUWUHDGGDWDFyÿӝ rӝng bus là 256

Data router: có chӭF QăQJ Vҳp xӃp các daWD ÿӑc tӯ bӝ ÿӋm và di chuyӇQ ÿӃn

Processing Engine

Chi tiӃWNtFKWKѭӟc cӫa input buffer trong thiӃt kӃ QKѭVDX

Swmem = PREC*9*Nif_max = 16*9*512 = 73728 bit (9 KB)

Trang 26

&KѭѫQJ7KLӃt KӃ HӋ Thӕng HVTH: Phҥm ThӃ Vinh

Sbmem = PREC*Nof_max = 16*512 = 8192 bit (1 KB)

Simem = PREC*2*Sin*Nif_max = 16*2*224*512 = 3670016 bit (448 KB)

Buffer size = Swmem + Sbmem + Simem = 458 KB

Processing Engine (PE):

Hình 3.10 mô tҧ cách các vòng lһp hoҥWÿӝng trong lӟp tích chұp Các vòng lһp Qj\ÿѭӧc chia thành 4 loҥi dӵa theo cҩSÿӝ vòng lһp tӯ cao xuӕng thҩp

input feature map

output feature map

Kernel maps

Loop-4 ĚҸĐƚŚĞŽŽƵƚƉƵƚĨĞĂƚƵƌĞŵĂƉĐӆĂNof

Loop-3 ƋƵĠƚƚƌŽŶŐŵҾƚŝŶƉƵƚĨĞĂƚƵƌĞŵĂƉĚҸĐƚŚĞŽNix x Niy

Loop-2 ĚҸĐƚŚĞŽŝŶƉƵƚĨĞĂƚƵƌĞŵĂƉĐӆĂNif

Loop-1 ƚşŶŚŶŚąŶǀăĐҾŶŐŐҾƉƚƌŽŶŐŵҾƚŬĞƌŶĞůĐӆĂ Nkx x Nky

Hình 3.10 Mô tҧ và phân loҥi các vòng lһp trong lӟp chұp

Processing engine (PEn) là mӝt trong các thành phҫn quan trӑng nhҩt trong bӝ WăQJWӕc ChӭFQăQJFӫa PE là thӵc hiӋn tính tích chұp giӳa input feature map và trӑng sӕ VDXÿyWUҧ vӅ output feature map Trong hình 3.11, tôi thiӃt kӃ PE chuyên dөng cho các lӟp tích chұp cӫa mҥng VGG16 Tuy nhiên, cҩu trúc này có thӇ áp dөng cho các mҥng khác dӵa trên mҥng VGG16 bҵng viӋc lӵa chӑn sӕ Oѭӧng cӫa các MACs (Multiplier and Accumulator unit) Bӣi vì thiӃt kӃ cӫa tôi dӵa trên kӻ thuұt tӕLѭXvòng lһp loҥL'QKѭÿmÿӅ cұp ӣ phҫQWUrQW{Lÿӏnh ra 2 biӃn là Cxy và Cof biӇu thӏ sӕ Oѭӧng tính toán song song cho vòng lһp 3 và vòng lһSĈӇ tѭѫQJWKtFKYӟi Input

Trang 27

&KѭѫQJ7KLӃt KӃ HӋ Thӕng HVTH: Phҥm ThӃ Vinh %&[\ÿѭӧc cӕ ÿӏQKOjYj&RIÿѭӧc tính toán tùy thuӝc vào Nof nhӓ nhҩt và tài nguyên có sҹn cӫa FPGA Tәng sӕ 0$&ÿѭӧc tính bҵng công thӭc (6)

num_macs = Cxy x Cof = 4*Cof (6)

KhӕLQj\ÿѭӧc thiӃt kӃ dӵa trên kiӇu thiӃt kӃ pipeline Mҩt tҩt cҧ (9xNif +1) chu kǤ Pi\ÿӇ thӵc hiӋn tích chұp và thêm 2 chu kǤ nӳa cho các hoҥWÿӝQJNKiF QKѭ5(/8YjPD[SRROLQJÿӇ tҥRFiFSL[HOÿҫXUDQXPBPDFV'RÿyWәng thӡLJLDQÿӇ xӱ lý mӝt lӟS&219ÿѭӧc tính bҵng công thӭF 

Ngày đăng: 04/08/2024, 23:58