안녕하세요~

정말 오랜만에 글을 쓰네요 ㅎㅎ



제 블로그 조회기록을 보니

GPU관련 조회수가 많아지는 것 같더라구요!


그래서 이번 글에서 

지난 내용들을 영상으로 요약정리해봤어요~


CUDA study를 하면서 

제가 발표했던 영상이니 많이 봐주세요~! ㅎㅎ

(발표는 1:30초 부터에요!)




[GPU&NVIDIA]


1. 삼성의 파운드리와 NVIDIA의 만남?


현재 NVIDIA에서 출시 계획중인 RTX 3000 시리즈




기존의 NVIDIA가 TSMC 파운드리에 외장그래픽 공정을 맡겼는데, 최근 삼성의 8nm 공정이 NVIDIA ampere GPU 아키텍처 기반의 외장그래픽인 차세대 RTX 3000에 사용될 예정이라는 루머가 돌고있다. (이미 GA102는 삼성 8nm 기반의 테이프-아웃이 이미 진행중이라는 말까지 있네요)


※파운드리 회사가 말하는 테이프-아웃이란?

->위탁생산을 위한 일련의 준비 과정을 마쳤다는 의미




삼성과 TSMC는 EUV를 이용해 이미 미세공정을 사용하고 있는데, TSMC는 이미 7nm 공정을 이용해 NVIDIA ampere A100 외장그래픽을 양산했다. 하지만, A100이 굉장히 고가이고 기업(엔터프라이즈) 또는 연구소 같은 큰 고객들을 대상으로 한 것과는 달리, 소비자들에게 제공하기 위한 ampere기반 외장그래픽(RTX 3000)을 출시하기 위해 더 저렴하고 많은 예비 생산 능력을 갖추고 있는 삼성의 8nm를 이용할 것이라는것이 근거이다. (가격입찰에서 삼성이 유리하다고 보는 듯 함)


(G)A100 같은 경우는 HPC, AI, DNN을 위해 만들어진것이라고 한다면, (G)A102, (G)A103, (G)A104 아키텍처가 RTX 시리즈로 게이밍에 최적화되어 출시될 것이라고 한다. 



<사진1>






2. GTX 16시리즈 스펙 공식 업데이트


NVIDIA는 Turing 아키텍처 기반의 GTX 16 시리즈 스펙을 공식적으로 업데이트했다.

GTX 1650 - TU117, TU106(<- TU106이 추가 됨)

GTX 1650 (Super) & GTX 1660(Ti) - TU116

RTX 2060 (Super) & RTX 2070 - TU106







3.NVIDIA Geforce 드라이버 최신 업데이트(451.67) 









https://us.download.nvidia.com/Windows/451.67/451.67-win10-win8-win7-release-notes.pdf

https://quasarzone.com/bbs/qn_hardware/views/428420






4. NVIDIA, 인텔의 시가총액을 누르다.


NVIDIA는 AI, 자율주행 관련 사업에 GPU를 적용하면서 테슬라, 아우디 등과 미래 자율주행에 대해 협업을 진행중에 있고, 데이터센터 시장의 확장으로 매출이 향상하고 있다.


그 결과 NVIDIA가 1999년 1월 나스닥 상장한 이후, 2020.07.08 미국 뉴욕증시에서 시가총액 2513억달러(약300조)로 인텔의 시가총액을 32억달러 차이로 누르고 반도체 시장 1위 자리를 빼앗았다.






===================================================================







[애플]


1. 애플과 인텔의 결별, IT 회사들의 독자노선 선언!


2020 WWDC(2020.06.22~26)에서 애플은 자신들의 자체 CPU 칩인 ARM Chip을 Mac 컴퓨터에 탑재할 것 이라고 발표했다. 


애플 반도체(CPU) 이름은 '애플 실리콘'이다. 아이폰에는 자체 개발한 'A시리즈'인 AP를 사용하고있지만 컴퓨터 또는 노트북과 같은 장치에도 자체 개발 CPU를 탑재하겠다고 발표했다.  



기존에 인텔이 공급해주던 CPU가 예전만큼 발전속도가 빠르지 않기 때문에 자신들의 맥 컴퓨터도 발전속도가 더딜 수 밖에 없게되고 신상품 출시가 계속해서 늦어져 손실을 보고 있다고 판단했기 때문에 영국의 AP 설계회사인 ARM과 손을 잡았다. ARM은 본래 AP와 같이 모바일용 칩을 개발해왔지만 ARM의 성능이 PC에 적용될만큼 올라왔고, 이미 모바일에서 ARM 기반 AP를 사용하고 있기 때문에 모바일과의 호환성도 높일 수 있다는 것이 '인텔->ARM'으로 변경한 큰 이유이다.



※삼성, 퀄컴, 구글 모두 자신들의 AP칩을 개발하기 위해 ARM 아키텍처를 기반으로 하고있다.

※퀄컴과 인텔과 같은 곳에서 AP, CPU 공급 차질이 생기면 IT회사(애플, 삼성, 구글)들이 핸드폰이나 컴퓨터 같은 제품들을 출시할 때 출시일이 지연될 수 있다. 그래서 최근 IT회사들이 탈 인텔, 탈 퀄컴을 하면서 ARM과 손잡고 자체 AP, CPU를 만들려고 계획하고 있다.



https://www.hankyung.com/economy/article/2020070922241




2. 애플, MAC용 그래픽카드 개발추진예정


애플은 AMD, NVIDIA 같은 그래픽카드를 사용했지만, 탈 인텔을 선언하면서 ARM 기반의 독자적인 CPU를 개발을 선언하였다. 이에 애플 실리콘맥 전략은 독자 CPU와 함께 독자적인 GPU를 장착하면서 자신들이 하드웨어까지 통합하여 소프트웨어와 하드웨어를 모두 애플화시키겠다고 했다.



"개인적인 생각": 뭐 다 좋은데, NVIDIA, Intel, AMD 등의 회사들만큼의 뛰어난 성능을 보일 수 있을까? 음... 혹시 애플은 성능보다는 이렇게 모든걸 통합시켜서 제공해줄 수 있는 서비스들로부터 얻을 수 있는 경제적 효과가 더 크다고 보는건가?? 앞으로 어떻게 될까?  


http://m.inews24.com/v/1280872







===================================================================







[삼성 VS TSMC]


2020.01 삼성이 최초로 GAA 기술을 이용해 3nm 기술 개발에 성공했다고 발표했다.

삼성이 TSMC보다 먼저 발표했기 때문에 기술력은 삼성이 위에 있다고 보고있다는 견해가 있었지만, 삼성이 코로나로 인해 공정설비구축에 차질이 생긴가운데 TSMC는 이미 3nm 제조라인 구축에 들어갔다고 발표했고, 2021년 시험생산과 2022년 양산을 목표로하고 있다고 하기 때문에 삼성과 TSMC의 치열한 경쟁은 앞으로도 지속될 것 으로 보고 있다.






하지만 삼성이 곧바로 3나노 공정을 기반으로 한 웨이퍼를 대중에게 공개해 양산능력이 이미 검증됐음을 뽐냈다.




앞으로 삼성과 TSMC의 경쟁에서 주목할부분은 두 가지이다.

첫 번째는, 3nm에서도 다른 기술들을 적용한다고 하는데 이것이 앞으로 삼성과 TSMC의 기술격차를 벌려놓는 주 요인이 될 수 있는지에 대한 여부이다. 





두 번째는 위에서 언급한 기술들이 NVIDIA, 애플, 퀄컴과 같은 팹리스 회사들에게 어떠한 영향을 미칠지이다. 만약에 TSMC만 믿고 가다가 정말 GAA라는 기술이 소비자가 체감할만큼의 성능차이가 있다면 많은 사람들이 삼성공정을 택한 다른 상대 경쟁사들의 제품을 사버린다면 오히려 큰 부담이 될 수 있기 때문이다.



http://scimonitors.com/tsmc-4%EB%82%98%EB%85%B8%EA%B3%B5%EC%A0%95-%EC%A0%84%EA%B2%A9%EB%B0%9C%ED%91%9C-n3%EB%8F%84-%EA%B3%A7-%EA%B5%AC%EC%B6%95/






===================================================================


[삼성]

작성중....


1.삼성


삼성전자는 인공지능분야 세계적 석학인 세바스찬 승(승현준) 미국 프린스턴대 교수를 삼성리서치 소장에 내정한데이어 박사급 인력 1천여 명을 채용하기로했다. 또한, 2020.07.09일 30여종에 달하는 GPU,NPU 개발자와 머신러닝 엔지니어 채용공고가 올라왔다. 대부분 미국에서 근무할 경력직 인력으로 석박사 학위와 5~8년 이상의 경력을 요구하고 있다.








삼성이 이와같은 움직임을 갖는 이유는 크게 3가지 이다.


첫 번째는, 삼성의 AP인 엑시노스는 퀄컴의 스냅드래곤 보다 그래픽 처리능력이 뒤쳐진다는 평가가 있기 때문이다. 삼성은 퀄컴의 스냅드래곤에 의지해 갤럭시를 출시하는데, 자신들이 AP를 자체 제작하여 생산한다면 스마트 폰 시장에서 굉장한 파급효과를 일으킬 것으로 예상하고 있다. 현재 삼성은 ARM과 함께 협력하여 AP를 개발중에 있다.


두 번째는, 삼성이 장기적으로 투자하고 있는 NPU 사업 때문이다. 현재 모바일에서 인공지능 관련 서비스를 받기 위해서는 웹 서버에서 제공을 받는데, 최근 모바일 AP에는 NPU(Neural Process Unit)을 이용해 웹으로 통신연결 없이 기기에서 인공지능 모델이 동작하는 'On-Device or Edge Computing' 기술을 활발해 질것이라고 예측하고 있다. 


세 번째는 "제 생각인데", On-Device가 가능해지면 빠른 서비스, 강화된 보완, 저전력이 가능해지기 때문에 유튜브와 같이 1인 플랫폼과 시너지 효과가 날 것으로 본다. 예를들어, 1인용 공장 또는 1인용 농장 같은것을 운영하여 빠르게 서비스화 시킨 후 안전하게 상품화시켜 유튜브로 홍보한다는 식으로..






NPU는 모바일뿐만 아니라 자동차 등의 장치에도 이용될 수 있기 때문에, 이를 바탕으로 지난해 84억달러 수준이었던 Global NPU 시장규모가 2023년 343억달러에 이를것으로 보고있다.




On-device로 더 활발해질 수 있는 영역

Smart Farm, Smart Factory, Smart City












===================================================================



[통신]

1. 앞으로 KT, SKT, LG U+를 쓸 필요 없을지 모른다?




https://biz.chosun.com/site/data/html_dir/2020/07/09/2020070901307.html

