안녕하세요~


이번글에서는 인텔 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


안녕하세요~


이번글에서는 CPU를 생산하고 있는 양대 산맥인 AMD와 Intel에 대해서 설명드릴까합니다.

그리고 최근 삼성과 관련된 기사들을 살펴보면서 CPU가 어떤 방향성으로 발전해나갈지도 살펴보도록 할게요!




<1.집적기술, Clock 성능을 높이다>


앞서 CPU의 clock속도가 CPU의 성능을 평가하는 중요지표가 될 수 있다고 말씀드렸죠?

그렇다면 CPU의 clock속도는 어떻게 높일 수 있을까요?


CPU의 Clock 속도를 증가시키려면 core수를 증가시켜야해요. 하지만 core수를 늘리면 발열문제가 생기겠죠? 


하지만 반도체 공정을 향상시키면 위와같은 문제를 해결할 수 있어요. 반도체 공정을 향상 시킨다는 이야기는 집적기술이 향상된다는 것이고, 집적기술이 향상되면 발열이 줄어든다고해요 (이 부분은 트랜지스터와 관련된 내용이라고 하는데 자세히 알아보진 않을게요 ㅎㅎ).


아무튼 줄어든 발열만큼 core수를 증가시킬 수 있으니 clock 속도를 증가 시킬 수 있어요! 즉, 하나의 CPU에 얼마나 작은 nano 단위로 core들을 집적시킬 수 있느냐가 굉장히 중요한 이슈가 될 수 있어요.


<사진1>


<사진2>





<2.AMD와 Intel의 계획>


CPU를 제조하는 양대산맥은 AMD와 Intel이라 할 수 있어요. 


Intel은 2015년까지 10nm 의 집적기술을 이용하여 CPU의 성능을 높인다고 했어요. 


<사진3>


하지만 5년이 더 딜레이 된 후 10nm 집적기술을 이용한 CPU를 출시하게 됩니다. 2020년에 10nm 집적공정 기술을 적용하여 intel CPU를 만들어 냈고 추후 7nm 공정을 이용한 CPU 모델인 Ice Lake를 출시하겠다고 발표했어요 (모델에 대한 자세한 설명은 다음에 하도록 할게요!).


<사진4>




하지만 AMD CPU인 라이젠은 이미 7nm에 대한 직접공정기술을 마무리했고 상품을 출시했다고합니다.


<사진5>


그렇다면 7nm 공정인 AMD 라이젠을 사용하면 되는건가요???

답부터 말씀드리면 "아니에요!"





<3. 집적기술 이외에 중요한 요소들>


CPU의 성능을 평가할 때 집적기술 외에 또 다른 중요한 요소가 무엇이 있을까요?


1) CPU 아키텍처


아래그림은 Intel의 i5 8400 모델과 AMD의 R5 1600x 모델 모두 14nm 집적공정기술로 만들어진 CPU이지만 아래 성능(ex:FPS (Frame Per Second))에서 인텔의 i5 8400 CPU가 더 뛰어나다는걸 알 수 있어요.


<사진6>



아래는 인텔과 AMD의 CPU 아키텍처 구조에요. AMD는 core수를 늘리기에는 용이하지만 core와 memory간의 물리적인 latency가 증가하기 때문에 성능에 문제가 일어난다고 합니다.


<사진7>



지금처럼 봤들이 CPU의 성능을 판단하기 위해서는 굉장히 많은 요소들을 따져봐야 하는데요. 좀 더 자세한 내용을 알기 원하시는분은 아래 영상을 참고해주세요!









<4.인텔과 AMD의 결정적인 차이; 반도체 공장>


인텔과 AMD의 가장 큰 차이점은 자체 반도체 공장의 존재 여부입니다. 


인텔은 CPU를 설계하고 이것을 만들어낼 공장이 있지만, AMD는 CPU를 설계만 할 뿐 설계된 도면을 바탕으로 CPU를 생산하는 회사는 TSMC라는 대만회사에요.


그럼 지금부터 설명할 내용들을 이해하기 위해서 몇 가지 용어들을 설명해보도록 할게요!


1)비메모리 반도체

