IA-32

IA-32

IA-32 ("Intel Architecture, 32-bit"[3]의 줄임말, i386이라고[1][2] 함)는 인텔에 의해 설계되어 1985년에 80386 마이크로프로세서에 처음 구현된 x86 명령 집합 아키텍처의 32비트 버전입니다.IA-32는 32비트 [4]컴퓨팅을 지원하는 x86의 첫 번째 화신입니다.따라서 "IA-32"라는 용어는 32비트 [5][6]컴퓨팅을 지원하는 모든 x86 버전을 지칭하는 메타네임으로 사용될 수 있습니다.

다양한 프로그래밍 언어 지침에서 IA-32는 여전히 "i386" 아키텍처로 언급되기도 합니다.일부 다른 맥락에서 IA-32 ISA의 특정 반복은 80486, P5P6 마이크로아키텍처가 각각 제공하는 명령어 슈퍼셋을 참조하여 i486, i586i686으로 분류되기도 한다.이러한 업데이트는 기본 IA-32 세트와 함께 부동 소수점 기능MMX 확장을 포함한 수많은 추가 기능을 제공했습니다.

인텔은 역사적으로 IA-32 프로세서의 가장 큰 제조원이며 AMD 다음으로 큰 공급원이었습니다.1990년대에는 VIA, Transmeta 및 기타 칩 제조원에서도 IA-32 호환 프로세서(WinChip 등)를 생산했습니다.현대에 들어서도 인텔은 2019년까지 인텔 Quark 마이크로컨트롤러 플랫폼 하에서 IA-32 프로세서를 생산하고 있었습니다.그러나 2000년대 이후 대부분의 제조원(인텔 포함)은 x86, x86-64의 64비트 베리에이션을 기반으로 한 CPU 구현으로 거의 독점적으로 이행하여 사양상 동작하는 레거시 동작 모드를 제공하고 있습니다.n IA-32 ISA의 하위 호환성.현재 x86-64가 널리 보급되어 있지만, 2018년 현재 많은 최신 운영 체제의 IA-32 보호 모드 버전은 여전히 유지되고 있습니다. 예를 들어 Microsoft Windows(Windows 10 이전, Windows 11에는 x86-64 호환 프로세서가 x86-64 버전의 [7]x86-64 호환 프로세서가 필요합니다.) 및 Debian Linux [8]배포판이 있습니다.IA-32의 이름에도 불구하고(그리고 약간의 혼란을 야기함), AMD에서 유래한 64비트 x86의 진화는 ""로 알려져 있지 않습니다.IA-64"는 인텔의 Itanium 아키텍처에 속하는 명칭입니다.

아키텍처의 특징

IA-32의 주요 정의 특성은 32비트 범용 프로세서 레지스터(EAX 및 EBX 등), 32비트 정수 연산 및 논리 연산, 보호 모드 세그먼트 의 32비트 오프셋 및 32비트 선형 주소로의 변환입니다.디자이너들은 다른 개선사항도 함께 만들었습니다.(16비트 286 명령어세트에 비해) 가장 중요한 변경의 일부를 다음에 나타냅니다.

32비트 정수 기능
모든 범용 레지스터(GPR)는 16비트에서 32비트로 확장되며, 모든 산술 및 논리 연산, 메모리 대 레지스터 및 레지스터 대 메모리 연산 등은 32비트 정수로 직접 동작할 수 있다.스택에서 푸시 팝을 실행하면 디폴트로 4바이트의 진폭이 되며 세그먼트화되지 않은 포인터의 폭은 4바이트입니다.
보다 일반적인 어드레싱 모드
메모리 레퍼런스에서는 어떤 GPR도 베이스 레지스터로서 사용할 수 있고 ESP 이외의 GPR도 인덱스 레지스터로서 사용할 수 있다.인덱스 레지스터 값에 1, 2, 4, 또는 8을 곱한 후 베이스 레지스터 값과 변위에 추가할 수 있습니다.
추가 세그먼트 레지스터
FS와 GS라는 두 개의 세그먼트 레지스터가 추가로 제공됩니다.
가상 주소 공간 확대
IA-32 아키텍처에서는 세그먼트 내에 16비트세그먼트 번호와 32비트 오프셋이 있는 48비트세그먼트 주소 포맷이 정의되어 있습니다.세그먼트 주소는 32비트 선형 주소에 매핑됩니다.
디맨드 페이징
32비트 선형 주소는 물리 주소가 아닌 가상 주소입니다.페이지 테이블을 통해 물리 주소로 변환됩니다.80386, 80486원래의 Pentium 프로세서에서는 물리 주소는 32비트였습니다.Pentium Pro 이후의 프로세서에서는 물리 주소 확장으로 36비트의 물리 주소를 사용할 수 있었습니다.단, 리니어 주소 사이즈는 32비트였습니다.

동작 모드

동작 모드 필요한 운영 체제 실행 중인 코드 유형 기본 주소 크기 기본 오퍼랜드 크기 표준 GPR 폭
보호 모드 32비트 운영체제 또는 부트 로더 32비트 보호 모드코드 32비트 32비트 32비트
16비트 보호 모드 운영체제, 부트로더 또는 32비트 부트로더 16비트 보호 모드코드 16비트 16비트 16비트 또는 32비트
가상 8086 모드 16비트 또는 32비트 보호 모드 운영 체제 16비트 리얼 모드코드 16비트 16비트 16비트 또는 32비트
리얼 모드 16비트 리얼모드 운영체제 또는 부트로더 또는 32비트 부트로더 16비트 리얼 모드코드 16비트 16비트 16비트 또는 32비트
언리얼 모드 16비트 리얼모드 운영체제 또는 부트로더 또는 32비트 부트로더 16비트 리얼 모드코드 32비트 16비트 16비트 또는 32비트

「 」를 참조해 주세요.

레퍼런스

  1. ^ "DITTO". BSD General Commands Manual. Apple. December 19, 2008. Archived from the original on June 2, 2012. Retrieved August 3, 2013. Thin Universal binaries to the specified architecture [...] should be specified as "i386", "x86_64", etc.
  2. ^ "Additional Predefined Macros". software.intel.com. Intel. Archived from the original on February 15, 2021. Retrieved November 25, 2020.
  3. ^ Kemp, Steve. "Running 32-bit Applications on 64-bit Debian GNU/Linux". Debian Administration. Archived from the original on September 16, 2013. Retrieved August 31, 2013.
  4. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual". Intel Corporation. September 2014. p. 31. Archived from the original on January 26, 2012. Retrieved December 19, 2014. The Intel386 processor was the first 32-bit processor in the IA-32 architecture family. It introduced 32-bit registers for use both to hold operands and for addressing.
  5. ^ Green, Ronald W. (May 5, 2009). "What do IA-32, Intel 64 and IA-64 Architecture mean?". software.intel.com. Intel. Archived from the original on December 19, 2014. Retrieved December 19, 2014.
  6. ^ "Supported Hardware". Ubuntu Help. Canonical. Archived from the original on December 19, 2014. Retrieved August 31, 2013.
  7. ^ "Windows 10 System Requirements & Specifications Microsoft". www.microsoft.com. Archived from the original on May 1, 2018. Retrieved August 20, 2018.
  8. ^ "Debian GNU/Linux on x86 Machines". Archived from the original on April 28, 2019. Retrieved August 20, 2020.