https://zdnet.co.kr/view/?no=20200703194131


[사진 래퍼런스]

사진1

https://quasarzone.com/bbs/qn_hardware/views/428026

사진2

https://zdnet.co.kr/view/?no=20200703194131








'컴퓨터 하드웨어 > 최신기사' 카테고리의 다른 글

최신기사를 다루는 이유  (0) 2020.07.11

안녕하세요~


제가 컴퓨터 하드웨어 카테고리에서

CPU, GPU, Memory 에 대해

글을 다룬적 있었죠!



그런데 

개념적인 정보들만

다루고 나서 

트렌드를 따라가지 못하면

굉장히

억울할 것 같더라구요 ㅜㅜ



그래서 이곳에서는

주간별로 CPU, GPU, Memory 관련 기사들을 

정리해서 다룰 예정이에요 ㅎㅎ



전 세계를 주름잡는 애플, 구글, 삼성, 인텔, NVIDIA, AMD 등의 IT 회사들이

서로 어떤 영향을 미치고 있는지 살펴보고


여러분들께서 이러한 기사들을 상식으로 알고계신다면

'대한민국'이 더 스마트해질거라고 생각하기 때문에

이렇게 '최신기사' 카테고리를 개설하면

의미가 있을거라 생각했어요 ㅎㅎ



물론 엄청 뛰어나신 분들이 

여러곳에서 정보를 주시고 있기 때문에

유용한 유튜브 사이트나 커뮤니티 같은 곳을

공유해서 더욱 많은 분들이

스마트해질 수 있도록


노력해볼게요! ㅎㅎ

안녕하세요~


이번글에서는 NVIDIA가 자신들이 직접 외장그래픽카드를 단품으로 판매하는것이 아닌 사용자들이 클라우드 형태로 제공해주는 서비스(솔루션)에 대해서 알아 볼거에요!


(PPT로 정리해놓은게 있어서 대부분 PPT 스크린 샷으로 대체했습니다!)




<1.NVIDIA의 클라우드 사업: 데이터센터 확장>



1) 출현배경


첫 번째 이유: 기존의 서버를 다루는 방식은 장소 제한적이다.


회사들을 보통 '서버'를 구축해서 사용자들에게 서비스를 제공해요. 그래서 회사에서 엄청난 자금을 투자해 고급 서버를 구성하게 되는거죠.


그런데 보통 회사내에서는 보안문제로 자신들의 서버를 외부로 노출시키지 않게 하려고 방화벽을 둔다던지, 인트라넷을 구축해서 외부에서 접속하는걸 차단한다던지 여러 방식을 써서 외부와의 단절을 시도하려고 해요.


그런데, 잠시 업무차 외부에 나가있는동안 갑자기 서버에 문제가 생겨서 서버의 에러가 생길때 이를 고쳐야 하는 경우가 생기는데, 이때마다 회사로 다시가야할까요?


특히 코로나가 지속되는 상황에서 재택근무를 한다고 하면 어떻게 해야할까요? (물론 포트를 열어주고 하긴 하겠지만 그래도 좀...)


두 번째 이유: 성능 좋은 GPU 너무 비싸다.


최근에 나온 Ampere 아키텍처의 GPU 모델 중 하나인 A100 가격은 약 200k달러였어요. 이건.. 일반 사용자들이 감당할 수 없는 금액이며 심지어 회사에서도 투자하기가 힘든 금액이에요..


그런데 생각해보면 외장그래픽을 구매한다는건 24시간 365일 동안 계속 점유하고 쓰겠다는말과 같아요. 그런데 일반적으로 딥러닝 하시는 분들은 Test를 하거나, Training을 하거나 할때 사용하시죠?

(물론 서버로 딥러닝 관련 서비스를 제공하시는 분들은 24시간 사용하실 수 있겠지만 이 마저도 시간대에 따라서 사용자가 몰리는 시간대가 있고 몰리지 않는 시간대가 있을거에요)


그렇다면 우리가 외장그래픽을 잠시 빌려 사용한만큼만 돈을 내면 어떨까요?




2) NVIDIA 데이터센터에 투자하다.


2020년 5월 NVIDIA 회장은 GTC에서 데이터센터를 확장시킨다고 공식적으로 선언했습니다. 



<사진1>


데이터센터란 NVIDIA가 자신들의 외장그래픽을 클라우드 형태로 제공해주기위해 아키텍처 별로 따로 외장그래픽이 모인 하나의 거대한 센터를 지어 클라우드 형태로 외장그래픽을 제공해주면서 관련 데이터(작업)을 지원해주는 곳이라고 보시면되요.


<사진2. NVIDIA 데이터 센터>









NVIDIA가 제공해주는 데이터센터에 관해 자세히 보시려면 아래 순서대로 접근하시면 돼요!


https://www.nvidia.com/ko-kr/



그리고 아래 순서를 따라오시면

데이터센터에서 제공해주는 대표적인 외장그래픽 모델을 보실 수 있으실거에요.


A100은 Ampere 아키텍처 기반으로 만들어 졌고, T4는 Turing 아키텍처, V100은 Volta 아키텍처 기반으로 만들어진 모델이에요.


데이터센터에서는 일반 타이탄 시리즈나 Geforce 시리즈는 제공을 해주지 않아요!

(참고로 단일 A100을 이용하는 것보다 같은 금액으로 여러개의 타이탄 V 또는 Geforce 시리즈 그래픽카드를 여러개 사는것이 더 좋다는 의견도 있어요 ㅎㅎ)


데이터센터에서 제공해주는 제품들에 대한 성능 차이는 아래와 같아요. (아래 순서대로 성능이 좋아지는 거구나라고 생각하시면 될거에요!








<P100(파스칼 아키텍처 기반) VS CPU VS K80 (케플러 아키텍처 기반)>







<V100 VS P100>

<사진3>








<A100 VS V100 VS T4>








<T4>


T4는 사실 A100, V100 보다 속도면에서 떨어지지만

가성비면에서 주목할 만한 서비라고 생각해요.


그리고 그외에 컨테이너 기술이나 

다른 소프트에어 기술도 지원이 된다고 하니

이러한 부분을 주목하시는 분들은 T4 데이터 센터를 사용하시는걸 추천드려요!

(지금 언급한 기술들이 V100에 적용이 되는건진 잘모르겠는데,

A100에서는 제공이 되는거 같더라구요 ㅎㅎ)







3) GCP(Google Cloud Platform), AWS(Amazon Web Service), Azure(Microsoft)와의 협업


흔히 우리가 NVIDIA 데이터센터를 이용하기 위해서는 NVIDIA에 직접문의 하기 보다는 GCP, AWS, Azure라는 곳에서 클라우드 시스템(인스턴스)을 구축할 때 NVIDIA 데이터센터를 사용하게돼요.

(예를들어, GCP에서 클라우드 인스턴스를 구축하기 위해, CPU, SSD, GPU 등등 설정해야할 때, GPU 항목선택시 NVIDIA 데이터센터에서 제공해주는 클라우드용 외장그래픽(GPU)을 선택하게 됩니다. (추후에 클라우드 관련 카테고리를 개설하면 자세히 알려드릴게요!)




아래순서대로 따라오시면



아래와 같은 테이블을 보실 수 있으실거에요.







4) 클라우드 서비스와 관련된 최신기사(2020.07.10 기준)


2020.07.08일 Google Cloud가 "NVIDIA A100을 지원하는 A2 인스턴스를 제공할 예정"이라고 발표했어요.


관련기사 링크 -> https://cloud.google.com/blog/products/compute/announcing-google-cloud-a2-vm-family-based-on-nvidia-a100-gpu?fbclid=IwAR3GqK4Sr_ETrTJCgn-GlISW4yPC6bHOC2qKMM0W7gb8LazoXEsjM6h-B5A









만약 딥러닝, AI 관련해서 NVIDIA에서 제공하는 서비스에 대해 더 알고 싶으신 분들은 아래처럼 NVIDIA 사이트에 접속하신 후, 딥러닝&AI 섹션에 가서 살펴보시면 될 것 같아요.


예를들어, 업계별 섹션은 '자율주행 자동차', '로보틱스', '헬스케어&생명과학' 세부 섹션으로 나뉘어 있어요.









지금까지 딥러닝을 위해 제공되는 외장그래픽과 NVIDIA 제품군들에 대해서 알아보았어요.

다음글부터는 NVIDIA, GPU, 외장그래픽 관련해서 올라오는 최신 기사들을 간단하게 요약하는 글을 작성하도록 할거에요!






[사진 래퍼런스]

사진1

https://www.kipost.net/news/articleView.html?idxno=200720

사진2

https://www.techpowerup.com/239994/nvidia-forbids-geforce-driver-deployment-in-data-centers

사진3

https://www.microway.com/hpc-tech-tips/nvidia-turing-tesla-t4-hpc-performance-benchmarks/tesla_comparison_t4-p100-v100/

https://lambdalabs.com/blog/2080-ti-deep-learning-benchmarks/


안녕하세요~


이번글에서는 NVIDIA GPU 제품에 대해서 소개해드리려고해요~





<1. Geforce VS Quadro>


NVIDIA는 외장 그래픽 카드를 출시할 때, Geforce 계열과 Quadro 계열로 나눠서 상품을 출시해요.



<사진1>




<사진2>




1) Quadro 계열


그래픽 개발 및 작업용으로 만들어졌고, 세대에 따라 K(케플러), M(맥스웰), P(파스칼)로 나눈다고해요.

GPU 아키텍처에 따라 나누는듯 합니다.





2) Geforce 계열


Geforce 계열은 게이밍을 위해 만들어진 GPU라고 해요.

전체적인 성능에 따라 GT<GTS<GTX 순으로 정렬할 수 있고, 최근에는 GTX 버전만 출시 된다고 합니다.

GTX는 3D 게이밍을 위한 등급이라고 하지만, 최근에는 GPGPU 성능에 초점을 두기 시작하고 있는거 같더라구요.


<사진3>




아래 Geforce 계열 시리즈와 대응되는 GPU 아키텍처를 보여주고 있어요.


흔히, Tesla 아키텍처를 기반으로한 Geforce 2세대(200)부터 NVIDIA 외장그래픽 카드를 보편적으로 인식하기 시작했는데요. 200(2세대) -> 300(3세대) ->400(4세대) -> ..... ->900(9세대) -> 1000(10세대) -> 2000(20세대;RTX) -> 1600(16세대) 순으로 발전하고 있어요. (10세대 부터는 GTX 1050 모델을 기점으로 10씩 증가하네요)


<사진4>





<2. Ti란?>


Geforce 외장그래픽 모델을 보면 Ti라는 명칭이 있는데 이것이 의미하는 바가 뭘까요?


