강의

멘토링

로드맵

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

Taiwan님의 프로필 이미지
Taiwan

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[HDL 14장] HW 가속기의 비밀인 Pipeline 을 이해해보자 (실습편)

pipeline 관련 질문입니다.

작성

·

337

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
 
https://drive.google.com/file/d/1bg2zOcgteYXHaAhuwsGsy7zQtwcDCiea/view?usp=sharing
 
 
 
안녕하세요 맛비님. pipe line 복습하다가 pipeline을 사용하지 않으면 clk의 1cycle이 아닌 3cycle 마다 결과값이 한번씩 출력이 되어야하는 것으로 알고 있습니다.
 
flip flop을 단순히 제거하여서 결과값을 도출하였는데 아마 test bench의 @(posedge clk) 마다 i_value 값을 1씩 증가시키는 문법 때문인지 1cycle 마다 결과값이 도출되었습니다.
파이프라인이 test bench의 for 루프 문에 적용된 것인지 DUT의 flip flop에 의해 적용된건지 궁금합니다! 
 
- 아니면 dalay를 주기위해 flip flop을 사용하는 것인가요?

퀴즈

HW 변수에서 오버플로우(Overflow)가 발생하는 근본적인 이유는 무엇일까요?

변수의 이름이 너무 길게 정의되어서

변수가 표현 가능한 값의 범위를 넘어섰기 때문에

클럭 주파수가 너무 높게 설정되어서

리셋 신호가 비활성화 상태이기 때문에

답변 1

0

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

안녕하세요 :)

공지사항 대로 개인이 임의로 수정한 코드는 봐드리고 있지 않구요.

이 문장에서 잘못되었음을 확인했습니다.

f/f 으로 인하여 cycle 이 딜레이 됩니다. 다시 확인 부탁드릴께요. 즐공하세요 :)

안녕하세요 맛비님. pipe line 복습하다가 pipeline을 사용하지 않으면 clk의 1cycle이 아닌 3cycle 마다 결과값이 한번씩 출력이 되어야하는 것으로 알고 있습니다.

 

Taiwan님의 프로필 이미지
Taiwan
질문자

아하 이해됐습니다 감사합니다..

질문 하나만 더 드리겠습니다... 제가 이해한 바로는 결과값이 나오는 주기에서 파이프라인이 더 이득인 것으로 이해하고 있었습니다. 

파이프라인을 쓰지 않았을때 2사이클이 더 값이 빨리나오고 결과값이 1사이클 마다 나오게되면 사용하지 않을때와 비슷한 결과값 효율이지 않나 질문드립니다..

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

이해 감사드립니다 :)

영상에서 pipeline 이론편을 보셨으면 이해가 되실 것 같습니다. (retiming)

예를들어 Combinational Logic 이 10 ns 가 걸린다고 가정하겠습니다.

100 MHz 에 돌릴때는 10ns 의 주기를 갖기 때문에, 10ns 의 로직에서는 Timing Violation 이 없습니다.

하지만 200 MHz 로 Freq 를 2배 올리고 싶습니다.

200 MHz 는 5ns 의 주기로, 10ns 를 1 cycle 처리시 Timing Violation 이 발생합니다.

이 경우 Logic 은 정상 동작하지 않습니다.

이때, F/F 으로 10ns 의 Logic 을 5ns F/F 5ns 로 나눈다고 가정하겠습니다.

이때는 200 MHz 는 Timing Violation 이 아니죠.

 

하고싶은 이야기는, Pipeline 은 중간에 저장 소자가 있다라는 전제하에 성립합니다. (이론편 참고)

현재 여쭤보신 상황은, Pipeline 을 유지하던 F/F 을 없앤다고 해서, Pipeline 이 깨지는 Case 가 아닙니다. 다만 Logic 의 Delay 가 늘어난거죠. "모든 Case 에서 중간의 F/F 을 제거했다고 해서 Pipeline 이 아니다" 가 아닙니다.

 

즉,  F/F 을 제거하면,  Timing Violation 에 의한 Freq 차이가 발생, Performance 가 다른 결과를 만들 수 있습니다.

 

Taiwan님의 프로필 이미지
Taiwan
질문자

아 logic을 계산한 후 다음 posedge clk이 오기까지 기다리는 그 delay가 길어졌다는 말씀이시군요. 감사합니다. 이해 완전히 됐습니다. 

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

적어주신 문장은 옳습니다. :)

추가로 "중간의 F/F 을 없앴다고 해서, Pipeline 이 아니다." 

위 말이 false 임을 이해하셨다면, 성공입니다 ㅎ

즐공하세요 :) 

Taiwan님의 프로필 이미지
Taiwan

작성한 질문수

질문하기