파이프라인이란?
한 데이터의 출력이 다른 단계의 입력으로 이어지는 구조를 말한다. 이렇게 연결된 데이터 처리 단계는 한 여러 단계가 서로 동시에, 또는 병렬적으로 수행될 수 있어 효율성의 향상을 꾀할 수 있다. 각 단계 사이의 입출력을 중계하기 위해 버퍼가 사용될 수 있 다.
<Performance Metrics for Circuits>
Circuit Latency
처음 입력이 들어가서 출력이 나올때까지 걸리는 시간 혹은 Cycle을 의미한다.
예시1) 한강에서 우리집까지 물이 나올때 water pipeline으로 한강에서 우리집까지 도달하는시간
예시2) 다른장소에서 현재 장소까지 연탄을 옮길때 100명의 사람이 연탄을 건내주고 현재장소까지 연탄이 도달하는 시간
Circuit Throughput
새로운 출력이 나갈 수 있는 비율을 의미한다.
예시 2를 들어서 설명하면 연탄이 도달하고 그 이후 부터 연탄이 쌓이는 갯수는 1이다. 그때 Circuit Throughput은 1이다.
하드웨어에서는 이와 같은 pipeline을 통해서 가속을 하게 된다.
처음의 Circuit Latency의 값이 매우 크더라도 출력이 나오는 순간부터는 매번 쉬지 않고 지속적으로 결과를 만들어 낼 수 있음
이것이 하드웨어 파이프라인의 특징
worst path = 45
한 clk 당 25로 동작한다면 45가 걸리는 동작을 다 소화하지 못하게 된다. 이럴때 F/F이 필요함
그래서 25 , 20으로 나눠서 동작하면 45의 동작을 소화 가능
실무단계에서는 Latency와 throughput을 시간단위로 표시하지않고 사이클 단위로 표시함
위예제에서는 Latency는 2Cycle이고 throughput은 1Cycle이다.
<하드웨어 설계 시 바탕이 되는 개념>
Flow
Buffer
Sw는 sequencial 하게 동작해서 루프가 다돌아야만 새로운 입력을 넣어 볼 수 있는데
Hw는 F/F 버퍼가 있기 떄문에 매 Cycle마다 새로운 입력을 받아서 계산이 가능하다
# HW 파이프라인 실습과제
곱셈연산이 있고 그결과를 계속 F/F에 저장하는 형태
Latency : 3cycle
throughput : 1cycle
Latency가 3인것을 i_value값과 o_valid신호를 통해 알수있다. 3번의 cycle이 돌아야 출력을 가지는 모습
그이후로 output이 1cycle마다 하나씩 나오는것을 확인해볼 수 있었다.