예를들어, Geforce N 버전에서 N+1버전으로 넘어갈 때는 보통 GPU 아키텍처가 변한다던가, 그외에 혁신적인 기능이 추가되어야 해요. 그런데, 이러한 혁신적인 변화가 주기적으로 일어나는게 아니기 때문에 회사 입장에서는 그래도 조금 개선된 모델을 빠르게 출시해야 시장을 유지할 수 있어요.


Geforce 2 or 4 버전부터 NVIDIA는 개선형 외장 그래픽 카드에 Titanium을 줄여 Ti라는 naminig을 덧 붙이면서 마케팅을 하기 시작합니다. 그래서 Geforce 1070 Ti라고 하면 1070보다는 좋은데 1080보다는 성능이 떨어지는 버전이라고 인식하시면 될 것 같아요.



<사진5>






<3. TITAN>


'사진4'를 보시면 중간중간에 TITAN이라는 모델이 눈에 들어오실거에요. 

TITAN이라는 네이밍을 붙이는 이유를 명확하게 규명한 곳을 찾지는 못했는데요.


대략적으로 보면 해당 세대에서 최강의 성능을 보여준다는 뜻으로 받아들이면 되지 않을까 싶어요. 일반적으로 게이밍같은 목적보다는 연구자들을 위해 제공되는 제품이라고해요 (슈퍼컴퓨터 용도로도 쓰인다고 하니..). 그래서 보통 Desktop 용 보다는 workstation 같은 곳에 사용된다고 합니다.


(그런데, TITAN 모델이 나오고 나면 또 금방 Desktop용 모델 중에 성능이 뛰어난것들이 금방금방 나오는거 같더라구요... TITAN 이름은 왜 붙이는건지... SLI도 지원이 안된다고 하는데...)









<4.외장 그래픽 카드 비교 사이트>


외장 그래픽 카드를 구매하실 때 보통 2,3 가지 중에 어떠한 제품을 살까 고민하시죠?

이럴때마다 전부 사이트를 들어가서 spec을 찾아보는것도 귀찮은 일이 될거에요...


그래서 손쉽게 그래픽 카드를 비교해주는 사이트를 소개해드리려고 해요 (링크)

https://www.videocardbenchmark.net/singleCompare.php


사용법은 아래 사진대로 따라하시면 돼요!









<5. CPU와 외장그래픽(or GPU) 병목현상 정도를 계산해주는 사이트>


Bottleneck calculator(링크)에 접속하시면 아래와 같은 그림이 생성되요.

https://pc-builds.com/calculator/


굉장히 낮은 성능의 CPU와 높은 성능의 GPU를 컴퓨터에 세팅한다고 하면 얼마나 큰 병목(bottleneck)이 생길까요?



대략 46%의 Bottleneck이 생긴다고 하네요.


  





친절하게 i7-8700k에 해당하는 CPU로 바꾸는게 좋겠다고 추천까지해주니 편하네요!








GPU에 맞는 RAM과 SSD까지 추천해줘요 ㅎㄷㄷㄷㄷ





지금까지 NVIDIA 외장그래픽 브랜드에 대해서 알아봤어요.

다음글에서는 NVIDIA에서 외장그래픽과 같이 단품으로 device를 제공해주는것이 아닌, 클라우드 형태로 제공하는 데이터센터에 대해 알아보도록 할게요!




[글 래퍼런스]

https://m.blog.naver.com/PostView.nhn?blogId=bsh9792&logNo=220935347993&proxyReferer=http:%2F%2Fwww.google.com%2F

https://m.blog.naver.com/PostView.nhn?blogId=zotackr&logNo=221238411335&proxyReferer=https:%2F%2Fwww.google.com%2F


[사진 래퍼런스]

사진1,2

https://m.blog.naver.com/PostView.nhn?blogId=bsh9792&logNo=220935347993&proxyReferer=http:%2F%2Fwww.google.com%2F

사진3

https://m.blog.naver.com/PostView.nhn?blogId=zotackr&logNo=221238411335&proxyReferer=https:%2F%2Fwww.google.com%2F

사진4

https://namu.wiki/w/NVIDIA/GPU?from=GeForce

사진5

http://blog.logicalincrements.com/2017/11/geforce-gtx-1070-ti-vs-1070-1080-rx-vega-56-vega-64/


안녕하세요~


이번글에서는 NVIDIA에서 출시했던 GPU 아키텍처들에 대해 알아볼거에요. 

가장 먼저 출시됐던 Tesla 아키텍처를 살펴보면서 기본적인 NVIDIA GPU 구조에 대해서 알아보고, 해당 GPU의 스펙을 이해하기 위한 몇몇 개념들도 알아보도록 하겠습니다!




<1.NVIDIA GPU 아키텍처 발전 순서>


NVIDIA가 발표한 GPU 아키텍처의 이름을 보면 아래와 같아요.

해당 아키텍처를 기반으로 여러 NVIDIA GPU 모델들을 만들고 있는데요.


<사진1>


지금부터 위의 모델들을 간단히 살펴보도록 할게요!

(좀 더 자세한 아키텍처 설명을 보고싶다면 -> 링크)




<2.Tesla>


2008년 NVIDIA에서 출시한 GPU 아키텍처에요.

Tesla GPU는 SM(Streaming Multiprocessor)의 집합으로 이루어져있습니다. Tesla에서 SM은 8개의 SP(Stream Processor)와 2개의 SFU(Special Function Unit), shared memory 등으로 이루어져있있어요.

SP (Core)를 보통 CUDA core라고 하는데, GPU의 각 세대마다 SM, SP의 개수가 차이가 납니다.


<사진2>



1)SP(Stream Processor)

SP는 core 역할을 하기 때문에 CPU의 core격인 ALU와 같이 논리,수학 연산(with MAD(Multiply-add-Divide))을 수행합니다.


2)SFU(Special Function Unit)

SFU는 초월함수, 픽셀 attribute interpolation 등의 연산에 사용되고 4개의 부동 소수점 곱셈기도 포함하고 있습니다.


2-1)초월함수

초월함수는 일반적으로 다항식의 근으로 정의할 수 없는 함수를 의미한다고 합니다 (정확한 의미는 모르셔도 될 것 같아요~)


<사진3>


그냥 보시기에 함수가 조금 특이하다고 보시면 될 것 같아요 (보통 함수라하면 고차함수 꼴이니까요 ㅎ).

과학계산을 하다보면 아래와 같은 초훨함수들을 빈번하게 계산하게 되는데 이런 부분들을 SFU가 담당해주는것 같아요.


<사진4.초월함수의 예>



2-2) 부동소수점 연산


부동소수점에 대해서 알아보기 전에 고정 소수점 방식을 알아보도록 할게요.

앞서 CPU편을 보시면 알겠지만 명령어를 처리하는 단위에 따라 32비트, 64비트로 나눌 수 있다고 했어요.


만약 32bit 명령어 체계를 사용한다면 아래와 같이 부호(+,-)와 정수부, 소수부로 나눌 수 있을거에요.

그런데 아래와 같은 문제점은 정수, 소수부를 표현할 수 있는 경우가 제한적이에요. 예를들어 정밀한 과학계산에서는 더 세밀한 단위를 표현하기 위해 굉장히 많은 소수부를 사용해야 할 텐데 이것이 16bit로 표현이 안된다면 문제가 생기겠죠? 

<사진5>




그래서 나타난 개념이 부동 소수점 방식이에요. 


<사진6>


유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현하는 방식이에요.


<사진7>


부동소수점에서는 지수부(Exponent)는 기준값(Bias)를 중심으로 +,- 값을 표현합니다 (이렇게 쓰도록 정의한것!).

일반적으로 기준값은 2^0을 의미하는데 float의 경우는 기준값이 127이 됩니다.

예를들어, float에서 2^1은 기준값(127)+1 = 128 이기 때문에 이진수로 표현하면(지수부:8bit) 

가 됩니다.






가수부는 1.xxx 형태로 정규화를 한뒤 가장 왼쪽에 있는 1을 제거하고 소수점 이하의 자리 값만 표현하게 됩니다. 아래 예를들어 볼게요.


13.5를 32bit 부동소수점 (float:32bit)으로 표현해본다고 할게요.





 

2-3)FLOPS(FLoat point Operations Per Second)


FLOPS는 컴퓨터의 성능을 표현하는데 굉장히 중요한 지표로 사용되요.

말그대로 초당 부동소수점을 계산하는 능력을 의미하는데요. 딥러닝을 사용해보신 분들은 아시겠지만 대부분 계산들이 부동소수점(실수형태: float 자료형)으로 계산이 되는걸 볼 수 있을거에요.


그렇기 때문에 FLOPS라는 지표가 딥러닝과 같이 소수점을 기반으로 한 과학연산에서 시간을 측정하는 중요한 지표가 될 수 있겠죠? 만약 FLOPS 성능이 좋은 GPU를 사용한다고 하면 다른 FLOPS가 낮은 GPU보다 모델을 학습시키거나 inference하는 것이 더 빠를거에요.



아래 사진에서는 딥러닝을 돌리기 위해 자신들이 최소한 어떠한 성능의 GPU를 사용해야하는지 간접적으로 알려주고 있어요. 예를들어 VGG19를 돌리기 위해선 적어도 40G-Ops 이상을 지원하는 GPU를 구매해야겠죠? (1080 Ti 급의 GPU가 보통 11.3 TFLOPS를 지원한다고 하네요.)


1,000,000,000 FLOPS = 1 GFLOPS(giga FLOPS)

1000 GFLOPS = 1 TFLOPS (Tera FLOPS)




<사진8>


 



3)SM(Streaming Multi-processor)

만약 8개의 SP와 2개의 SFU가 모두 사용될 경우 SM에서는 1 clock cycle 당 최대 16(=8+4X2)회의 부동소수점 곱셈을 수행할 수 있어요.



4)Shared memory

Shared memory는 SM내에서 실행되는 thread 사이의 data 교환을 가능하게 해주는곳이에요 (CPU편에서 thread와 process의 차이를 보셨죠?ㅎㅎ 안보셨다면 --> 링크)

Tesla에서 Shared memory는 16KB 용량을 갖습니다.




5)SIMT(Single  Instruction Multiple Threading)

(GP)GPU로 넘어오면서 CUDA를 지원하자 SIMT 방식을 고안합니다.


CPU에서는 주로 SIMD(Single Instrcution Multiple Data)라는 용어를 사용하는데요. CPU의 성능을 최대한 활용하기 위해서 하나의 명령어로 여러개의 데이터를 처리하도록 하는 동작을 의미합니다. 


CUDA가 등장하면서 하나의 명령어로 여러개의 Thread를 동작시키는 일이 필요해졌기 때문에 SIMT 방식을 고안하기 시작한거죠. 




<사진9>







<3.Fermi>


Fermi는 2010년에 출시된 NVIDIA GPU 아키텍처에요.


