본문 바로가기

공부/Accelerator Design

2. For advanced performance of Hardware

728x90

오늘은 하드웨어의 성능을 향상시키는 방법을 정리해볼 예정이다.

본격적인 내용 정리에 앞서 필요한 개념들에 대해 먼저 이야기를 나눠보자.

가장 먼저 Latency와 Throughput에 대해 정확하게 알아야한다.

Latency는 첫번째 input값이 output까지 나오는데 걸리는 시간이다.

Throughput은 output쪽에서 output sampling을 얼마나 자주하는지에 관한 것으로, [Sample/sec]로 이해하면 된다.

그렇다면 뭐가 더 중요할까?

필자의 생각은 둘 다 중요하지만 throughput이 더 중요하다고 생각한다. 

한 번 output이 나오기 시작하는 시점부터 throughput에 의해 output이 계속해서 나오기 때문이다. 

그렇다고해서 Latency가 너무 길게 되면 이것도 좋지 않지만, Data값이 많아질수록 이 throughput이라는것이 훨씬 더 중요하게 된다.

원래 필자는 throughput이 훨씬 중요하다고 생각했지만, 필자가 이번학기 수행한 FFT termproject에서는 Latency에 의해 수행시간에 유의미한 차이가 나고 이거때문에 학점이 갈렸으므로  Latency에 대해 다시 생각하게 되었다.

 

Latency와 thorughput에 대해 정확하게 정의내릴 수 있다면 이제 하드웨어의 성능을 개선하는 두가지 방법에 대해 알아보자.

Pipelining과 Parallelism이 바로 두 가지 방법이다.

Pipelining의 경우 가지고 있는것을 어떻게 운용할건지에 관한 방법론이며,

Parallelism의 경우 더 많은 Resource를 사용해서 Throughput을 개선하는 방법이다. 

단순하게 생각만해도 후자의 경우 Area가 높아지는 단점이 있지만, 전자의 경우 설계만 잘한다면 성능만 향상시킬 수 있는 매력적인 개념이다.

이제 자세하게 들어가보자.

 

1. Pipelining

쉽게 말하면 놀고있는 시간을 줄이는 방법이다.

아래와 같은 회로가 있다고 해보자. 

 

 

A, B, C는 모두 combination logic으로 우측과 같은 Latency와 Throughput값을 얻을 수 있다. 이를 더 좋게 개선할 수 있는 방법으로 pipeline방법을 사용해보자.

방법은 간단하다. n개의 stage로 나눈 후 "각 path별로" n개의 register를 추가하면 된다.

이 방법을 적용하면 아래와 같다.

 

 

 

Latency는 소폭 증가했지만, Throughput의 경우 대폭 감소했다.

왜 이렇게 될까? 

pipeline 기법을 적용하지 않았을때, A와 B에서 작업을 할때 C는 놀고 C에서 작업을 할때 A와 B가 놀기 때문이다.

pipeline 기법을 적용한다면 최대한 이 노는 시간을 줄이게 되어 하드웨어가 동작하기 때문에 throughput이 증가하게 된다.

따라서 thorughput의 경우 1/worst_period가 되는것이다.

 

2. Parallelism

이거는 Pipeline기법보다 훨씬 간단하다.

동작하는 하드웨어를 추가해서 Area를 늘리고 속도를 그만큼 향상시키는것이다.

초등학생 한명한테 단순 연산 100개를 시켰을때  -> 초등학생 두명한테 단순 연산 100개를 시켰을때 속도가 향상되는것처럼 이해하면 편하다.

 

 

 

이번 포스팅에서는 하드웨어의 성능 향상을 위한 기법을 알아보았다.

다음 포스팅에서는 디지털에서 땔 수 없는 bit 관련 포스팅을 할 예정이다.

728x90

'공부 > Accelerator Design' 카테고리의 다른 글

4. Interconnect_2  (0) 2025.01.12
3. Interconnect_1  (0) 2025.01.06
1. Clock & Timing _ Violation  (1) 2024.12.30
Preview  (1) 2024.12.29