2011-05-08 5 views
2

32 비트와 64 비트의 의미를 이해하지 못합니다. 사람들은 64 비트 컴퓨터가 더 빨리 작동한다고 말합니다 -하지만 그 이유는 무엇입니까? 32 비트 대신 64 비트 정수가 있다는 것을 의미합니까? 그런 경우라면 32 비트 또는 64 비트 시스템에 있는지 확인하기위한 프로그램을 작성하는 방법이 있습니까?프로그래밍 방식으로 64 비트 또는 32 비트 컴퓨터를 검색하는 방법은 무엇입니까?

+0

- 어떤 컴퓨터 언어/OS를 사용하고 있습니까? –

+0

모든 언어는 정상입니다. 나는 거의 모든 OS가 jvm을 지원하고 있기 때문에 Java를 가능한 한 보편적으로 사용하고 싶습니다. – foobar

답변

5

64 비트 컴퓨터에서 포인터는 8 바이트 (64 비트)입니다. 32 비트 컴퓨터에서는 4 바이트 (32 비트)입니다. 그것은 간단한 형태의에 따라서 우리는, 우리가 다루고있는 어떤 포인터의 크기에 의해 확인할 수 있습니다

#define IS_64BIT (sizeof(void *) == 8) 

유일한 단점은 32 비트 모드에서 64 비트를 실행하는 컴퓨터가 32 비트로 등록하는 것입니다. 물론 64 비트 컴퓨터의 32 비트 OS는 32 비트 컴퓨터입니다.

-1

64 비트 컴퓨터는 더 빠르게 실행되지 않습니다. 더 높은 정밀도 (더 큰 정수,보다 정밀한 수레)를 지원할 수 있습니다.

일부 드문 경우이지만 라이브러리가 두 개의 32 비트 숫자를 64 비트로 처리하여 많은 수의 병렬 작업을 수행 할 수 있으므로 속도가 최대 2 배 빨라질 수 있습니다. 이는 고도로 최적화 된 일부 과학/숫자 라이브러리 또는 매우 낮은 수준에서 고도로 최적화 된 특수 응용 프로그램 (일부 이유로 또는 다른 이유로)에서 발생할 수 있습니다. 예를 들어, 일부 멀티미디어 소프트웨어. 이러한 응용 프로그램은 32 비트 모드에서도 항상이 트레이드 오프를 만들 수 있지만 선택하지 않았 음을 유의해야합니다. 그들은 병렬 처리를 위해 정밀도를 필요로하지 않을 수도 있습니다.

더 빠른 성능 (어쩌면 < 10 % 향상)을 나타내는 운영 체제 벤치 마크는 64 비트 관련 최적화와 반드시 관련이있는 것은 아닙니다. 64 비트 아키텍처는 예를 들어 더 많은 레지스터 또는 프로그램이 성능 저하 (다른 변수들뿐만 아니라)의 원인이 될 수있는 [인용문 : http://www.tuxradar.com/content/ubuntu-904-32-bit-vs-64-bit-benchmarks]을 인식 할 수있는 고급 기능을 갖는 것과 관련 될 수 있습니다.

CPU가 32 비트인지 64 비트인지 확인하는 방법은 사용중인 OS에 따라 다릅니다. 예를 들어 Linux의 경우 uname -a으로 전화 할 수 있습니다. 더 나은 방법이 있습니다. C/C++를 사용하는 경우 프로그램에서이를 결정하는 방법에 대한 다른 대답을 참조하십시오.

+2

그리고 더 큰 주소 공간으로 인해 더 많은 실제 메모리를 잊지 않도록합시다. –

+0

64 비트 OS가 32 비트보다 빠르게 실행됩니다 ... http://64-bit-computers.com/windows-vista-32-bit-vs-64-bit-benchmark.html –

+1

@Oskar 반드시 필요합니다. 실행중인 작업의 종류에 따라 다릅니다. 어떤 경우에는 게시 한 것과 같이 느리게 표시 될 수 있습니다. – Davy8

3

실제로 여기 몇 가지 다른 질문이 있습니다.

먼저 CPU가 있습니다. 대부분의 현대 CPU (지난 5 년 내에)는 64 비트를 지원합니다.

이제는 CPU가 지원하기 때문에 OS가 지원한다는 의미는 아닙니다. 64 비트 OS 또는 32 비트 OS (32 비트는 x86이라고도합니다.)에 약간의 기술적 차이가 있습니다. x86은 CPU 명령어 세트를 의미하지만 대부분의 경우 x86과 32 비트는 서로 바꿔 사용할 수 있습니다.)

OS가 지원하더라도 실행중인 특정 프로그램이 64 비트를 지원하는 것은 아닙니다. 대부분의 (전부는 아니지만) 64 비트 OS는 32 비트 에뮬레이션 모드를 가지고 있으므로 32 비트 프로그램을 실행할 수 있습니다.

실행중인 아키텍처를 확인하는 방법에 대한 질문은 가장 확실한 방법은 API 호출을 통해 OS에 문의하는 것입니다.

왜 64 비트가 가끔 더 빨라지는지에 대한 이유는 32 비트로는 4GB의 메모리 만 주소 지정이 가능하고 64 비트에서는 주소 공간에 의해 부과 된 제한이 훨씬 더 높기 때문입니다 (약 4 10 억 배 이상) 하드웨어가 주소 공간이 아닌 것을 제한하는 요소입니다. 언제 그리고 왜 더 많은 메모리가 더 빠른지에 관해서는, 그것은 분리 된 토픽입니다.

2

64 비트 컴퓨터는 64 비트 연산이 수행되는 경우 또는 4GB 이상의 RAM이 필요한 경우를 제외하고는 32 비트 컴퓨터보다 빠르게 실행되지 않습니다.

AMD는 새로운 명령어 세트를 설계 할 때 더 많은 CPU 레지스터를 추가하고 SSE 연산을 기본값으로 설정했기 때문에 64 비트 AMD (이후 Intel) 머신이 32 비트 x86 머신보다 빠르게 실행됩니다.

32 비트 x86 시스템은 RAM에서 데이터를 푸시하는 데 많은 CPU 시간을 낭비 할 수 있지만 x86_64 시스템은 해당 데이터를 대신 CPU 레지스터에 저장할 수 있습니다. 레지스터는 레벨 1 CPU 캐시보다 훨씬 빠릅니다. 레지스터를 더 많이 사용하면 RAM의 이전 값을 RAM에 저장하고 RAM에서 다른 값으로로드 한 다음 RAM에서 원래 값을 다시로드해야하는 CPU 명령어도 저장됩니다.

특히 레지스터가 부족한 경우에는 여분의 레지스터가 프로그램에 대해 30 %의 속도를 얻을 수 있습니다. 그 혜택은 일반적으로 그보다 훨씬 적습니다.

SSE2를 가정하면 속도가 향상됩니다. 32 비트 CPU에서 SSE 명령어가 존재할 수도 있고 존재하지 않을 수도 있으므로, 소프트웨어를 사용하기 위해서는 서투른 테스트 코드와 두 가지 이상의 수학 함수 구현이 필요합니다. 대부분의 소프트웨어는 충분히 신경 쓰지 않기 때문에 항상 486 일부터 x87 FPU 수학으로 되돌아갑니다. 64 비트 CPU는 SSE2를 명령 집합의 필수 부분으로 만들었으므로 모든 x86_64 프로그램은 모든 상황에서 자유롭게 사용할 수 있습니다.

관련 문제