Tesla에서 각 SM마다 제공되던 16KB shared memory는 64KB로 용량이 늘었어요.

SM외부의 texture unit의 도움을 받아 실행되던 load/store 명령도 SM내에 Load/store (LD&ST) 유닛이 추가됨으로서 SM 자체적으로 실행이 가능해졌습니다.



<사진10>


SM에 포함되어 있는 SP는 Tesla에 비해 4배가 늘어난 32개로 구성되었어요 (이때부터 SP를 (CUDA) core라고 명명하게 됩니다). 하나의 SM에 포함된 32개의 CUDA core는 16개씩 2그룹으로 나뉠 수 있고, 각 그룹마다(16개의 core마다) 16개의 LD&ST unit이 1그룹, 4개의 SFU가 1그룹을 이룬답니다.


Tesla에서는 각 SP내부에 존재하던 register file이 Fermi에서는 하나의 큰 Register File로 통합이 됐어요. 이럴경우 register를 많이 쓰는 thread와 적게 쓰는 thread가 섞여 있을 때 Tesla의 경우보다 Fermi 구조의 Register File 형태가 더 효율적이라고 합니다.


Core가 늘어난 만큼 늘어난 core를 최대한 실행시키기 위한 명령어를 공급해주어야 하는데요. 이를 위해 Warp Scheduler의 개수를 2개로 늘렸어요. Warp scheduler는 서로 의존성이 없어 독립적으로 Dispatch unit을 통해 명령어를 보낼 수 있다고 합니다.


Tesla의 SP는 32-bit 부동소수점을 지원했는데요. Fermi에서는 32-bit 부동소수점을 지원하는 CUDA core 2개를 동시에 사용할 수 있어 64bit 부동소수점 연산을 할 수 있게 됩니다. 또한 Tesla에서는 MAD(Multiply-ADD)를 지원했는데 MAD 작동방식이 그래픽 분야에서는 문제가 없지만 General Purpose 같이 세밀한 연산을 할 경우에는 문제가 되기 때문에 FMA(Fused Multiply-ADD를 지원하면서 GPGPU 컴퓨팅에 대한 지원을 강화했어요.





<3.Kepler(2012)>



Fermi 구조에서는 CUDA core, LD&ST unit, SFU 등의 실행 유닛들이 다른 유닛들에 비해 두 배 빠른 속도로 동작했다면 Kepler 구조에서는 전체 유닛이 동일한 속도로 동작하도록 변경시켰어요 (Performance/Watt 문제로 이런식의 구조를 고안했다고 합니다).


<사진11>





Kepler부터 SM이라는 용어가 SMX로 이름이 바뀌었어요. 전체 속도와 동기화시키위해 CUDA core의 속도를 줄였기 때문에 이전 속도를 유지하기 위해 더 많은 CUDA core, LD&ST, SFU 등을 장착했어요. Kepler의 SMX는 192개의 CUDA core, 64개의 DP(64-bit Double Precision) 유닛, 32개의 LD&ST 유닛, 32개의 SFU로 구성됐습니다.


Kepler에서는 HPC(HIgh Performance Computing)을 고려해 64bit 부동소수점 연산을 위한 전용 DP 유닛이 제공되었기 때문에 32bit, 64bit 부동소수점 연산이 동시에 실행될 수 있다고 합니다.


<사진12>


늘어난 core의 수를 잘 다루기 위해 warp scheduler의 수도 4개로 늘어났고, Dispatch unit도 하나의 warp scheduler 당 1개에서 2개로 늘어났어요. 그래서 SMX는 동시에 최대 8개의 명령을 처리하는것이 가능해 졌답니다. 또한 Register file의 크기도 128KB로 4배가 늘어났고, L1 cache 크기도 128KB로 늘어났습니다.


하나의 thread가 사용할 수 있는 register 수가 Fermi의 63개에서 255개로 늘어났는데 이러한 점은 Dispatch Unit의 증가와 더불어 그래픽 연산보다는 HPC 응용분야의 성능 (ex:과학연산)향상을 고려한 변화라고 볼 수 있습니다. 







<4.MaxWell(2014)>


Kepler에서 Maxwell로 아키텍처가 변하는 과정에서 미세공정이 28nm에 머물러 있었기 때문에 획기적인 변화를 꾀하지 못할거라 생각한 NVIDIA는 모바일 버전의 GPU 구조를 출시하고자 하면서 이전 kepler 구조를 최적화하려고 했어요.


<사진13>




<5.Pascal(2016)>


2012년 AlexNet 등장으로 주목을 받기 시작한 딥러닝은 2014년 GoogLeNet, VGG의 등장으로 딥러닝 붐을 일으키기 시작했습니다 (관련논문 정리->링크).

2016년 GTC에서는 딥러닝과 AI에 대한 내용을 상당부분 다루면서 NVIDIA가 나아갈 방향에 대해서 설명하기도 했으며, 동시에 Pascal이라는 인공지능에 특화된 GPU 아키텍처를 소개하게 됩니다.


Pascal 부터는 HPC(High Performance Computing)분야 (GP104 GPU)와 그래픽 분야(GP100 GPU) 두 가지 버전으로 나눠서 제품을 출시하게 됩니다.


<사진14>



HPC 또는 딥러닝 분야에서는 64bit, 16bit 부동소수점연산(FP64/FP16)을 지원하면서 하나의 thread가 많은 register를 사용하도록 했고, 그래픽 분야에서는 32bit(FP32)를 주로 사용하고 프로그램이 간단해 register 개수를 굳이 늘리지 않도록 했습니다.


<사진15>



딥러닝 기반의 pascal 구조의 가장 큰 특징은 16bit 부동소수점(FP16) 연산을 지원한다는 점입니다. 실제 딥러닝을 하다보면 weight, bias, learning rate 등의 값 등을 이용할 텐데, 다른 과학분야보다는 초정밀한 값을 요구하는건 아니기 때문에 32bit 처리 방식보다는 16bit 처리 방식으로 변경하도록 했습니다. 16bit 부동소수점 처리방식으로 바꾸면 32bit 처리 방식에서 사용했던 것 보다 메모리 용량과 대역폭에 대한 부담이 줄어들게 됩니다.


또한 GP100 Pascal의 CUDA core는 FP16 연산을 처리할 때 한 싸이클에 두 명령어를 처리할 수 있기 때문에 FP16연산 성능은 FP32 연산 성능의 두배가 된다고해요. 

간혹가다 다른 두 GPU를 사용할때,  A라는 GPU보다 메모리가 더 작은 B라는 GPU에서는 딥러닝이 잘동작하는데, A GPU에서는 작동이 안된다고 하면 FP부분이 차이가 있는지 확인하셔야해요! 



<6.Votal(2018)>

Volta 아키텍처를 채택한 GV100은 TSMC의 12nm 공정으로 구현되었습니다.

기존에 사용된 CUDA core는 FP32 코어로 이름이 바뀌었습니다. 이전에 GPU가 "64FP -> 16FP"로 변환된 걸 봤듯이, Votal에서는 8bit 단위의 INT(정수연산) 코어가 추가되었습니다. 이렇게 하여 inferencing을 가속화시켰다고해요.

<사진16.GP(Pascal) VS GV(Volta)>


Volta에서 눈여겨 볼 부분은 INT32 연산과 tensor core를 제공하여 실제 학습 또는 inference 속도를 대폭 향상시켰다는 점이에요.

Deep learning에서는 대부분 계산이 "D=A*B+C" 단위로 이루어집니다 (A:입력값, B:가중치(weight), C:bias, D:출력 값). 빠른계산처리를 위해 A,B 부분은 FP16 단위(floating point 16bit, half precision)로 계산이되고, 더 정밀한 accuracy를 위해 C,D는 FP32(floating point 32bit, single-precision)으로 처리하는 mixed precision 연산을 수행하는 tensor core를 고안해냈어요.


<사진17>

V100 GPU에는 SM당 8개의 Tensor core가 장착되어 있으므로, 하나의 SM에서는 64x8x2=1024 번의 "곱셈+덧셈" floating point 연산이 한 사이클에 수행됩니다. V100에는 80개의 SM이 장착되어 있으므로 80*1024번의 연산이 한 사이클에 수행되는셈이죠.

<사진18>


이전 파스칼 아키텍처기반의 P100보다 mixed-precision 개념을 도입한 volta 아키텍처 기반의 V100 모델의 9~10배의 성능을 내게 됩니다.

<사진19>

<사진20.ResNet 학습 및 추론 성능차이>


cuDNN은 출시되는 최신 GPU 모델에 맞게 업데이트가 되는 경우가 있는데, 최신 GPU인 volta와 당시 최신 소프트웨어 플랫폼인 cuDNN이 결합되면 훨씬 더 좋은 성능을 낸답니다.

<사진21>





<7.Turing>

2018.02에 발표된 Volta는 PC급에 제공되기 힘든 가격을 갖고 있었으나, NVIDIA는그해(2018) 8월에 Turing이라는 새로운 아키텍처를 발표합니다. 당시에 출시한 제품들은 굉장한 고가였으나 한달뒤에 나온 Turing 기반 RTX Geforece 20시리즈가 출시되었어요 (현재 인공지능을 연구하는 개인이나 PC급으로 연구하는 연구실같은 경우는 RTX 20 시리즈를 사용하고 있답니다)


<사진22>



<사진23>


<사진24>


이전 글에서 설명드린 NVLINK도 지원하고 있는걸보니 multi-GPU를 쓰면 더 효과가 배가 될 것 같아요.

<사진25>


Volta의 큰 골격은 유지하면서 규모를 절감한 마이너 파생상품으로 간주되고 있는데요. 눈에 띄는 부분은 RT core를 지원하는것과 4bit 정수(INT) 연산도 가능하게 했습니다.


<사진26>


<사진27>



RT core는 Ray Tracing을 위한 기술이에요. HPC(High Performance Computing)을 위해 점점 발전해 나가고 있지만 그래픽 부분도 포기 할 수 없기 때문에 RT(Ray Tracing) 기술을 접목시켰다고해요.


1)Ray Tracing(RT; 광원추적)

RT란 그래픽으로 구성된 3D 공간에서 어떤 물체에 빛이 반사되거나, 어떤 물체에 의해 그림자가 생기거나, 빛의 굴절을 일으키는 모든 작용들을 고려하여 화면에 표현해주는 기술이에요. RT core를 통해 실시간(real-time)으로 이러한 기능들을 가능하게 해준것이 가장 큰 특징이라 할 수 있어요.






<8.Ampere>


2020.03월 Votal 아키텍처의 후속작으로 Ampere라는 NVIDIA GPU 아키텍처가 소개됐어요. 결론부터 말씀드리면 Ampere 아키텍처는 작정하고 딥러닝을 위해 만든 GPU라고 보시면 될 것 같아요.