- 우리나라에선 삼성이 메모리 시장을 독점하고 있기 때문에 "반도체=메모리"라는 인식이 강합니다. 반도체에는 CPU 같은 제품도 있는데 우리나라에선 CPU를 제작하는것이 생소하다 보니 메모리 이외의 CPU같은 제품들은 비메모리로 분류하고 있어요


2)시스템 반도체

- 삼성전자 내부에서는 CPU관련 제품을 언급할 때 비메모리 반도체라는 용어보다는 시스템 반도체라는 용어로 사용하고 있어요. 


3)시스템 LSI(Large Scale Integration-대용량 집적회로)

- 시스템 LSI는 하나의 작은 칩에 수만개의 회로가 몰려 있다는 뜻인데 시스템 반도체라는 개념이 시스템 LSI를 포괄하고 있다고 생각하시면 됩니다.


4) Logic-Chip

- 논리적인 연산을 수행하는 반도체란 뜻이기 때문에 보통 CPU 관련 제품을 의미해요. 해외에서는 시스템 반도체라는 용어를 쓰진 않고 전부 Logic-Chip이라는 용어를 사용한다고 합니다. 실제 블룸버그와 같은 외신들이 자주 사용한다고 해요. 


5)팹리스(Fabless: 공장이 없다는 뜻)

- AMD는 반도체 설계만 하고 있고 제조는 하지 않는다고 말씀드렸어요. 이렇게 반도체 제조공장이 없는 회사를 팹리스라고 부른답니다. 생산시설에 대한 투자대신 설계에 집중하는것이죠. 사실 애플도 팹리스로 분류된답니다.


6)파운드리(Foundry)

- 팹리스 회사의 설계도면을 바탕으로 관련제품을 생산하는 회사를 말합니다. 위에서 언급했듯이 AMD는 TSMC에 CPU 생산을 맡기기 때문에 TSMC를 파운드리 회사라고 합니다. (삼성이 이 분야에 도전장을 냈죠!)




<6.삼성 파운드리>


삼성은 TSMC가 독점하고 있는 파운드리 시장에 도전장을 냈습니다.

과연 삼성은 어떤 기술이 있기에 이러한 도전장을 냈을까요?

혹시 EUV라고 들어보셨나요? 2019년 일본이 수출규제로 제시했던 품목중에 포토레지스트가 EUV를 만드는데 중요한 요소라고 설명했던 뉴스를 보실 수 있으실거에요.




EUV란 반도체 집적공정기술으로 이해하시면 될 것 같아요. 앞서 10nm, 7nm 단위로 반도체를 집적시켜 만들 수 있다고 말씀드렸죠? 그런데 EUV 기술을 이용하면 7nm보다 더 작은 단위로 반도체를 집적시킬 수 있다고해요. 이러한 공정기술이 있다면 AMD, Intel 같은 회사가 계속해서 TSMC 회사만 이용할 순 없을거에요 (물론 현재는 두 회사 모두 EUV 기술이 있지만 2018년만해도 EUV기술은 삼성만이 갖고 있던 유일한 기술이었답니다)



 



인텔은 자체적으로 반도체 공장을 갖고 있음에도 불구하고 AMD에 비해 지속적으로 반도체공정에서 밀리는듯 한 모습을 보였는데요. 그랬기 때문일까요? 2019.11월 인텔은 회사창립 후 최초로 삼성에 CPU를 위탁생산을 맡기게 됩니다. 


TSMC에 CPU 위탁을 맡겼던 AMD는 어떤 움직임을 보일까요? 2019.12월 AMD 수석 부사장인 Ruth Coter는 삼성에게 CPU 공정 생성 위탁을 맡길 계획은 없냐는 질문에 "시간이 지남에 따라 삼성, TSMC 등의 조합을 생각해 볼 순 있지만 아직까진 TSMC와 GF(또 다른 파운드리회사)로만 충분히 요구를 충족시키고 있습니다"라고 아리송하게 답변을 내놓았습니다.


과연 삼성은 TSMC를 제칠 수 있을까요?


그런데, "단순히 CPU 하나만 갖고 삼성이 저렇게 무모하게 뛰어 들었을까?" 라는 의문이 들게될거에요. 그래서 다음 글에서 삼성이 지금 왜 CPU관련 시스템 반도체 파운드리 분야에 목숨을 걸고 있는지 좀 더 설명해보도록 할게요!









[글 래퍼런스]

