작성
·
268
1
답변 1
0
안녕하세요 :)
공지사항 대로 개인이 임의로 수정한 코드는 봐드리고 있지 않구요.
이 문장에서 잘못되었음을 확인했습니다.
f/f 으로 인하여 cycle 이 딜레이 됩니다. 다시 확인 부탁드릴께요. 즐공하세요 :)
안녕하세요 맛비님. pipe line 복습하다가 pipeline을 사용하지 않으면 clk의 1cycle이 아닌 3cycle 마다 결과값이 한번씩 출력이 되어야하는 것으로 알고 있습니다.
이해 감사드립니다 :)
영상에서 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 가 다른 결과를 만들 수 있습니다.
적어주신 문장은 옳습니다. :)
추가로 "중간의 F/F 을 없앴다고 해서, Pipeline 이 아니다."
위 말이 false 임을 이해하셨다면, 성공입니다 ㅎ
즐공하세요 :)
아하 이해됐습니다 감사합니다..
질문 하나만 더 드리겠습니다... 제가 이해한 바로는 결과값이 나오는 주기에서 파이프라인이 더 이득인 것으로 이해하고 있었습니다.
파이프라인을 쓰지 않았을때 2사이클이 더 값이 빨리나오고 결과값이 1사이클 마다 나오게되면 사용하지 않을때와 비슷한 결과값 효율이지 않나 질문드립니다..