<사진28>



먼저 Ampere 아키텍처는 TSMC의 7nm 미세공정으로 인해 Volta보다 훨씬 뛰어난 성능을 갖추게 되었어요.



1) 기본적인 Spec 차이 


우선 VRAM과 Memory Bandwidth, Memory Bus Width, Memory Clock이 ..... ㅎㄷㄷ


<A100: Ampere, V100:Volta, P100:Pascal>



딥러닝 연산도 몇배는 빨라지겠네요..




Ampere에서 주목할 부분은 딥러닝에 최적화된 새로운 정밀도인 TensorFloat-32(TF32) 가 도입됐다는거에요. Tensorflow 자료형을 보면 tf.float32을 볼 수 있는데, tensor 자료구조에서 float을 제공해주는것을 하드웨어적으로 support해줄 수 있는것 같아요. 그래서 정밀하게 계산을 할 수 있으면서도 속도는 빠르게 유지해주는듯 합니다.




TF32는 FP32와 같이 작동하면서 코드 변경없이 딥러닝 모델을 최대 20배까지 가속한다고 해요. (참고로 TF32 형태가 FP32보다 6배는 빠르다고 하네요)

또한 Mixed Precision이라는 연산기법을 지원하는 시도도 있는데, single-precision인 FP32와 half-single-precision인 FP16을 적절히 잘 섞어주면서 속도(speed)와 정확도(accuracy)를 모두 잡았다고 합니다. 


단적인 예로, FP16을 이용하기 때문에 딥러닝 모델에 대한 메모리 요구량도 줄어들어 더 큰 모델을 GPU에 로드할 수 있게 되었고, 더 큰 mini-batches (size)도 가능하게 해주었어요.


(홈페이지를 자세히 보니 Turing, Volta 아키텍처에서도 mixed precision 기법이 제공되나봐요. 그런데, Ampere에서는 FP32가 사용될 때, TF32와 같이 사용되는 반면에, Volta, Turing에서는 FP32만 사용되니 mixed precision 효과가 덜 한거 같아요)


<사진29>



위와 같은 Mixed Precision은 코드 몇줄만 추가해주면 사용가능하다고 하니 참고하세요!










2) Sparse connection


Sparse connection은 쉽게 말해 딥러닝에서 쓰이는 parameter 중에 불필요한 부분을 0으로 만들어 계산을 좀 더 빠르게 하거나, 차원수를 줄여주어 overfiting을 피해주는 기법으로 사용되곤 하는데요.


Ampere 아키텍처에서는 이러한 sparse model에 support해주는 기법을 제공해주나 봅니다. A100(Ampere)의 tensor 코어는 sparse model에 대해 최대 2배 높은 성능을 제공해주는데, inference 시간도 줄여줄 뿐만 아니라 학습성능도 개선하는데 사용할 수 있다고 합니다.


<사진30>







<사진31>




4)PCI 4.0 and NVLINK 3.0


Ampere 아키텍처는 특히 Multi-GPU를 사용할 경우 그 성능이 대폭 향상됩니다.



PCI 4.0으로 인해 CPU와 GPU, 그리고 GPU 간의 데이터 전송속도 및 양이 증가했는데요. 여기서 추가로 NVLink 3세대를 도입하면서 GPU간의 직접적인 대역폭을 2배인 600GB/s로 증가시켰어요. 이는 PCI 4.0의 10배에 달하는 속도입니다. 




5) Multi-Instance with Kubernetes


Ampere 아키텍처는 최대 7개의 sub-group gpu로 partitioning 할 수 있어요.


<사진32>



예를들어, 40GB VARM을 갖고 있는 ampere GPU는 각각 20GB VRAM을 갖는 2개의 sub-ampere GPU로 나눌 수 있어요. 최대 5GB의 sub-ampere gpu 7개를 생성할 수 있고, 이렇게 나눈 GPU들을 나중에 다시 merge(통합) 할 수 있어요.


사용사례를 보면, 낮에는 낮은 처리량 추론을 위해 7개의 sub-GPU를 사용하고, 밤에 퇴근할 때는 딥러닝 모델 학습을 위해 1개의 본래의 GPU 인스턴스로 만들어주어 사용해요.


<사진33>


각각의 sub-group을 형성하는 gpu들은 서로 독립적이기 때문에 서로다른 프로그램을 실행시켜도 CUDA가 각각 인스턴스에 맞추어 실행됩니다. 



<사진34>


이러한 MIG(Multi-Instance GPU) 기술은 컨테이너 또는 쿠버네티스와 같이 DevOps 유저들에게 특히 유용하다고 하는데, 조만간 Kubernetes를 공부할 예정이라 공부를 하고 나면 좀 더 명확하게 설명해보도록 할게요! ㅎㅎ





지금까지 NVIDIA에서 출시하는 GPU 아키텍처에 대해 간단히 알아보았어요.

다음글에서는 실제로 우리가 구매하는 NVIDIA 외장그래픽 카드(GPU) 모델들을 알아보도록 하겠습니다! ㅎㅎ




[글 래퍼런스]

http://donghyun53.net/nvidia-gpu-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EB%B3%80%EC%B2%9C%EC%82%AC-%EC%83%81%ED%8E%B8/

http://hwengineer.blogspot.com/2018/03/v100-tensor-core.html

https://greatzzo.tistory.com/m/56

http://haanjack.github.io/cuda/2016/03/27/cuda-prog-model.html

https://www.hardwaretimes.com/simd-vs-simt-vs-smt-whats-the-difference-between-parallel-processing-models/

https://www.nvidia.com/ko-kr/technologies/multi-instance-gpu/

https://www.nvidia.com/ko-kr/data-center/nvidia-ampere-gpu-architecture/


[사진 래퍼런스]

사진1

https://www.notebookcheck.net/Nvidia-will-end-critical-updates-for-Kepler-laptops-on-April-2020.413755.0.html

사진2,13,14,15

http://donghyun53.net/nvidia-gpu-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EB%B3%80%EC%B2%9C%EC%82%AC-%EC%83%81%ED%8E%B8/

사진3

https://m.blog.naver.com/PostView.nhn?blogId=alwaysneoi&logNo=100133312954&proxyReferer=https:%2F%2Fwww.google.com%2F

사진4

https://ko.wikipedia.org/wiki/%EC%B4%88%EC%9B%94%ED%95%A8%EC%88%98

사진5,6

http://tcpschool.com/cpp/cpp_datatype_floatingPointNumber

사진7

https://wttjj.tistory.com/293

사진8

https://towardsdatascience.com/neural-network-architectures-156e5bad51ba

사진9

https://m.blog.naver.com/PostView.nhn?blogId=shakey7&logNo=221312640455&proxyReferer=https:%2F%2Fwww.google.com%2F

사진10

https://www.semanticscholar.org/paper/NVIDIA-%E2%80%99-s-Fermi-%3A-The-First-Complete-GPU-Computing-Glaskowsky/620f84d78b228d4a3b03b7aee40c4d9e46287d36

사진11

https://www.geeks3d.com/20120517/nvidia-kepler-gk110-architecture-whitepaper-2880-cuda-cores-and-compute-capability-3-5/

사진12

https://www.researchgate.net/figure/NVIDIA-Kepler-architecture-7_fig2_270876234

사진16

https://www.slideshare.net/insideHPC/inside-the-volta-gpu-architecture-and-cuda-9

사진17,19

http://hwengineer.blogspot.com/2018/03/v100-tensor-core.html

사진18

https://www.nvidia.com/ko-kr/data-center/tensor-cores/

사진20

https://www.bodnara.co.kr/bbs/article.html?num=140148

사진21

https://news.developer.nvidia.com/cudnn-7-5-now-available/

사진22

https://www.reddit.com/r/nvidia/comments/973dqp/pascal_vs_turing/

사진23

http://drmola.com/reviews/298395

사진24

https://quasarzone.com/bbs/qc_qsz/views/180581

사진25

https://www.anandtech.com/show/13282/nvidia-turing-architecture-deep-dive/4

사진26

https://www.udna.kr/tesla

사진27

https://analyticsindiamag.com/tesla-t4-nvidia-gpu/

사진28

https://www.wepc.com/news/nvidia-ampere-gpu/

사진29

https://developer.nvidia.com/automatic-mixed-precision

사진30

https://www.nvidia.com/ko-kr/data-center/nvidia-ampere-gpu-architecture/

사진31

https://www.servethehome.com/nvidia-tesla-a100-ampere-resets-the-entire-ai-industry/

사진32

https://namu.wiki/w/NVIDIA/GPU?from=GeForce#s-3.15

사진33

https://www.nvidia.com/ko-kr/technologies/multi-instance-gpu/


안녕하세요~


이번글은 GPGPU라는 개념과 CUDA를 소개하면 GPU구조를 가볍게 살펴볼거에요.




<1.GPGPU>


CPU는 다양한 시스템 자원(ex; I/O device)를 제어해야하고 복잡한 명령들을 처리해야하기 때문에 연산을 위한 장치 이외에도 다른 구성요소들이 존재해요. 


하지만 GPU는 본래 그래픽처리를 위해 고안된 장치였기 때문에 단순한 연산들을 병렬로 고속처리가 가능했었죠. (CPU처럼 제어기능이 필요없기 때문에 복잡한 구조를 버리고 연산(ALU)에 특화시킨 장치로 활용되기 시작한거죠. 그렇기 때문에 GPU는 단독으로 시스템자원을 활용할 수 없어 CPU의 제어를 받아야해요.)


예를들어, 다차원 행렬과 같이 병렬적으로 연산처리가 가능한 과학계산에서도 유용하게 쓰일 수 있다는 사실을 발견했던거죠.


이렇게 단순히 그래픽처리만 하는 GPU와 달리 병렬로 연산기능까지 수행하게 되면서 GPU를 GPGPU(General Purpose GPU)라고 부르기 시작했답니다. "그래픽처리+과학연산" 개념을 묶어서 GPGPU라고 부르긴 하지만 다시 GPU라고 부르고 있어요.


<사진1.GPU 초록색 부분이 ALU를 의미하며 일반적으로 core라고 부른다>







<2.CUDA(Compute Unified Device Architecture)>


(GP)GPU의 등장으로 병렬계산을 뒷받침해줄 소프트웨어가 필요했어요.

과거 GPU를 그래픽용도로만 사용했을때는 OpenCL, DirectX라는 병렬 소프트웨어가 있었는데 이를 구사하기 위해서는 독특한 언어(HLSL, GLSL 등)을 배워야했으며 그래픽스 목적으로 만들었기 때문에 이래저래 공부할것도 많았죠.