http://news.kmib.co.kr/article/view.asp?arcid=0924083749&code=11151400

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


[사진 래퍼런스]

사진1

https://kr.123rf.com/photo_88213172_%EC%A4%80%EB%B9%84%EB%90%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C%EC%99%80-%EC%B5%9C%EC%8B%A0-cpu%EB%A5%BC-%EA%B0%96%EC%B6%98-%EC%8B%A4%EB%A6%AC%EC%BD%98-%EC%9B%A8%EC%9D%B4%ED%8D%BC-%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C%EC%9D%98-%EC%95%9E%EB%A9%B4%EA%B3%BC-%EB%92%B7%EB%A9%B4-%ED%98%84%EC%8B%A4%EC%A0%81%EC%9D%B8-%EB%B2%A1%ED%84%B0-%EC%9D%BC%EB%9F%AC%EC%8A%A4%ED%8A%B8-%EB%A0%88%EC%9D%B4-%EC%85%98-.html

사진2

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

사진3

https://dvdprime.com/g2/bbs/board.php?bo_table=pc_players&wr_id=122667

사진4

https://www.csitquestions.com/blog/intel-ice-lake-server-roadmap-delayed-struggles-to-make-appearance

사진5

https://eteris.tistory.com/1740

사진6,7

https://www.youtube.com/watch?v=vjVvhlp90SE&t=1s

안녕하세요~


이번글은 Multi-Core, Thread, Context switching이라는 개념을 설명을 드리고 CPU 스펙을 평가하기 위한 기본 이론지식을 마무리하도록 할거에요~






<1.Clock>


CPU는 메모리에서 명령어를 처리하는 역할을 한다고 했죠? 그렇다면 CPU가 명령어를 처리하는 속도는 어디서 기인할까요?


바로... Clock 입니다!


Clock이라는 건 초당 0,1이 얼마나 반복될 수 있는지를 보여주는 CPU의 성능지표에요. 즉, Clock이 빠를 수록 더 많은 0,1을 처리할 수 있게되기 때문에 더 빠르게 명령어들을 처리할 수 있게 되는거죠. 예를들어, 1Hz라고 한다면 1초당 0과1이 한 번 반복하는것이고, 1MHz라고 한다면 초당 0,1이 백만번 반복하게 되는거에요.


<사진1>



그래서 2004년까지는 CPU의 성능을 높이기 위해 Clock 속도를 높였는데요. Clock 속도를 높이자 CPU의 발열문제가 발생하기 시작했어요. 그래서 이때부터 Single core가 아닌 core를 두 개로 늘리는 전략을 구성하기 시작한것이죠. 생각해보면 process들이 서로 종속되지 않은 경우가 많기 때문에 하나의 core에서만 동작할 이유는 없었던거죠.


Core의 수가 더 많이지면 서로간의 발열문제가 더 심해질 수 있어서 single core에서 1.8Hz를 사용했다면 dual core에서는 각각 1.3Hz 정도로 낮춰서 사용하게 됩니다.



제가 사용하고 있는 "Intel Core i5-9600K processor"를 인터넷에 검색해보니 6개의 core를 사용하고 있다고 되어있네요. "윈도우키->작업 관리자->CPU->성능 탭"을 보니 정확히 6개의 코어가 작동되는걸 볼 수 있어요.


그런데 core밑에 thread라고 되어 있는데, thread는 무엇일까요?

바로 알아보도록 할게요!









<2. Thread>


Single Core에서 Dual Core로 기술이 발전하면서 CPU의 성능은 좀 더 좋아지기 시작했어요. 

CPU 설계자들은 더 좋은 CPU를 개발하려고 하다 문뜩 "하나의 Core에서 하나의 process만 동작하는데 이 process를 병렬로 구현시키면 어떨까?"라는 생각을 하게 됐어요.


Code를 작성해서 program을 만들때,  각각의 코드들이 고유의 영역을 갖는다는 사실 기억하시죠? (기억이 안나신다면 --> 링크)


<사진2>



<사진3>



