안녕하세요~


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

+ Recent posts