(GP)GPU 개념이 등장하면서는 C/C++ 언어로 병렬계산에 필요한 기능들을 제공해주는 소프트웨어가 만들어졌어요. 대표적인 소프트웨어가 NVIDIA의 CUDA입니다. 그래서 딥러닝을 하시거나 머신러닝을 하시는 분들은 먼저 tensorflow, pytorch 등의 프레임워크를 설치하실 때 CUDA 먼저 설치해야 했던거에요!



CUDA가 진행되는 방식을 설명드려볼게요.


1)병렬처리할 데이터들을 main memory에서 GPU memory로 이동시킨다.

2)CPU는 GPU에게 GPU memory에 있는 데이터를 연산하라고 명령한다.

3)GPU는 CPU가 명령한 연산처리를 병렬로 수행한다.

4)GPU가 작업을 다 마치면 다시 GPU memory에 결과물을 저장하고, 다시 main memory로 해당 결과물을 업로드한다. 그리고 CPU가 main memory에 접근해 해당 결과물을 이용하여 작업을 마무리한다.


<사진2>




CUDA는 기본적으로 CPU와 GPU 코드를 조합해서 코딩합니다. CUDA는 NVCC(NVidia CUDA Compiler)라는 NVIDIA 독점 컴파일러를 통해 CPU에서 수행되는 코드(.c(C)/.Cpp(C++))와 GPU에서 수행되는 코드(.cu)가 분리되어 컴파일이 됩니다. 



<사진3>


그리고 Linker에 의해 하나의 실행파일(binary file)이되어 CPU에서는 Serial Code로, GPU에서는 Parallel code로 순차실행이 됩니다. (이런 과정 때문에 앞서 언급한 CPU, GPU간의 병목현상이 일어납니다.)



<사진4>



<사진5>






<3.cuDNN>


하드웨어 가속이란 컴퓨팅 일부 기능을 CPU에서 구동하는 소프트웨어 방식보다 더 빠르게 수행할 수 있는 하드웨어의 사용을 말합니다. 예를들면, GPU의 블리팅 가속 기능이 있죠. 블리팅 가속이 뭔지 몰라도 컴퓨팅의 일부 기능을 GPU에서 한다고 생각하시면 될 것 같아요. 보통 하드웨어 가속은 GPU를 활용하기 때문에 GPU 가속이라고 합니다.


GPU 가속장치는 그래픽 처리 장치, 부동 소수점 장치 등이 있고, 이들로 인해 빠른 연산을 가능하게 합니다 (부동 소수점 이야기는 다음 글에서 하도록 할게요~)


(GP)GPU는 복잡한 연산을 하기 위한 방향으로 발전되고 있어요. 그 대표적인 예가 딥러닝 연산이죠. 

딥러닝 연산을 고려하는 하드웨어가 발전하면 이를 뒷받침해주는 딥러닝 기반 소프트웨어도 발전해야겠죠? 그래서 나온 라이브러리(소프트웨어)가 cuDNN ((NVIDIA) CUDA Deep Neural Netowkr)이에요. (cuDNN 역시 NVIDIA에서 만들었답니다). 그렇기 때문에 딥러닝 관련 연산을 빠르게 해줄 수 있도록 도와주는 라이브러리로 구성되어 있답니다.


좀 더 정확히 NVIDIA가 정의한 cuDNN은 아래와 같아요.


"The NVIDIA CUDA Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks."


"cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, pooling, normalization, and activation layers."


"cuDNN accelerates widely used deep learning frameworks, including Caffe2, Keras, MATLAB, MxNet, PyTorch, and Tensorflow."






<사진6>






지금까지 GPGPU, CUDA, cuDNN을 통해서 실제로 GPU가 과학연산에서 어떻게 실행되는지 알아봤어요.

다음 글에서는 본격적으로 NVIDIA GPU 모델 아키텍처에 대해 설명해보도록 할거에요. 


다른 GPU 모델도 있지만 최근에 보편적으로 사용하는 모델이 NVIDIA GPU 모델이기 때문에 NVIDIA GPU 모델을 살펴보도록 하겠습니다~





[글 래퍼런스]

http://haanjack.github.io/cuda/2016/02/26/gpgpu-cuda.html


[사진 래퍼런스]

사진1

https://namu.wiki/w/GPGPU

사진2

https://ko.wikipedia.org/wiki/CUDA

사진3

https://hw-lab.com/nvidia-announces-cudax86.html

사진4

https://www.slideshare.net/npinto/iap09-cudamit-6963-lecture-01-gpu-computing-using-cuda-david-luebke-nvidia-presentation

사진5

https://www.slideshare.net/maheshkha/cuda-tutorial

사진6

https://news.developer.nvidia.com/cudnn-7-5-now-available/

안녕하세요~


이번글에서는 내장그래픽과 외장그래픽에 대해서 알아보면서 그래픽카드의 내부구조 동작 방식에 대해 간단히 알아보도록 할거에요. 

그리고 딥러닝을 돌리시다보면 CUDA memory allocation error 라는 메시지 또는 GPU 메모리 관련 메시지가 발생하는데 이러한 이유에 대해서도 알아보도록 하겠습니다~







<1.딥러닝에서 GPU가 필요한 이유>


행렬과 같은 연산을 할때 CPU는 각각의 행렬 elements들을 순차적으로 계산하게 됩니다. 그런데, 행렬이 연산되는 방식을 보면 굳이 순차적으로 할 필요없이 각각의 elements들을 병렬적으로 계산할 수 있다는 사실을 알 수 있어요. 


단순히 3D 그래픽 처리를 위해 고안된 그래픽카드가 오늘날 tensor 계산을 기본으로 하는 딥러닝 연산에 최적으로 적용된셈이죠. (딥러닝 구조가 대부분 numpy 패키지로 구성되어 있다는 점 아시죠?ㅎㅎ)


<사진1>







<2.내장그래픽 VS 외장그래픽>


그래픽카드를 이야기할때 보통 내장그래픽과 외장그래픽으로 나누게 됩니다.


내장그래픽은 보통 CPU 내부에 있는 그래픽카드를 의미하고, 외장그래픽은 CPU 외부에 있는 그래픽카드인 셈이죠. (CPU 내부에 있나, 외부에 있나 그 차이에요!)


사실 내장그래픽만으로도 배틀그라운드 같은 게임도 충분히 돌아가지만 좀 더 생동감 넘치는 게임을 하기위해서는 더 높은 사양의 그래픽 카드를 필요로 해요. 그렇기 때문에 대부분 외장그래픽을 구매해서 모니터와 연결한답니다.


<사진2>



이는 게임뿐만아니라 앞에서 했듯이 딥러닝 또는 복잡한 과학계산을 할 때도 마찬가지로 그래픽카드가 이용됩니다. 그런데 왜 오늘날 딥러닝 모델을 학습시키기 위해서 내장 그래픽이 아닌 외장그래픽을 사용하게 되는걸까요? 







<3.내장그래픽>


CPU의 내장그래픽이 동작하려면 CPU와 마찬가지로 메모리에서 데이터를 읽어들여와야 합니다. 

CPU는 메인메모리 전부를 자신의 공간처럼쓰지만 내장그래픽은 함부로 그렇게할수가 없어요. 그렇기 때문에 내장그래픽이 메인메모리의 일부를 자신의 전용메모리로 사용할건지, 공유해서 사용할할건지 사전에 결정해야 한답니다.


"내PC->오른쪽 마우스 클릭 -> 속성" 으로 접속하시면 가끔 실제 메모리보다 적은 양의 메인메모리가 사용가능하다고 나오는데 이는 메인메모리의 일부(0.11=8.00-7.89)가 내장그래픽의 전용메모리로 잡혀있기 때문이에요. 


<사진3>




하지만 제 컴퓨터 같은경우는 전용메모리로 잡아둔게 없네요. 그렇다면 메인메모리의 일부를 공유하고 있다는 말인데, 어떻게 확인할 수 있을까요?




"작업 관리자 -> GPU(내장그래픽) -> 성능 탭"을 보시면 메인메모리의 절반인 2G를 공유메모리로 사용하고 있어요 ㅎㅎ




그런데 생각해보세요. 딥러닝 모델이 보통 많은 용량을 차지하는데 이 모델을 학습시킬때 메인메모리에 올리고 내장그래픽이 사용한다고 하면 CPU가 과부하 걸리지 않을까요? 

또한 내장그래픽카드의 연산능력은 당연히 CPU크기가 커지지 않는한 비약적으로 좋아지진 않을거에요. 


차라리 외부에 장치를 두어서 그래픽 또는 병렬계산을 해주는 장치를 따로 두는게 좋지 않을까요? 그 장치에는 더 큰 용량의 전용메모리를 주면 CPU가 부담을 덜 수 있지 않을까요? 


위와같은 질문을 통해 오늘날 GPU라고 인식하고 있는 외장그래픽이 등장하게됩니다!





<4.외장그래픽>


앞선 질문들에 대한 해답으로 외장그래픽이라는 개념이 등장하게 됩니다.


우리가 흔히 보는 GPU는 외장그래픽을 의미합니다.

외장그래픽이 하는일은 병렬계산과 같은 일을 CPU가 던져주면 해당 내용을 자신들의 전용메모리인 VRAM에 저장시킵니다. 그리고 GPU에서 VRAM에 접근해 작업을 처리하게 됩니다. 쉽게 말해 외장그래픽에서 CPU역할을 GPU가, RAM역할을 VRAM이 한다고 보시면 됩니다.  

<사진4>



외장그래픽카드도 공유메모리를 이용할 수 있지만 전용메모리(Directed GPU memory usage)크기가 내장그래픽보다 큰것을 볼 수 있죠?




외장그래픽에 자체메모리를 두는 또 다른 이유는 고속연산을 하기 위해서에요. 일반 메인메모리는 기본적으로 많은 양의 process를 올려서 CPU가 언제든지 접근할 수 있게 준비해주는게 필요하고, GPU는 특정 계산을 고속으로 처리해주어야 하기 때문에 메인메모리보다는 작지만 외장그래픽 내부에 자체 메모리를 두어 메모리 접근에 대한 물리적 거리를 단축시켜주게 됩니다.



이렇게 자체메모리를 두기 때문에 딥러닝 같은 모델을 GPU에 올려놓고 학습데이터들을 GPU에 batch size만큼 올려주게 됩니다. 그런데 GPU의 메모리가 적다면 무거운 딥러닝 모델도 올리지 못할거에요. 딥러닝 모델을 올린다고 하더라도 잔여 메모리양(= 기존 VRAM - 딥러닝 모델 용량)이 많지 않기 때문에 training dataset의 batch size를 크게 잡아서 학습을 진행시키면 "CUDA allocation error (GPU 메모리양이 부족하다는 뜻)" 메시지가 출력된답니다. (batch size가 딥러닝 일반화 성능에 크게 영향을 미친다는 논문도 발표된거 보면 GPU의 메모리가 얼마나 중요한지 아시겠죠?)




