티스토리 뷰

공부기록

[CS] 32 Bit / 64 Bit 차이

bearn_soo 2024. 10. 9. 18:26

32비트 환경 운영체제 64비트 환경 운영체제라는 말을 들어봤을거다. 32비트 환경 운영체제는 32비트 아키텍쳐에 대응되는 운영체제를 말하고, 64비트 환경 운영체제는 64비트 아키텍쳐에 대응되는 운영체제를 말한다. 그렇다면 32비트와 64비트 아키텍쳐란 뭘까? 그것을 알아보자.


기본개념

비트(Bit)란?

컴퓨터가 처리하는 이산 데이터의 양을 나타내는 가장 작은 단위이며 0과 1 이진법을 사용해 나타낸다.


32비트와 64비트 아키텍처란?

  • 32비트 아키텍쳐: 한 번에 32비트 데이터 양을 처리할 수 있는 CPU구조
  • 64비트 아키텍쳐: 한 번에 64비트 데이터 양을 처리할 수 있는 CPU구조

메모 주소 지정 능력

  • 32비트 시스템:
    • 이론적으로 최대 4GB의 RAM을 지원한다. 이는 2^32개의 메모리 주소를 사용할 수 있기 때문이다.
  • 64비트 시스템:
    • 이론적으로 최대 16엑사바이트 (^64)의 RAM을 지원한다.
    • 현실적으로 현재 하드웨어의 한계로 몇 테라바이트까지 지원된다.

성능 및 처리 능력

  • 레지스터 크기:
    • 64비트 CPU는 64비트 레지스터를 사용하여 더 큰 데이터 단위를 한번에 처리할 수 있어 복잡한 계산이나 데이터 처리에서 성능 향상을 가져올 수 있다.
  • 데이터 처리:
    • 64비트 시스템은 더 큰 정수나 부동소수점 수를 한번에 처리할 수 있어 수학적 계산이나 멀티미디어 작업에 유리하다.

데이터 타입의 차이

C/C++에서의 int 타입

  • 32비트 아키텍쳐:
    • int: 32비트(4바이트)
    • long: 32비트 (4바이트)
    • pointer:32비트(4바이트)
  • 64비트 아키텍쳐:
    • int: 32비트(4바이트)
    • long: 64비트 (8바이트)(일부 시스템에서는 여전히 32비트일 수 있다.)
    • pointer:64비트(8바이트)

int는 왜 여전히 32비트일까?

long형과 pointer는 아키텍쳐에 따라 데이터 크키가 변하지만 int는 변하지 않은것을 알 수 있다. int도 64비트 아키텍쳐에서 64비트의 크기를 가지면 더 많은 데이터를 처리할 수 있을것 같은데 왜 32비트로 유지되고 있을까?

  • 호환성: 많은 기존 소프트웨어와 라이브러리가 int를 32비트로 가정하고 작성되었다. 그렇기 때문에 32비트를 유지함으로써 64비트 환경에서도 32비트 한경과 같은 하위 호환성을 보장할 수 있다.
  • 이식성: 다양한 아키텍쳐 간에 동일한 코드가 동일하게 동작하도록 보장할 수 있다.
  • 성능: 32비트 연산은 대부분의 경우 충분한 성능을 가지고 메모리 사용량도 적절히 유지할 수 있다.

64비트 아키텍쳐에서의 pointer는 왜 64비트일까?

64비트 아키텍쳐에서는 64비트 크기의 데이터를 처리할 수 있고 이말은 주소 표현범위가 0~2^64-1이라는 거다 그렇기 때문에 주소를 저장하는 데이터 타입인 pointer형이 64비트의 크기를 갖는거라고 생각한다.


번외

참고로 메이플스토리 게임에서 처음 32비트로 개발되어 메소라는 게임 재화가 최대 2,147,483,648까지 보유 가능했지만 64비트 환경으로 업데이트하며 최대 메소 보유량이 2^64-1까지 가능해졌다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함