답변

5

32 B 64 B

에 대한 32B (64B)에 비해 구조를 말하는 대, 당신은 register 크기에 대해 말하고있다. 주소의 크기는 pointer입니다.

주된 문제점은 32b가 단지 2^32 ~ 4 × 10^9 값을 가질 수 있다는 것입니다. 바이트가 처리되므로 4GB의 주소 지정 가능 메모리가 있습니다. 뭔가가 kernel에 예약되어 있기 때문에 일반 프로그램에서는 이론적으로도이 모든 것을 사용할 수 없습니다.

큰 주소를 사용하면 주소 공간 크기가 중요하지 않습니다. 64b 포인터는 앞으로 사용할 수있는 모든 메모리를 처리 할 수있을만큼 충분히 큽니다. IIRC 2^64는 우주에서 예상되는 양성자 수보다 많습니다.나는 Eddington number을 의미하며 훨씬 더 큽니다. 그러나 여전히 2^64는 정말 큽니다.

하지만 또 다른 실용적인 문제가 있습니다. 주소가 두 배나 커지고 메모리가 두 배가됩니다. 많은 것을 가지고있을 때, 이것은 좋지 않습니다. 그러나 그것은 쇼 스토퍼가 아니며 염두에 두어야 할 단점입니다.

x86 및 x86_64의는

우선이 두 아키텍처는 많은 이름을 가지고 명확하게 밝혀야한다. x86 = x86_32 = i686 = IA32 = Intel32는 오래 전부터 데스크톱 시스템에서 가장 많이 사용 된 아키텍처였던 Intel에서 나온 32b 아키텍처입니다. 확장 된 x86은 x86_64를 포함하여 backward-compatible 아키텍처의 모든 제품군을 의미합니다. 그러나 x86_64은 인텔이 아니며 AMD에서 제공 한 것입니다. 또한 amd64 또는 x64로 레이블 된 것을 볼 수도 있지만 인텔에서 나온 IA64를 오인하지 않으며 실패했습니다.

x86_64에서는 레지스터 크기가 두 배가되었을뿐 아니라 (64b) 프로그램에서 사용할 수있는 레지스터 수가 대폭 늘어났습니다. 새로운 ABI은 레지스터의 공간을 최대한 활용합니다. 함수 호출 사이에 스택 상에 전달 된 많은 것들이 이제 레지스터에 상주하며, 이는 load/store 연산의 수를 줄여 계산 속도를 높입니다.

요점으로 이동

32b 및 64b는 아키텍처의 특성입니다. x86 및 x86_64는 특정 아키텍처의 이름입니다. x86은 일반적으로 32b, x86_64는 64b를 의미합니다.

x86_64가 x68_32보다 고급입니까? 네, 그렇습니다. 이전 버전과 호환되므로 x86_32가 처리 할 수있는 모든 것을 처리 할 수 ​​있지만 훨씬 더 많은 작업을 수행 할 수 있습니다. 그러나 프로그래머가 볼 수있는 부분이나 CPU 아키텍처 만이 중요하지 않습니다. 두 개의 x86_64 CPU조차도 성능에 버그가있을 수 있습니다.

하지만 너무 길면 더 구체적인 질문을하거나 어딘가에서 찾아보아야합니다. 나는 어두운 마법의 대부분이 프로그래머로부터 안전하게 잠겨 졌다고 말했다. 프로그래머는 편안함이 von Neumann architecture이다. 후드에서 미친 최적화가 발생합니다. 현실은 순차적이지 않습니다. 컴파일러와 어셈블러 프로그래머는 무슨 일이 일어나고 있는지, 현명하게 CPU의 숨겨진 내부 구조를 사용해야 하는지를 알아야합니다.

+0

당신의 답이 도움이 될 것입니다. 이것을 설명해 주시겠습니까 ---> Wikipedia에 따르면 x86-64bit는 x86 명령어 세트의 64 비트 버전입니다. 무슨 뜻이에요? 여기에 [link]가 있습니다. (http://en.wikipedia.org/wiki/X86-64) – Taimour

+0

@Taimour "x86-64 (x64, x86_64 및 amd64라고도 함)는 x86 명령어의 64 비트 버전입니다. 내가 쓴 것처럼 넓은 의미에서 x86은 모든 아키텍쳐 제품군이다. 그들은 공통점이 많으며, 더 큰 레지스터를 만들 때 주로 더 많은 레지스터와 명령어가 추가됩니다. x86_64는 x86 제품군의 64b 아키텍처입니다. – Palec

+1

x86-64는 보안 강화를 위해 no-execute 비트와 같은 더 많은 기능을 제공하며 32 대 64 아키텍처와 엄격하게 관련되지는 않지만 x86-64 CPU는 확장 된 명령어 세트로 최신 버전이므로 x86에서 많은 명령어를 필요로하는 계산에는 단 하나만 필요합니다 x86-64에서. crc32는 네트워크 IO (이더넷 프레임에서 사용) 또는 암호화를 강화하는 에이스를 향상시킵니다. – yaccz

0

x86은 32 비트이고 x86-64는 64 비트입니다.

+0

당신은 x86-64와 64 비트 사이에 차이가 없다는 것을 의미합니까? Wikipedia에 따르면 x86-64bit는 x86 명령어 세트의 64 비트 버전입니다. 무슨 뜻이에요? – Taimour

0

이것은 실제로 다릅니다. 64 비트 시스템의 가장 큰 장점은 더 큰 주소 공간으로 더 많은 데이터를 저장할 수 있고 더 큰 메모리를 지원할 수 있다는 것입니다. 여기서 주소는 가상 주소 또는 실제 주소 범위입니다.

관련 문제