Stack 영역 같은 경우는 해당 함수가 실행되고 나면 바로 메모리에서 소멸되기 때문에 굳이 process 내의 모든 요소들이 stack을 공유할 필요는 없어요. 예를들어, 지역함수가 실행된다고 해서 다른 code, data, heap에 있는 요소들이 stack의 정보를 필요로 하는건 아니니까요. 하지만 반대로 Code, Data, Heap 같은 영역의 데이터들은 stack이 공유해야 할 필요가 있어요. 단순한 예를들면, 지역함수가 실행되도 전역함수를 사용할 수 있기 때문이죠.


그래서 사람들은 process에서 code, data, heap 영역은 공유자원으로 하고 stack 같은 건 따로 병렬적으로 처리해도 되겠다라고 판단한거에요. 그래서 이러한 stack을 처리하기위해 thread라는 개념이 탄생하게 된거죠.


<사진4>


각각의 Thread는 process의 code, data, heap영역을 공유하고 stack을 별도로 처리하게 됩니다. 그렇다면 Thread도 자신들의 자료구조가 있겠죠? (Process의 PCB처럼요!)


우리는 Thread의 자료구조를 TCB(Thread Control Block)이라고 부른답니다. 대부분의 PCB와 비슷하지만 아무래도 process의 일부 영역을 공유하고 있기 때문에 TCP는 PCB보다 더 단순하답니다 (굳이 TCB에 중복되는(공유하고있는) PCB 정보를 추가해줄 필요는 없잖아요?)


<사진5>



일반적으로 하나의 core에 하나의 thread를 두고 있지만, 하나의 core에 두 개의 thread를 동작시키게 하면 위에서 언급한것 처럼 stack을 병렬로 처리할 수 있기 때문에 CPU의 속도가 더 빠르다고 느껴질거에요. 이렇게 하나의 core에 두 개의 thread를 두는 기술을 Hyper Threading이라고 한답니다 (2002년도에 hyper threading 기술이 나온걸 보면 Single core -> Thread -> Dual Core 순서로 발전된거 같아요).



<사진6>




<사진7>



Core와 Thread는 다음과 같이 구분할 수 도 있어요.

Core: CPU 안에서 물리적 연산을 담당하는 곳

Thread: 운영체제(OS)에서 인식하고 작동하는 작업 단위


그렇기 때문에 간혹 "작업 관리자"를 보면 single core를 사용하고 있음에도 CPU를 2개로 인식하는 경우가 있는데 이게 운영체제가 2개의 thread를 2개의 core로 착각하고 있기 때문이에요.


<사진8>



Hyper threading 기술은 인텔에서 붙인 이름이고 AMD는 위와 같은 기술을 SMT라고 부른답니다~








지금까지 살펴본 개념을 봐도 CPU의 스펙을 살펴볼때 어렵지않게 보실 수 있으실거에요. 

그럼 다음시간부터는 CPU 제조사들에 대해 알아보고 해당 모델들을 살펴보도록 할게요~








[글 래퍼런스]

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


[사진 래퍼런스]

사진1

https://documentation.help/NI-TClk-Synchronization/niTClk_overview.html

사진2

https://sfixer.tistory.com/entry/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%ADcode-data-stack-heap

사진3

https://aerocode.net/199

사진4

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

사진5

https://www.geeksforgeeks.org/thread-control-block-in-operating-system/

사진6

https://www.youtube.com/watch?v=BYvuF3ziPHc&t=4s

사진7

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

사진8

https://www.youtube.com/watch?v=_dhLLWJNhwY&t=2s



안녕하세요~


CPU를 보시면 x86, x64 아키텍처라는 걸 본적있으시죠? 

폴더갖은 곳에서도 x86, x64 폴더가 따로 존재하는것도 본적있으실거에요!


이번 시간에는 x86, x64가 어떤 개념인지 알아보기 위해 Core에 대해서 알아본 후, CPU, Memory, OS(Operating System)이 서로 어떤 연관을 갖고 있는지 알아보도록 할거에요.




<1.Core란?>


CPU는 기본적으로 메모리의 명령어를 읽고 해당 변수들을 register file에 저장시킨 후, ALU(산술연산장치)를 이용해 계산을 진행하게 됩니다. 그래서 CPU에서 핵심역할을 하는 요소가 보통 register file, ALU 부분이기 때문에 이들을 묶어 core라고 하게 되는거죠.


<사진1>



<사진2>