딥러닝을 위해서는 CPU보단 GPU가 더 중요한것 같은데, 그렇다면 아래와 같은 질문에 대해선 어떻게 생각하시나요?


"Q.CPU는 저사양으로 사용해서 돈을 절약하고, GPU만 고사양으로 사서 컴퓨터를 맞추면 되나요?"


결론부터 말씀드리면.....

 

"A.GPU 성능과 CPU의 성능차이가 많이 나면 서로간에 통신을 할때 병목현상이 생기기 때문에, 어느정도 서로 스펙을 맞춰줘야해요!"


그럼 이제부터 GPU와 CPU간의 병목현상이 왜 생기는지 알아보도록할게요!





<5.GPU와 CPU간 병목현상>


아래 그림처럼 GPU가 일을 하기 위해서는 CPU로부터 작업을 할당받아야해요.

외장그래픽(여기서부터는 GPU라고 할게요)에는 자신의 자체 메모리(ex:VRAM)이 있어요. GPU또한 CPU와 비슷한 역할을 하기 때문에 어떤 작업을 하기 위해서는 메모리에 접근해야해요. 그래서 CPU가 DMA를 통해 GPU가 작업할 일을 GPU의 메모리(VRAM; 아래그림에서는 Device memory)에 올려두게 됩니다.



<사진5>




1) 병목현상의 원인1 - CPU와 GPU간의 성능차이


앞서 GPU는 CPU에게서 작업을 할당받는다고 했죠? 

만약 작업이 마무리되면 어떻게 될까요?

물론 다시 CPU에게 자신의 작업이 완료됐다는 사실을 알리고 CPU는 이에 따른 작업을 수행하기 될거에요.



<사진6>



그런데 만약 CPU는 성능이 낮아 다른 업무들도 빠르게 처리하기 버거운데, 성능좋은 GPU는 자신의 작업을 빠르게 마무리하게 계속해서 CPU에게 주면 어떻게 될까요? 결국 CPU는 할일이 쌓여만 가는데 우선순위 때문에 GPU관련된 task를 수행하지 못하고 있을거에요. 


사람입장에서는 CPU가 GPU의 일을 빨리 처리해주지 못하다보니 "GPU의 성능이 좋지않군" 이렇게 판단하게되고 GPU는 굉장히 억울한 입장에 놓일거에요.


이렇게 CPU가 성능이 떨어져 GPU의 성능을 뒷받침 하지 못하는 경우를 CPU와 GPU간의 병목현상이라고 부른답니다.



Bottleneck calculator(링크)에 접속하시면 아래와 같은 그림이 생성되요.



굉장히 낮은 성능의 CPU와 높은 성능의 GPU를 컴퓨터에 세팅한다고 하면 얼마나 큰 병목(bottleneck)이 생길까요?



대략 46%의 Bottleneck이 생긴다고 하네요.


  





친절하게 i7-8700k에 해당하는 CPU로 바꾸는게 좋겠다고 추천까지해주니 편하네요!








2) 병목현상2 - PCI Bus (Peripheral Component Interconnect Bus) = PCIe(express), (feat.NVLink)


앞에서 언급한 CPU와 GPU간의 병목현상의 또 다른 원인이 되는것이 PCI Bus에요.


PCI Bus는 RAM과 VARM 사이의 데이터 전송 통로입니다. 


<사진7.위에서부터 4, 16, 1, 16 레인>




기본적으로 PCIe bus의 성능이 좋지 않으면 VRAM에 전달해주는 데이터속도가 빠르지 않을거에요.


<사진8>




<사진9>






<사진10. CPU 스펙의 한 부분을 차지하는 PCIe version>








만약 Multi-GPU(ex; GPU1, GPU2)를 사용할 경우 GPU1과 GPU2가 서로 통신하려면 어떻게 해야할까요? 그냥 서로 통신하면 될 것 같은데, PCIe로 구성된 구조에서는 GPU1에서 PCI bus를 거쳐 다시 GPU2로 전송되게 됩니다.


이렇게 되면 GPU1, GPU2가 서로 직접적으로 통신하는것 보다 더 많은 시간이 소요될 수 있어요 (PCIe를 한 번 거친다는건 물리적 거리가 소용된다는 말이니까요)







이러한 문제를 해결하기 위해 NVLink를 지원해주는 GPU가 등장했는데요. NVLink는 쉽게 말해 GPU간의 통신을 빠르게 해주기 위해 GPU들을 연결해주는 장치라고 생각하시면 될거에요.


<사진11>


PCIe 3.0 레인의 전송속도는 8GT/s 인 반면에, NVLink는 20Gbit/s (PCIe 3.0 대비 2.5배) 전송속도를 자랑하며, GPU1&GPU2 인접한 GPU간의 전송은 40Gbit/s 라고 합니다 (GT/s = Gbit/s 라고 간주하셔도 됩니다)



<사진12>



<사진13. PCIe VS NVLink 속도차이 with ResNet-50>





3) GPU 내부에서 발생하는 병목현상



GPU는 VRAM으로부터 데이터를 받아 연산을 수행하게 됩니다. 


많은 양의 데이터가 VRAM에서 GPU로 이동할때 시간이 좀 걸리겠죠? 

만약 GPU 할당받은 작업을 굉장히 빨리 끝낸다면 어떻게 될까요?


VRAM에서 GPU로 데이터를 이동시키고 있는 도중에 GPU가 이미 작업을 끝낸다고 하면 GPU 입장에서는 "나 일다 끝났는데 왜 빨리 다음일을 안주는거야.. 이러면 내가 놀게되잖아.."라고 하소연하며 VRAM이 작업물을 빨리 넘겨주지 않는다고 생각할거에요.




이러한 문제를 해결하기 위해서는 VARM에서 GPU 넘기는 대역폭이 커야해요. 대역폭이 크면 데이터를 빠르게 전송할 수 있게 되고, GPU가 작업을 마무리함과 동시에 새로운 데이터를 줄 수 있게 됩니다.







지금까지 내장그래픽과 외장그래픽의 차이에 대해서 알아보았어요.

또한 외장그래픽(GPU+VRAM+etc..) 성능을 극대화시키기 위해서는 어떤 요소들이 필요한지도 알아봤습니다.



다음 글에서는 간단하게 GPU의 구조에 대해 설명해보도록 할게요! 

GPU 구조를 아주 간단히 보여드리고 이를 뒷받침해주는 CUDA, cuDNN 이라는 병렬처리 플랫폼(or 소프트웨어)을 소개하도록 하겠습니다!~





 






[글 래퍼런스]

https://blog.inten.to/hardware-for-deep-learning-part-3-gpu-8906c1644664

책: 머신러닝과 블록체인을 떠받치는 GPU의 모든 기술



[사진 래퍼런스]

사진1,2

https://www.youtube.com/watch?v=tsB97IAejbk

사진3

https://m.blog.naver.com/PostView.nhn?blogId=ryujava&logNo=30168166523&proxyReferer=https:%2F%2Fwww.google.com%2F

사진4

http://www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=2875791125&gclid=Cj0KCQjwiYL3BRDVARIsAF9E4Gd6siIhHGLIX6uQ_AgjVXK3XSvGI1T2f8VZ4NNaEfzJM7P7eztBvAIaAr53EALw_wcB&utm_term=&utm_campaign=%B1%B8%B1%DB%BC%EE%C7%CEPC+%C3%DF%B0%A1%C0%DB%BE%F7&utm_source=%B1%B8%B1%DB_PC_S_%BC%EE%C7%CE&utm_medium=%B0%CB%BB%F6

사진5

https://insujang.github.io/2017-04-27/gpu-architecture-overview/

사진6

https://www.slideshare.net/RenaldasZioma/trip-down-the-gpu-lane-with-machine-learning-83311744

사진7

https://m.blog.naver.com/PostView.nhn?blogId=rkalstn2&logNo=30180069244&proxyReferer=https:%2F%2Fwww.google.com%2F

사진8

https://blog.naver.com/alias_maya/20201203156

사진9

https://www.digitalcitizen.life/pci-express-pcie

사진10

https://www.anandtech.com/show/8426/the-intel-haswell-e-cpu-review-core-i7-5960x-i7-5930k-i7-5820k-tested

사진11

http://www.noteforum.co.kr/news/index.htm?nm=28621

사진12

http://playwares.com/sponsornews/57567833

사진13

https://www.pugetsystems.com/labs/hpc/TensorFlow-Performance-with-1-4-GPUs----RTX-Titan-2080Ti-2080-2070-GTX-1660Ti-1070-1080Ti-and-Titan-V-1386/

안녕하세요~


이번글에서는 인텔 CPU 모델 브랜드명을 어떻게 구분하는지 간단하게 설명해보려고합니다.





[인텔]

<1.Intel CPU 변천과정>


인텔의 CPU는 아래 그림과 같이 변화해왔어요.

코어 시리즈부터 메인 스트림급으로 사용되기 시작했는데, 메인스트림이란 고급형(대부분 서버형)에는 못 미치고 보급형보다는 좋은 중간에 위치한 등급을 의미해요. 한국같은 경우는 각 가정에 제공되는 PC 급으로 이해하시면 될 것 같아요. 

<사진1>




인텔 CPU는 출시하는 라인업으로 크게 분류가 되고 세부적으로 세대와 성능으로 또 구분 될 수 있어요.

세대는 Codename이라고 하고 나머지 숫자들이 성능을 의미하는데요. 대부분 세대 높아질수록 좋은 성능을 보여주고 있지만 모두가 그렇진 않아요. (2016:7세대=Kaby Lake, 2017:8세대=Coffe Lake, 2018:9세대=Coffe Lake Refresh, 2019:10세대=Comet Lake)




<사진2>




예를들면, i3 8세대부터 급격한 성능향상을 이루었어요. 사실 i3 8세대를 i5급으로 출시하는게 맞지만 CPU 시장에서 AMD 라이젠 시리즈에 밀리면서 i5보다 한 단계 낮은 i3로 출시하게됐어요. 더 낮은 단계의 세대로 CPU를 출시하면 가격을 좀 더 저렴하게 내놓을 수 있었기 때문이죠. 그래서 i5 7세대를 구매하신 분들보다 i3 8세대를 구매하신 분들이 가격과 성능면에서 훨씬 좋은 선택이었다라고 합니다~ (i3-8100 모델이 가성비가 좋다고하네요 ㅎㅎ)


