Inflearn Community Q&A
Design Self-Study Tastebi's Practical FPGA-Based HW Accelerator Design (From LED Control to Fully Connected Layer Accelerator Design)
[FPGA Chapter 10] Uploading a basic FSM core IDLE -> RUN -> DONE module to FPGA, implementing a HW Sleep function (Learning PS <-> PL communication method 2) - Practical Guide
bram에 관련해서 질문있습니다!
Written on
·
164
1
안녕하세요 맛비님, 강의 잘 시청하고 있습니다! 강의를 보며 직접 ANN을 설계해보는 중에 궁금한 점이 있어 질문 드립니다.
질문: Fully Connected Layer에서 제가 알기론 각 코어의 출력값이 순차적으로 나오는 것이 아니라 병렬로 나오는 것으로 알고 있습니다. 이 출력값들을 다음 층의 입력으로 전달하기 위해 메모리를 사용하려고 하는데, 이러한 상황에서 출력값을 메모리에 저장하는 가장 효율적인 방법이 무엇인지 궁금합니다.
Answer 2
1
답해주셔서 감사합니다! FPGA21 장의 질문을 올렸어야 하는데 실수로 10장의 올렸네요 ..ㅎㅎ
21장에서 맛비님이 설계하신 코드를 보면 fully connected core를 4개로 설계 하셨는데 이 4개에서 나오는 출력값들을 메모리에 저장 후 다음 layer로 전달하고 싶습니다. 이때 메모리에 주소를 하나 씩 변경하면서 저장하고 싶은데 각 각 다른 코어에서 값들이 나와서 메모리에 input을 어떻게 줘야 될지 궁금합니다.
0
안녕하세요 🙂
FPGA10 장의 질문이라.. 답변이 맞는지 모르겠네요.
질문이 모호한 부분이 있는데요.
먼저 아키텍처를 어떻게 잡느냐에 따라서 코어의 출력값이 순차적으로 나오게 할 수 있고, 병렬로도 나오게 할 수 있어요. 병렬이라고 가정할께요.
효율적? 이 어떤 관점인지는 모르겠는데요. (PPA)
Performance 관점에서만 설명드리면,
출력을 다음 Layer 의 입력으로 전달한다 하시면, 최소 Cycle 을 원하시면 현 Layer 의 결과를 저장할 수 있는 최대 bit width 로 설정하시면, 한 cycle 에 많은 data 양을 R/W 할 수 있으니 performance 관점에서는 좋을 것 같아요.
이런 식으로 질문자님께서 아키텍쳐를 고려해보시면 좋을 것 같아요.






concatenation 문법을 통해서 4개의 data 를 하나의 data 처럼 메모리에 넣어두면 될 것 같아요.