이 core가 한 번에 32bit 용량에 해당하는 명령어를 처리할 수 있으면 32bit CPU라고 하고, 64bit 용량에 해당하는 명령어를 처리할 수 있으면 64bit CPU라고 합니다. 64bit 명령어를 처리하려면 Core가 좀 더 커야 겠죠? ㅎㅎ


또한 core의 개수에 따라 quad core, dual core 로 나뉠 수 있는데 단순히 quad core가 core개수가 더 많으니까 quad core로 사야겠다가 아니라, 해당 core가 32bit 명령어를 처리할 수 있는 체계를 갖추었는지, 64bit 명령어를 처리할 수 있는 체계를 갖추었는지에 따라 구매 기준이 달라진다는점 알아두시면 좋아요!


<사진3. 실제 CPU는 아니지만 개념을 이해하는데 적절한 그림이라 이용했습니다.>







<2.CPU 명령어 체계 그리고 Memory와의 관계>


앞서 언급한 32bit 명령어 체계, 64bit 명령어 체계라는건 구체적으로 무엇을 의미하느걸까요?


명령어 체계는 크게 실행 코드(op(eration) code)와 피연산자(operand) 부분으로 구성됩니다. 만약 "1+2"를 수행하라는 명령어는 ADD라는 opcode와 R1=1, R=2 라는 operand로 구성되어 있을거에요.


<사진4>


위에서는 8bit 단위가 4개로 구성된 명령어 체계이니 32bit 명령어 체계라고 할 수 있겠죠?

만약 64bit 명령어 체계라면 훨씬 더 복잡한 명령어들을 처리할 수 있을거에요.


메모리 챕터를 보신 분들은 아시겠지만 (못 보셨다면 --> 링크)


명령어들은 메모리에 cell 단위(8bit=1byte)로 저장되는데, 이때 32bit 명령어(8bit=1Byte=1 cell X 4)를 처리한다는 뜻은 한 번에 4개의 cell을 참조할 수 있다는 뜻이에요.


CPU는 자신들이 참조하는 메모리의 주소를 관리하는 레지스터(EIP, ESP)를 갖고 있어요. 32bit CPU는 32bit 명령어 체계를 처리해야하기 때문에 해당 레지스터는 32bit의 크기를 갖고 있답니다. 레지스터가 32bit 크기를 갖고 있으면 4G(2^32) 만큼의 메모리 주소에 접근 할 수있게되요 (하나의 bit에는 0,1의 경우의 수가 있으니 32bit라고 한다면 2^32의 경우의 수를 나타낼 수 있겠죠? 즉, 2^32(=4,294,967,296)가지의 경우의 수를 다를 수 있고 각각의 경우의 수를 메모리 주소라고 한다면 32bit CPU는 4G(=2^32=4,294,967,296)의 메모리 주소를 커버할 수 있게 된답니다. 다른 말로하면 32bit CPU는 4GB 이상의 메모리를 사용하지는것이 무의미하다는 이야기이죠! 왜냐하면 CPU는 2^32=4GB 정도의 주소체계만 관리할 수 있으니까요!


<사진5>







<3. CPU x86, x64 아키텍처 그리고 운영체제와의 관계>


3-1) x86

앞서 CPU가 32bit 명령어 체계를 처리할 수 있으면 32bit CPU가 된다고 말씀드렸죠?

1990년대 Intel과 AMD가 32bit 명령어 체계를 처리할 수 있는 CPU를 설계했는데, 이때 인텔에서 32bit 명령어 체계(=8080 명령어세트)를 처리할 수 있도록 설계된 CPU를 x86 아키텍처라고 명명하게 되었어요. 


3-2) x64

x64는 1999년에 발표된 x86 기반의 64bit 명령어 체계를 처리할 수 있는 CPU 아키텍처에요. x86을 기반으로 했기 때문에 x86 확장판이라고도 불리며 'x86-64' 아키텍처라고도 불리고 있답니다. x64와 같은 개념으로 사용되는 용어로는 'AMD64', 'x86-64', 'EM64T', 'Intel64' 가 있답니다.



3-3)CPU와 운영체제의 관계


