32bit vs 64bit 컴퓨터와 포인터!!

in #kr-dev3 years ago (edited)


안녕하세요!! @wonnieyoon입니다.
오늘은 컴퓨터에 대해 포스팅 해보겠습니다.

컴퓨터는 32bit와 64bit로 나누어집니다.

그런데 64bit 컴퓨터이면 용량도 커보이고 막연히 좋아보일것 같다는 생각을 가질수는 있을텐데요.

오늘은 어떻게 나뉘게 되는지 설명해보겠습니다.

컴퓨터를 구분하는 방법은 두가지로 나뉩니다.

  1. 한번에 송수신 가능한 데이터 크기 (Bus에 의존)

cpu가 데이터를 처리하기 위해서는 데이터를 받아야 합니다.

그런 데이터가 움직이는 통로가 Bus이고 CPU가 버스를 통해서

한번에 전송 및 수신할 수 있는 데이터의 크기가 32비트라면 32비트 컴퓨터이고

64비트라면 64비트 컴퓨터가 됩니다.

  1. 데이터 처리능력 ( Cpu에 의존)

CPU는 외부로 들어온 데이터를 처리해야 하는데

32bit 컴퓨터라면 한번에 32bit 데이터를 ,

64bit 컴퓨터라면 한번에 64bit 데이터를 처리할수 있습니다.

※ 만약 Bus는 32bit인데 Cpu가 처리할수 있는 데이터는 64bit가 된다면 어떻게 될까요?

=> 당연히 성능이 떨어지게 됩니다.

cpu가 64bit를 한번에 처리할수 있는데 버스가 64bit 데이터를 주려면 2번 움직이는 비효율적인 행동을 해야하기 때문입니다.

/ 결론 /

=> 한번에 송수신할수 있는 데이터의 크기와 한번에 처리할수 있는 데이터를 기준으로 32bit, 64bit 컴퓨터를 구분합니다.

좀더 나아가서 포인터에 대해 얘기를 해보려고 합니다.

포인터라고 하면 c언어에서 어렵다고? 들 하는 부분인데요.

포인터는 쉽게 말하면 메모리에 접근할수 있도록 도와주는 녀석입니다.

그런데 포인터를 왜 설명하냐 궁금 하실수 있을텐데요ㅜ

포인터 또한 32bit 컴퓨터일 경우 32bit의 크기를 가지고 64bit 컴퓨터일 경우 64bit의 크기를 가지기 때문입니다.

그러면 포인터는 메모리에 접근할수 있다고 했는데 그럼 크기가 크면 좋을까요?

결론부터 말씀드리자면 아닙니다.

그 이유는 포인터가 64bit이고 버스의 크기가 32bit라고 한다면 포인터는 메모리의 주소중 가장 아래 11111111......111(64bit)의 주소를 가져오고 싶은데

버스가 32bit 밖에 데이터를 이동시킬수 없으므로 두번작업을 해야 합니다

두번 작업을 한다는 것은 결국 성능저하를 만들어 냅니다.

Sort:  

32비트와 64비트의 차이가 그런 것이었군요, 자세한 설명 감사합니다.