그외에 i5도 8세대부터 급격한 성능향상을 보였다고 합니다 (i5 8세대부터는 6코어로 만들었다고 합니다). 위에서 처럼 i7 7세대 CPU를 i5 8세대로 팔았다고 하더라구요. (i7은 i5에서 hyper threading 기술이 추가된거라고 보시면 될 것 같아요. (Hyper threading을 모르신다면 -> 링크)






<2.라인업별 차이>










<3.세대별(Codename) 차이>







<사진3>






<4.서버급과 PC급의 차이>


보통 PC용으로 사용하는 컴퓨터는 Intel(R)이라는 브랜드명 마크가 붙어있어요.



반대로 서버급 CPU로 나온 인텔 CPU는 보통 Xeon(R) 이라는 브랜드명을 붙입니다 (물론 시간이지나면 PC용으로 쓰이겠지만요)


Xeon은 조금 모델명이 특이한데요.


<사진4>


일반적으로 아래와 같이 구분하고 있어요.


E3- 소규모 서버용, 저사양 워크스테이션용 CPU

제온 E3은 인텔 i7과 성능이 비슷해 일반 메인보다와 xeon E3 CPU가 호환되던 하스웰까지는 i7 대용으로 쓰이기도 했다고 합니다.


E5 - 중~대형 서버용, 워크스테이션용 CPU

E5부터 multi-processor(CPU를 2개 이상 장착) 구성이 가능해졌다고 합니다.


E7 - 대규모 서버용, 미션크리티컬(시스템이 중간에 멈추면 안되는 환경)

기업이 주문하면 제작, 판매하기 때문에 일반 사용자들은 구하기 어렵다고 하네요







<7.노트북 용 CPU VS 데스크 탑(PC)용 CPU>



<사진5>






<8.CPU 모델 성능비교 사이트>


우리가 어떤 CPU를 구매할때, 몇몇 모델을 비교해보고 싶을 때가 있을거에요. 이때 아래 사이트에 들어가 쉽게 성능비교후 CPU를 구매하면 좋을것 같아 소개해드리려고해요!


https://www.cpubenchmark.net/compare










이번글은 인텔 CPU 브랜드명과 각종 스펙이 어떻게 차이나는지 알아봤어요~

다음글에서는 AMD CPU 브랜드와 스펙을 구분해보도록 할게요~



[글 래퍼런스]

https://blog.naver.com/bsh9792/220788455994

https://post.naver.com/viewer/postView.nhn?volumeNo=15839425&memberNo=10558726


[사진 래퍼런스]

사진1,2

https://blog.naver.com/bsh9792/220788455994

사진3

https://www.dealconsultinginc.com/2018/04/15/intel-processor-generation/

사진4

https://www.servethehome.com/intel-xeon-e3-1200-v6-series-released-incremental-improvement/intel-xeon-e3-e5-e7-positioning/

사진5

https://blog.naver.com/meyouhappy/221551634613


안녕하세요~


이번글에서는 삼성이 왜 파운드리 시장에 뛰어들었는지에 대해 좀 더 다양하게 설명해보려고해요!

지난글에서는 단순히 CPU만 설명을 해드렸다면 이번에는 4차 산업혁명과 맞물려 삼성이 계획하고 있는 바에 대해서 설명드리도록 하겠습니다~




<1.AI Chip>


딥러닝을 하시는 분들이나 인공지능 관련해 복잡한 연산을 해보신 분이라면 순차적으로 계산하는 CPU가 얼마나 비효율적인지 느껴보셨을거에요. 그래서 딥러닝에서 대부분의 계산은 GPU가 담당하고 있죠.


그래서 GPU 회사인 NVIDIA의 성장세가 주목을 받고 있는데요. NVIDIA는 테슬라에 자율주행을 위한 GPU를 공급하고 있는데 이것이 4차 산업혁명에서 CPU 역할을 대체하고 있어요. 


그런데 GPU 같이 큰 장비는 저전력을 요구하는 IoT같은 기술에 접목되기 힘들다는 단점이 있습니다. 오늘날 AIoT, Edge Computing 기술이 주목받고 있는 시대에 CPU 보다는 효율적이고 GPU보다는 전력소모량이 낮은 새로운 연산장치를 요구하고 있는거죠 (AIoT, Edge computing 같은 것은 제가 나중에 소개해 드리도록 할게요 ㅎㅎ).


이러한 요구 끝에 AI chip이라는 새로운 분야가 탄생하게 됐어요. 4차 산업에 맞는 새로운 반도체 연산장체를 만드는 분야라고 보시면돼요. 


삼성은 AI chip 개발의 일환으로 2030년까지 NPU(Neural Processing Unit) 사업 인력을 기존 10배 이상인 2000명 규모로 확대한다고 선포했고, 추가적으로 AMD, Intel과 같이 연구개발중이라고 합니다. 



<사진1>


<사진2





<2.스마트폰의 CPU; AP(Application Processor)>


컴퓨터에는 CPU가 뇌의 역할을 한다면, 스마트폰에서는 AP가 뇌 역할을 합니다. AP는 CPU보다 더 많은 역할을 수행하게 되는데, 기본적으로 주 연산을 하는 CPU, 영상 연산을 하는 GPU, 통신기능 등이 하나의 통합된 칩 형태로 제공이된다고 보시면 될거에요 (경우에 따라서 RAM도 포함된다고 하네요). 


<사진3>


AP를 생산하는 대표적인 기업은 애플(A10 퓨전), 삼성(Exynos), 퀄컴(Snap Dragon)이라고 합니다. 애플과 퀄컴은 팹리스 회사이기 때문에 AP를 설계만 하고 AP을 생산하는 기업은 파운드리 회사인 TSMC에 맡기고 있습니다.


삼성이 파운드리 시장에 뛰어든건 앞선 chapter에서 말씀드린 CPU 보다 AP 시장을 겨냥했기 때문이라고 보는 경향이 더 많습니다. 과연 애플과 퀄컴이 계속해서 TSMC에다 자신의 AP 생산을 맡길 수 있을까요?






<3. 삼성의 움직임>


삼성은 파운드리 회사이기 때문에 AP를 생산할 수 있었던건 많이 알고 있는 사실이었지만, 더불어 AP 설계까지 한다는 점에서 삼성이 얼마나 AP 시장을 크게보고 있는지 짐작할 수 있었어요. 


하지만 삼성은 AP의 핵심 구성 요소 'Core'를 개발하던 연구 부서를 해체하고 이 분야의 강자인 영국 ARM의 기술을 삼성 자체 AP인 Exynos에 활용한다고 발표했습니다. 그래서 2019.10 즘에 발표한 최신 AP Exynos 시리즈 총 8종류 가운데 6개가 ARM의 설계대로 제작되었어요. 


삼성은 AP의 코어를 개발하는 대신 앞서 언급한대로 2030년까지 NPU 분야 인력을 기존 10배 이상인 2000명 까지 늘린다고 발표했어요. 


GPU또한 NVIDIA가 질주하고 있지만 삼성이 AMD와 공동 개발에 착수하기 시작하기까지 시작했다고해요 (GPU에서 NVIDIA와 AMD의 관계를 알고싶다면 --> 링크).


삼성은 4차 산업혁명 시대에 접어들어서 CPU 뿐만 아니라 AP, GPU 등 전반적인 시스템 반도체 분야영역에 뛰어들면서 시스템 반도체 파운드리 분야에서 세계1위를 하겠다는 다짐을 하게 됩니다.











<4.AP시장에서 퀄컴의 독주>


5G에 들어서면서 '모뎀'의 역할도 중요해 졌는데요. 나중에 5G와 모뎀에 대해서 자세히 설명드리고 여기서는 AP 관점에서만 보도록 할게요.

모뎀시장은 퀄컴(qualcomm)이라는 팹리스 회사가 독주하고 있는 상태에요. 모뎀과 AP를 통합시킨 Snap Dragon을 통해 AP시장에서도 1위 자리를 수성하고 있죠(2019년 기준).


애플은 퀄컴의 모뎀을 이용하고 있으며 삼성은 갤럭시S20에 자체 AP Exynos가 아닌 Snap Dragon을 장착시킬만큼 퀄컴의 Snap Dragon은 그 성능을 증명해내고 있어요. 


퀄컴 역시 팹리스 회사이기 때문에 자신들의 제품을 생산하는 건 TSMC에 위탁하고 있어요. 삼성이 파운드리 분야에 뛰어들긴 했는데 퀄컴이 삼성과 어떤 연결고리를 만들어낼지 두고보는것도 흥미진진 할 것 같습니다.






<5.스마트 제조사들이 독자 AP 가져야 하는 이유>


독자 AP를 가지고 있는 스마트폰 제조사들은 스마트폰의 출시를 마음대로 정할 수 있어요.

하지만 퀄컴과 같은 AP제조사들을 이용하는 경우라면 AP제조사들의 상황에 따라 스마트폰 출시계획이 변경될 수 있겠죠?


단적인 예로 올해 상반기 LG전자의 G6 스마트폰에는 최신 AP인 snap dragon인 835가 탑재될 예정이었어요. 그런대 퀄컴이 snap dragon 835의 일부 생산을 삼성의 파운드리에 맡기면서 초기 snap dragon 835 생산량 전량을 삼성이 가지가기로 했습니다. LG는 어쩔 수 없이 조금 떨어지는 성능이 snap dragon 821를 탑재하게 됨으로써 성능이 조금 떨어지는 스마트폰을 출시 할 수 밖에 없었죠.


반면에 화웨이는 자신들의 5G 기술을 접목시킨 독자 5G AP인 하이실리콘 기린 시리즈를 갖고 있기 때문에 화웨이 스마트폰을 출시계획을 문제없이 진행한다고 합니다.


하지만 미-중 무역전쟁으로 인해 다른 국가들이 화웨이 5G 장비를 사용하지 않겠다고 선언하고 있는 상태이기 때문에 이 부분도 어떻게 바뀔지 주목해봐야할 것 같습니다.







<6.(기사를 쓴 시점에서)최근 애플의 움직임>


지금까지 CPU 관련 글을 읽어보셨으면 최근 애플의 개발자 컨퍼런스인 WWDC에서 발표한 주요내용을 보고 정리한 아래 영상을 절반이상(?)은 이해하실 수 있으실거에요 ㅎㅎ






지금까지 CPU 관련 이론과 트렌드를 쫒아 가기위한 기본 용어들에 대해서 설명해보았어요.

다음글에서는 인텔의 CPU와 AMD CPU 모델에 대한 설명을 해보도록 할게요! ㅎㅎ~


[글 래퍼런스]

https://news.appstory.co.kr/howto9500

https://www.techm.kr/news/articleView.html?idxno=7298



[사진 래퍼런스]

사진1

https://news.samsung.com/global/infographic-automotive-intelligence-driven-by-small-packages-under-the-hood

사진2

https://www.slashgear.com/samsung-exynos-9820-finally-gets-its-own-npu-for-ai-13553641/

사진3

https://news.appstory.co.kr/howto9500


+ Recent posts