64bit CPU는 말 그대로 CPU 하드웨어 성능을 의미합니다. 그런데 만약 운영체제가 32bit만 지원가능 하다면 어떻게 될까요? CPU가 64bit 명령어 체계를 처리할 수 있으니 운영체제에서 운반해주는 32bit 명령어도 충분히 처리할 수 있을거에요 (64bit 명령어 체계에서 32bit만 사용하고 나머지를 0으로 처리하면 되니까요). 하지만 이런경우 32bit CPU를 쓰는것과 64bit CPU를 쓰는것에 큰 차이는 없을거에요.


반대로 CPU가 32bit인데 운영체제가 64bit라면 메모리에서 CPU로 명령어를 넘겨줄때 64bit 단위로 넘겨주므로 CPU 해석을 하지 못할거에요.


<사진6>




<사진7>











[사진 래퍼런스]

사진1

https://slideplayer.com/slide/7483714/

사진2

https://www.guru99.com/32-bit-vs-64-bit-operating-systems.html

사진3

http://www.itworld.co.kr/t/62079/%C3%AF%C2%BF%C2%BD%C3%88%C2%B5%C3%AF%C2%BF%C2%BD%C3%AF%C2%BF%C2%BD%C3%AF%C2%BF%C2%BD%C3%AF%C2%BF%C2%BD%C3%8C%C2%B5%C3%83%C2%A5/89627?page=0,1

사진4

https://kwonsye.github.io/computer%20science/2019/04/14/ca-4.html

사진5

https://www.cs.virginia.edu/~evans/cs216/guides/x86.html

사진6

https://eine.tistory.com/entry/64%EB%B9%84%ED%8A%B8-32%EB%B9%84%ED%8A%B8-CPU%EC%99%80-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC


'컴퓨터 하드웨어 > CPU(Central Processing Unit)' 카테고리의 다른 글

6.인텔 CPU 브랜드명 구분하기  (0) 2020.06.30
5.AI chip 그리고 퀄컴  (0) 2020.06.29
4.AMD, Intel 그리고 삼성  (0) 2020.06.29
3.Multi-Core와 Thread  (1) 2020.06.29
1.Process와 CPU scheduling  (0) 2020.06.28

안녕하세요~


이번시간에는 CPU의 스펙중 가장 큰 부분을 차지하는 코어와 스레드라는 개념에 대해서 알아보도록 할게요!


이번 시간은 다른 시간과는 다르게 C언어의 지식이 어느정도 있어야 이해가 가능해요ㅜㅜ

(그런데 조금 읽어보니 필요없을수도 있는것 같아요 ㅎㅎ)




<1.Program>


컴퓨터의 CPU는 메모리에서 명령어를 읽어드린다는 사실 기억하시죠? 또한 내가 어떤 프로그램을 수행시키려면 해당 프로그램이 Disk(SSD,HDD)에서 메모리에 업로드가 돼야한다는 사실도 기억하실거에요!


(기억이 안나시면 이 챕터를 참고해주세요! --> 링크)



그렇다면 프로그램이라는건 어떻게 구성되서 CPU에서 차례대로 진행되는 걸까요?


프로그램은 프로그래밍 언어로 구성되어 있어요. 아래 사진에서 C언어로 구성된 프로그램이 만들어 졌다고 가정해볼게요. C언어로 만들어진 프로그밍 언어들은 각각 역할에 따라 고유의 영역으로 나뉠 수 있어요. 


<사진1>


Code영역: for, while, if 와 같은 조건문이나 상수값 같은 경우는 코드가 실행되는 중간에 변경이 불가능해요. 그래서 컴파일(Compile) 과정에서 아예 기계어로 변경시켜 읽기전용(Read-Only)으로 만들어 놓은 곳이라고 보시면 될거에요. 예를들어, hex, bin 파일이 code영역에 해당되는 곳이라고 보면 되겠네요!


Data영역: 데이터 영역은 전역(global), 정적(static) 변수, array, 구조체(structure)가 저장되는 곳이에요. 지금 나열한 요소들의 특징은 프로그램이 종료되기 전까지 없어지지 않고 메모리 영역을 차지하고 있는다는 점이에요. 하지만 해당 값들은 변경이 될 수 있기 때문에 컴파일(Compile)과정에서 기계어로 번역되지는 못하고, 메모리에 크기만 결정되게 됩니다.


BSS영역: Data영역과 대부분 유사하나 BSS영역은 초기화되지 않은 전역, 정적 변수, array, 구조체가 저장되는 곳이라고 해요. 



