인프런 커뮤니티 질문&답변

akzpt020님의 프로필 이미지
akzpt020

작성한 질문수

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

[FPGA 21장] 프로젝트 Fully Connected Layer 설계 - 코드리뷰편

코어 연산 결과를 바로 모듈로 전달하는 이유

작성

·

38

1

안녕하세요 🙂

[1. 질문 챕터] : 21장 9분 25초

[2. 질문 내용] : 1. 코어의 연산 결과를 바로 myip_AXI 모듈 내 레지스터에 저장하는 이유가 궁금합니다! 현재까지 BRAM에 데이터를 넣고 꺼내고 하는걸 배웠는데 ,,, 결과 write용 bram2를 안쓰니까 궁금합니다!

  1. bram을 거쳐서 데이터를 넣고 꺼내는 시간/ 바로 레지스터로 가도록 하는 시간 중에 뭐가 더 빠른가요??

  2. 데이터가 많을때도 모듈에 레지스터를 엄청 많이 만들어서 bram을 안쓰는건 어떨까요?? bram을 쓰는 것보다 같은 데이터양 대비 사용 리소스가 많다거나, 시간이 더 오래걸린다는 단점이 있을까용??

[3. 시도했던 내용, 그렇게 생각하는 이유] : 21장에서는 코어에서 연산한 데이터가 4개씩이라 적게 나와서 굳이 BRAM을 안쓰는거같다고 생각합니다!

 

답변 2

0

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 🙂

A1. write 용 bram2 가 어떤 것 일까요? 해당 예제를 완성하기 위해서 bram 이 필요하다고 생각이 드시면, 그렇게 수정하셔도 될 것 같아요.

A2. bram 을 거친다는 이야기가, W / R 의 각각 1cycle 씩 보장을 해야하기 때문에, 레지스터 대비 cycle 소모가 있긴 하겠죠. 따라서 레지스터가 빠릅니다. 하지만 Verilog S1 에서 다룬 pipiline 의 개념을 알고계신다면 큰 문제는 아니라고 봅니다.

A3. 가능합니다. resource 문제입니다. 하지만 현업에 가시면 resource == money 이기 때문에 항상 trade off 는 생각하셔야 해요.

 

즐공하세요 🙂

A3 답변 중 궁금한 것이 있습니다 ! bram을 사용하는 것은 resource에 대한 문제가 레지스터보다 적은가요? 그게 아니라면 bram 사용시 사이클 소모도 크고 리소스도 사용해야하는데, 사용시 이점이 무엇인지 궁금해요 !

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

FPGA 의 입장에서는 bram 은 이미 존재하는 resource 입니다.

ASIC 의 입장에서는 (직접 library 로 Area Power 를 봐야겠지만) 저장하려는 size 가 크다면 sram ( FPGA 의 bram 과 유사함) 을 사용하는 것이 F/F 을 사용하는 것보다 Power, Area 측면에서 유리합니다.

매우 작은 size 라면 F/F 를 써야겠죠.

현업에서도 trade off 를 결정할 data 를 뽑고 결정을 합니다. 결국 설계자가 무엇을 중요시 하느냐의 영역 같아요.

0

안녕하세요, 인프런 AI 인턴입니다. akzpt020님, 질문해 주셔서 감사합니다.

질문 주신 내용과 유사한 주제를 다룬 질문들이 있어 아래에 소개드립니다:


  1. lab12 를 진행하며 질문이 있습니다!
    이 질문에서는 AXI4-Lite 인터페이스를 통한 레지스터 접근과 BRAM 접근 과정을 설명하며 레지스터와 BRAM 간의 데이터 전송 흐름에 대해 다룹니다. 이는 질문하신 레지스터와 BRAM간의 차이점 및 용도에 대한 이해를 돕는 데 유용합니다.

  2. core module에 직접적으로 액세스하지 않는 이유 궁금합니다
    이 질문에서는 모듈 앞단에서 레지스터를 포함시키는 이유와 주소값을 순차적으로 액세스 하는 이유에 대해 설명하고 있습니다. 특히 데이터 접근 속도와 관련된 부분을 이해하는 데 도움이 됩니다.

  3. FPGA 22장 전체 HW 연산 시간 관련 질문드립니다.
    이 질문에서는 데이터 로딩 시간이 병목이 되는 경우를 다루며, 병렬 처리를 통한 속도 개선과 관련된 문제를 설명합니다. 병렬 연산과 BRAM, 레지스터 간의 효율성을 이해하는 데 도움이 됩니다.


질문의 구조에 맞춰 간단히 요약드리겠습니다:

  1. 코어의 연산 결과를 바로 레지스터에 저장하는 이유:
    코어의 결과를 레지스터에 직접 저장하는 것은 데이터 접근 속도를 최적화하기 위함입니다. 레지스터는 BRAM보다 더 빠른 접근 시간을 제공하기 때문에, 특정 작은 데이터의 신속한 처리를 위해 레지스터 사용이 더 효율적일 수 있습니다.

  2. BRAM과 레지스터 접근 시간 비교:
    브레이크다운해보면, 레지스터의 접근 시간이 BRAM보다 훨씬 빠르지만, 레지스터는 매우 한정된 자원으로 많은 데이터를 저장하는 데 적합하지 않습니다.

  3. 데이터가 많을 때 레지스터 사용 여부:
    레지스터를 많이 사용하면 FPGA 리소스를 과다하게 소모하여 RTL 디자인의 효율성을 저하시킬 수 있습니다. 또한 레지스터의 하드웨어적 제한 때문에 큰 데이터를 처리하는 데는 실용적이지 않습니다. 따라서 대량의 데이터를 처리할 때는 BRAM을 사용하는 것이 일반적으로 더 효율적입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

akzpt020님의 프로필 이미지
akzpt020

작성한 질문수

질문하기