32 비트에는 32 비트 레지스터가 있고 64 비트에는 64 비트 레지스터가 있지만 그 중 제가 알고 싶은 것은 x86과 x86-64 아키텍처가 무엇인지, 그리고 32 비트 및 64 비트에 비해 더 앞선 것입니까?x86 및 x86-64는 64 비트보다 더 고급입니까?
답변
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의 숨겨진 내부 구조를 사용해야 하는지를 알아야합니다.
x86은 32 비트이고 x86-64는 64 비트입니다.
당신은 x86-64와 64 비트 사이에 차이가 없다는 것을 의미합니까? Wikipedia에 따르면 x86-64bit는 x86 명령어 세트의 64 비트 버전입니다. 무슨 뜻이에요? – Taimour
이것은 실제로 다릅니다. 64 비트 시스템의 가장 큰 장점은 더 큰 주소 공간으로 더 많은 데이터를 저장할 수 있고 더 큰 메모리를 지원할 수 있다는 것입니다. 여기서 주소는 가상 주소 또는 실제 주소 범위입니다.
- 1. 64 비트보다 긴 이진 필드를 비교하는 방법
- 2. 64 비트보다 큰 인덱스의 해시 함수?
- 3. 의미가 64에서 x86-64
- 4. x86-64 배열 입력 및 인쇄
- 5. Total Store 주문 및 x86 (-64)
- 6. x86-64 및 원거리 통화/점프
- 7. 프로그래밍 언어가 64 비트라면 32 비트보다 낫다는 뜻입니까?
- 8. 간단한 x86-64 어셈블리 산술
- 9. 64 비트 dll 크기 32 비트보다 50 % 큰
- 10. C++에서 64 비트보다 큰 정수를 저장하는 방법은 무엇입니까?
- 11. MySQL에서 비트가 100 비트보다 많습니다
- 12. x86과 x86-64 기계 코드의 차이점
- 13. 다른 컴퓨터 컴파일러/라이브러리 (x86-64)
- 14. x86-64 어셈블리의 시스템 코드는 어디에 있습니까?
- 15. x86-64 어셈블리에서 스택을 사용하는 방법?
- 16. ASM 블록을 함수로 변환하고 ABI x86-64
- 17. x86-64 : 표준 주소 및 실제 사용 가능 범위
- 18. IA-32 및 x86-64 POP 명령어의 어셈블리
- 19. WinRT Metro 응용 프로그램은 상호 호환됩니까 (x86/64 및 ARM)?
- 20. Windows 7의 python x86-64 설치 관리자
- 21. longfloat와 int를 어셈블리로 나눕니다. x86-64
- 22. "왕복"x86/64 디스어셈블러/어셈블러 콤보가 있습니까?
- 23. Python 2.7.6 Windows X86-64 Installer를 다운로드해야합니까?
- 24. 고밀도 시리즈 (x86-64 어셈블리 포함)
- 25. 이 x86-64 코드에서 lea는 무엇을합니까?
- 26. 64 비트 하나의 x86 어셈블리 참조
- 27. 사용자 공간의 메모리 장벽? (Linux, x86-64)
- 28. x86-64 어셈블리의 배열 요소 추가
- 29. RAX에서 C로 변수 이동 (x86-64 asm)
- 30. x86-64 double to long double로 변환
당신의 답이 도움이 될 것입니다. 이것을 설명해 주시겠습니까 ---> Wikipedia에 따르면 x86-64bit는 x86 명령어 세트의 64 비트 버전입니다. 무슨 뜻이에요? 여기에 [link]가 있습니다. (http://en.wikipedia.org/wiki/X86-64) – Taimour
@Taimour "x86-64 (x64, x86_64 및 amd64라고도 함)는 x86 명령어의 64 비트 버전입니다. 내가 쓴 것처럼 넓은 의미에서 x86은 모든 아키텍쳐 제품군이다. 그들은 공통점이 많으며, 더 큰 레지스터를 만들 때 주로 더 많은 레지스터와 명령어가 추가됩니다. x86_64는 x86 제품군의 64b 아키텍처입니다. – Palec
x86-64는 보안 강화를 위해 no-execute 비트와 같은 더 많은 기능을 제공하며 32 대 64 아키텍처와 엄격하게 관련되지는 않지만 x86-64 CPU는 확장 된 명령어 세트로 최신 버전이므로 x86에서 많은 명령어를 필요로하는 계산에는 단 하나만 필요합니다 x86-64에서. crc32는 네트워크 IO (이더넷 프레임에서 사용) 또는 암호화를 강화하는 에이스를 향상시킵니다. – yaccz