<사진2>



Heap영역: 프로그램을 구성하다보면 의도적으로 프로그램이 동적으로 메모리를 할당받아야 하는 경우가 있어요. 그렇기 때문에 프로그램이 실행하는 중간에 크기가 결정이 됩니다. C언어에서는 malloc(), calloc() 과 같은 함수가 이러한 역할을 하게되는데, 이때 이러한 역할을 하는 요소들을 모아놓은 곳이 heap이에요.


Stack영역: C언어에서 흔히 사용되는 지역변수, 매개변수, 리턴 값 등이 이곳에 해당됩니다. 이곳은 해당 코드가 실행되고 종료되면 바로 사용했던 메모리를 반납합니다. 그래서 이 역시 또한 프로그램이 실행하는 중간에 크기가 계속해서 바뀌게 되는거죠. 


Heap과 Stack 영역은 실행 중간에 크기가 바뀌기 때문에 중간에 해당하는 영역을 일정공간 비워두게 됩니다. 그런데 프로그램 코드를 잘 못 작성하게 되면 서로의 영역을 침범하는 경우가 발생하는데요. Heap 영역이 너무 많이 생겨 Stack 영역을 침범하는 경우는 heap overflow라고 하고, 그 반대는 stack overflow라고 합니다.


<사진3>



이렇게 하나의 프로그램이 완성이되면 하나의 단위로써 Disk에 저장되게 됩니다.






<2.Process>


프로그램을 만들어 Disk(SSD, HDD)에 저장시켰으면 실행시켜봐야겠죠?

우리가 프로그램을 실행시키면 운영체제가 Disk에서 해당 프로그램을 메인메모리에 올려주게 됩니다.


그럼 프로그램이 (CPU가) 실행 가능한 형태로 변경이되는데요. 이때 메모리에 올라가 실행준비가된 프로그램을 process라고 부릅니다. 실제로 process의 정의는 "process is program in execution"이라고 합니다. 



<사진4>



Disk에 있던 program이 메모리에 올라와 process가 되었다는건, 다시말해 program이 CPU가 이해할 수 있는 구조인 process로 변경되었다는것을 의미하겠죠? 그렇다면 CPU가 이해할 수 있는 process의 구조란 무엇을 의미하는걸까요? 답부터 말씀드리면 PCB가 CPU가 이해할 수 있는 process의 (자료)구조라고 할 수 있어요!




<3.PCB(Process Control Block)>


좀 더 구체적으로 CPU가 이해하기 위해서 process는 어떤 구성요소를 갖고 있어야 할까요? 즉, PCB는 어떻게 구성되어야 하는걸까요?


1)PID (Process ID)

- 프로세스의 고유한 번호에요. 당연히 각각의 프로그램의 고유ID가 있어야 서로 고유의 (메모리)영역을 침범하지 않겠죠? 그리고 프로그램간의 통신을 하는 경우도 발생할 수 있으니 서로 누구인지 인식할 수 있는 ID가 있어야 하기 때문에 PID라는 개념이 생겨났어요.


2)State

- Process의 현재상태를 의미해요. 이 부분은 바로 뒤에 CPU Scheduling 부분에서 설명하도록 할게요.



<사진5>


3)Pointer

- process가 위치하고 있는 메모리 주소 정보에요. 각각의 프로세스는 고유의 영역을 갖고 있다고 말씀드렸는데 해당 영역의 위치정보를 갖고 있어야 하기 때문에 Pointer라는 것이 존재해요.


<사진6>



4)Priority

- 이 부분도 CPU scheduling에서 자세히 설명하도록 할게요.


5) Program counter

- 하나의 process 내에서 다음에 실행될 명령어 주소 값을 가지고 있어요


6)I/O information

- Process가 할당 받은 I/O 자원들에 대한 정보에요. 이 부분도 아마 CPU scheduling을 보시면 더 명확히 이해하실 수 있으실 거에요.


7) Accounting information

- CPU를 사용한 시간 정보입니다.



앞서 '2)State, 4)Priority, 6)I/O information 에서 CPU scheduling에 대해서 언급한 바 있었는데요. 간단하게 CPU scheduling이 무엇인지 알아보도록 할게요!






<4.CPU Scheduling>


