1편에서는 아래 구성에서의 1-2를 다루었고, 이번 3편에서는 3. CPU, GPU, TPU 연산량, 구조 비교에 대해 설명을 해볼 것이다.
1. TPU origin : TPU 왜 만들게 되었는지
2. TPU architecture : TPU의 구성 및 동작 원리
3. CPU, GPU, TPU 연산량, 구조 비교
4. performance : CPU, GPU와 비교한 TPU의 성능
CPU, GPU, TPU 비교
이 부분은 논문에는 없는 내용이다. 이 논문을 읽으면서 '그래서 TPU가 CPU랑 GPU와 두드러지게 다른 점이 뭐지?'라는 궁금증이 들어 구글 블로그를 참고하여 궁금증을 해소하였다. 이 부분에서는 CPU, GPU, TPU를 연산, 구조 측면에서 비교하였다.
1. 연산량 비교
CPU는 한 clock cycle동안 스칼라 연산을 할 수 있고, GPU는 벡터 연산을 할 수 있고, TPU는 행렬 연산을 할 수 있다. CPU중에서 SIMD 명령어를 사용하여 벡터 연산을 할 수있는 것이 있는데 MMX, SSE, AVX이 해당된다. SIMD(Single Instruction Multiple Data)는 주로 벡터와 같은, 즉 비슷하지만 다른 데이터를 동시에 같은 명령어를 사용하는 병렬처리하는 방법 중 하나이다. CPU는 scalar 연산을 하기 때문에 행렬 연산을 할 경우 매우 오랜 시간이 걸린다.

CPU는 scalar 연산을 통해서 한 clock cycle(한 instruction)동안 최대 수십개의 연산(vector extension한 경우 수십, 없는 경우 1-2)을 수행할 수 있고, GPU는 vector연산을 통해서 수백~수천 개의 연산을, TPU는 matrix 연산을 통해서 수십만 개(최대 128K) 정도의 연산을 수행할 수 있다.
CPU는 범용적인(일반적인) 목적으로 만들어졌으므로, 가능한 모든 연산을 할 수 있다. 이 generality를 위해서 연산을 수행하기 위한 값을 register에서 값을 읽어와서 연산하고, 다시 register에 결과값을 쓰는 과정을 수행한다. 즉 한번 연산할때 CPU나 GPU는 여러 register에 접근함에 많은 에너지를 사용한다.

그러나 TPU는 systolic array 구조에 의해 한번 연산할 때 ALU가 값을 다른 ALU에게 넘겨줌으로써 한 register의 값을 재사용하여 register에 접근하는 횟수가 적고, 에너지를 덜 소모하게 된다.
systolic array구조는 matrix multiplication에 에너지 효율성 측면에서 최적화된 구조이고, 이외의 다른 연산을 위해서는 적합한 구조가 아니다(general한 연산에는 사용하기 힘들다).
2. 구조
CPU와 GPU는 범용 목적 processor이므로 광범위의 application을 위한 좋은 성능을 제공하기 위해 정교한 구조를 이루고 있고, 따라서 걸리는 시간의 예측이 어려워 NN 추론을 위한 latency(지연시간)이 제한된 값을 가지도록 보장하기 힘들다. 그러나 TPU는 특정 목적에만 사용함으로써 그런 정교하고 복잡한 구조를 구성할 필요가 없고, 한번에 하나의 일(matrix multiplication)만 하기 때문에 NN prediction에도 용이하다. 또한 TPU는 구조가 단순하므로 많은 control unit을 필요로 하지 않는다(2%이하 차지) : caches, branch prediction, out-of-order execution, multiprocessing, speculative prefetching 등과 같은 아이디어를 사용할 필요가 없어 정교한 구조를 필요로 하지 않는다.
TPU chip은 다른 chip들과 비교해봤을 때 절반정도의 크기를 가진다. 이 덕분에 wafer(웨이퍼) 생산 과정에서 버리게되는 양도 줄어들어서 cost를 절감하게 된다. chip 크기가 절반으로 줄어들면 cost는 8배 정도 감소한다고 한다.
TPU의 경우, NN의 실행시간을 쉽게 정확하게 예측할 수 있어서, latency를 어느 시간 이하로 제한하여 실행시킬 수 있다. MLP0의 경우, response time을 7ms로 제한하면서도, CPU, GPU보다 15-30x 더 많은 throughput을 전달한다.

latency를 제한을 두어 6개의 NN모델을 적용하여 CPU, GPU, TPU의 performance를 비교해본 결과는 다음과 같다.

※ 공부하고 있는 단계라 내용에 부족한 부분이 많습니다. 조언이나 지적은 감사히 받아들이고 수정하겠습니다.
[TPU 논문 리뷰]
(1) TPU architecture : TPU의 구성 및 동작 원리
(3) performance : CPU, GPU와 비교한 TPU의 성능
[참고]
구글 블로그