우리가 컴퓨터에서 작업을 할 때, 대부분 하나 이상의 프로그램들을 실행시키게됩니다. 이때 프로그램들이 메모리에 업로드되어 각각 고유의 process들이 되는데요. 그렇다면 CPU는 아래 그림처럼 process1 작업이 다 끝날때까지 다른 process에는 접근을 안할까요??  만약 Process1을 실행시키다가 굳이 CPU가 하지 않아도 될 작업들이 진행될 때, cpu가 다른 process의 일을 처리하고 다시 process1으로 접근하면 더 효율적이지 않을까요?


<사진7>


위와 같은 질문을 통해 나온 개념이 CPU scheduling이라는 개념이에요. 우리는 운영체제라는 시스템이 CPU가 놀지 않도록 process의 상태에 따라 cpu를 scheduling하도록 설계했답니다. 즉, 수 많은 process가 하나의 CPU를 점유하려고 달려들때 운영체제가 CPU를 문제 없이 점유 하도록 process들을 scheduling(관리) 해준다는 개념인거죠!



<사진8. CPU scheduling>



하나의 예를들어볼까요?


특정 process는 CPU에 의해 실행이 되다가 프린트 또는 다른 입출력 장치를 이용할 경우 다른 process에게 CPU를 양보하게 됩니다. 생각해보면 '워드 2장을 프린트로 출력'하는 행위는 CPU가 하는게 아니라 프린터가 하는거에요. 그래서 CPU가 워드 2장에 대한 내용만 프린터에 전달해주면 CPU의 역할을 끝나게 됩니다. 그런데 CPU가 프린터가 끝날때 까지 기다려야 하나요? 아니죠! 그래서 프린터와 같이 CPU와는 별개의 작업이 진행될 때는 해당 process가 잠시 대기 상태('2)State')가 됩니다.

그런데 만약 프린터작업이 끝났을 경우에는 어떻게 할까요? 만약 워드 프로그램에서 프린터 작업이 마무리 되면 알아서 프로그램이 종료가 되나요? 아니죠! 프린트 작업이 마무리 되려면 CPU가 해당 '워드 프로그램에게 프린터 작업 종료해!'라고 말해야해요. 안그러면 다른 문서를 프린트하려고 하면 '현재 계속 프린트가 작동되고 있습니다'라는 메시지를 전달할거에요...


그래서 프린트 작업이 끝나면 대기가 되었던 process를 다시 CPU가 점유해야해요. 그런데 다른 process들도 있는데 어떻게 CPU를 다시 점유할 수 있을까요? 이러한 문제 때문에 I/O 같은 작업으로 인해 CPU를 양보해주는 process들은 이 작업이 끝나면 가장 먼저 CPU를 점유할 수 있도록 해줍니다. 즉, CPU를 선점할 수 있는 우선권('4)priority')를 제일 높게 설정해주는거죠!




그렇다면 실제로 우리 컴퓨터에서는 얼마나 많은 process가 동작하는지 볼까요?


"윈도우키 -> 작업 관리자 -> 성능 탭" 순서로 보시면 CPU의 process가 얼마나 많이 실행되는지 볼 수 있을거에요.  



이번 시간에는 Process와 CPU scheduling에 대해서 알아봤어요.

Process의 개념과 PCB라는 개념을 이해하고 있어야 core와 thread에 대한 개념을 좀 더 명확히 이해할 수 있기 때문에 다뤄봤습니다.

다음 시간에는 CPU, Memory, 운영체제간의 관계를 좀 더 디테일하게 알아보고 32bit, 64bit가 뭘 의미하는 것이고 CPU에서 x86이라는건 뭘 나타내는것인지 알아보도록 할게요!





[글 래퍼런스]

https://jungwoon.github.io/android/2019/07/16/Process-Thread/



[사진 래퍼런스]

사진1

https://sfixer.tistory.com/entry/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%ADcode-data-stack-heap

사진2,3

https://aerocode.net/199

사진4

https://copycode.tistory.com/39

사진5

https://jungwoon.github.io/android/2019/07/16/Process-Thread/

사진6

https://docsplayer.org/117139474-Microsoft-powerpoint-o8-pptx.html

사진7

https://slidesplayer.org/slide/14685169/

사진8

https://itdexter.tistory.com/390


+ Recent posts