맨위로가기

X86

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

x86은 1978년 인텔 8086 프로세서 출시 이후 발전해 온 일련의 명령어 집합 아키텍처를 의미한다. x86은 16비트, 32비트, 64비트 시대를 거치며 개인용 컴퓨터, 서버, 임베디드 시스템 등 다양한 분야에서 널리 사용된다. 주요 특징으로는 가변 길이 명령어 형식, CISC 설계, 리틀 엔디안 바이트 순서, 메모리 주소 지정 방식 등이 있으며, SIMD 명령어 집합을 통해 멀티미디어 처리 성능을 향상시켰다. 현재는 명령어 파이프라인, 슈퍼스칼라, 아웃 오브 오더 실행, 추측 실행 등의 기술을 통해 성능을 향상시키고 있으며, 인텔과 AMD가 x86 프로세서 시장을 주도하고 있다.

더 읽어볼만한 페이지

  • IBM PC 호환기종 - EISA
    EISA는 1988년 컴팩을 중심으로 한 PC 제조업체 컨소시엄이 IBM의 MCA에 대항하기 위해 개발한 32비트 PC 버스 표준으로, ISA 버스와의 호환성을 유지하면서 고급 기능을 제공하고 특허 및 라이선스 정책에서 자유로워 업계의 지지를 얻으며 PC 버스 기술 발전에 기여했다.
  • IBM PC 호환기종 - CP/M-86
    디지털 리서치가 개발한 16비트 운영 체제 CP/M-86은 인텔 8086 프로세서용으로 설계된 CP/M-80의 후속작이었으나 MS-DOS에 밀려 널리 사용되지 못했고, 다양한 버전과 간지 CP/M-86도 존재했으며, 1990년대 후반에 오픈 소스화되었다.
  • 명령어 집합 구조 - ARM 아키텍처
    ARM 아키텍처는 저전력 설계로 모바일 기기에서 널리 쓰이는 RISC 기반 프로세서 아키텍처로서, IP 코어 라이선스 모델과 ARM Flexible Access를 통해 다양한 분야로 확장되고 있다.
  • 명령어 집합 구조 - PA-RISC
    PA-RISC는 휴렛 팩커드에서 개발한 RISC 기반 명령어 집합 아키텍처로, HP 서버 및 워크스테이션에 사용되었으며 대용량 L1 캐시와 SIMD 명령어 확장 등의 특징을 가졌으나 아이테니엄 아키텍처로의 전환으로 단종되었다.
  • 인텔 제품 - 센트리노
    센트리노는 초기 노트북 플랫폼에서 프로세서, 칩셋, 무선랜 모듈 결합체로 시작하여 코어 듀오, 코어 2 듀오 등을 지원하며 발전했고, 2010년부터는 인텔의 무선 LAN 모듈 브랜드로 재정의되어 Wi-Fi 및 WiMAX 어댑터 제품군을 지칭한다.
  • 인텔 제품 - 3D XPoint
    3D XPoint는 인텔과 마이크론이 개발한 비휘발성 메모리 기술로, 전기 저항을 사용하여 데이터를 저장하며 높은 속도와 내구성을 특징으로 하지만, 현재는 개발이 중단되었다.
X86
개요
설계자인텔, AMD
비트 수16비트, 32비트, 64비트
발표 연도1978년 (16비트), 1985년 (32비트), 2003년 (64비트)
설계 방식CISC
종류레지스터-메모리
인코딩가변 (1 ~ 15 바이트)
분기조건 코드
엔디언리틀 엔디언
페이지 크기8086286: 없음
386, 486: 4KB 페이지
펜티엄: 4MB 페이지 추가
(레거시 PAE: 4KB→2MB)
x86-64: 1GB 페이지 추가
확장 기능x87
IA-32
x86-64
MMX
3DNow!
SSE
MCA
ACPI
SSE2
NX 비트
SMT
SSE3
SSSE3
SSE4
SSE4.2
AES-NI
CLMUL
SM3
SM4
RDRAND
SHA
MPX
SME
SGX
XOP
F16C
ADX
BMI
FMA
AVX
AVX2
AVX-VNNI
AVX512
AVX10
AMX
VT-x
VT-d
AMD-V
AMD-Vi
TSX
ASF
TXT
APX
개방 여부부분적으로 개방. 일부 고급 기능의 경우 인텔의 라이선스가 필요할 수 있으며, x86-64는 AMD의 추가 라이선스가 필요할 수 있음. 펜티엄 프로 프로세서 (및 넷버스트)는 시장에 출시된 지 21년이 넘었으므로 특허 주장의 대상이 될 수 없음. 따라서 x86 아키텍처의 i686 하위 집합은 완전히 개방됨. 옵테론 1000 시리즈 프로세서는 시장에 출시된 지 21년이 넘었으므로 특허 주장의 대상이 될 수 없음. 따라서 x86 아키텍처의 AMD K8 하위 집합은 완전히 개방됨.
범용 레지스터16비트: 6개 (일부 기능 제한 레지스터) + BP, SP
32비트: 8개 (GPR, EBP, ESP 포함)
64비트: 16개 (GPR, RBP, RSP 포함)
부동 소수점 레지스터16비트: 선택 사항으로 분리된 x87 FPU
32비트: 선택 사항으로 분리 또는 통합된 x87 FPU, 후기 프로세서에 통합된 SSE 장치
64비트: 통합된 x87 및 SSE2 장치, 후기 구현은 AVX2 및 AVX512로 확장됨

2. 역사적 배경

1978년 인텔8086을 출시하면서 x86 아키텍처의 역사가 시작되었다. 8086은 8080과 바이너리 호환성은 없었지만, 어셈블리어 소스 코드는 큰 수정 없이 이식할 수 있도록 설계되었다. 8086은 1MiB의 메모리 공간과 I/O 공간을 지원했다. 1979년에는 외부 데이터 버스를 8비트로 줄인 8088이 출시되었다.[65]

1982년, IBM은 8088을 채택한 IBM PC를 출시했고, 이는 x86이 PC 시장에서 사실상의 표준으로 자리 잡는 계기가 되었다. 같은 해 8018680286도 발표되었으며, 80286은 보호 모드와 24비트 (16MiB) 주소 공간을 제공했다. 그러나 당시에는 PC-DOS 환경에서 "더 빠른 8086"으로 주로 사용되었다.

1985년에는 32비트 80386 (i386)이 출시되면서 IA-32 아키텍처가 탄생했다. 80386은 가상 86 모드를 통해 기존 8086 프로그램을 가상화하여 실행할 수 있었으며, 컴팩이 최초로 80386 탑재 PC를 출시했다.

이후 486, 펜티엄으로 이어지면서 성능이 향상되었고, MMX 펜티엄부터 벡터 계산 기능이 추가되었다. 64비트 확장에서는 AMD가 제안한 x64 아키텍처를 인텔이 채택하는 우여곡절을 겪기도 했다.

인텔은 iAPX 432, i860, i960, IA-64 등 혁신적인 아키텍처로 x86을 대체하려 했으나 모두 실패했다. 결과적으로 x86은 확장을 거듭하며 현재까지 인텔의 주력 아키텍처로 남아있다.

x86 프로세서는 다양한 제조사에서 다양한 제품을 출시했다. 인텔은 세컨드 소스 정책을 통해 호환 제품 생산을 장려하기도 했지만, NEC의 V30과 같이 독자적인 호환 제품에 대해서는 저작권 소송을 제기하기도 했다.

x86 프로세서의 역사적 배경을 요약하면 다음과 같다.

x86 프로세서 연대기
시대출시주요 CPU 모델선형가상물리주요 기능
x86-161세대1978년인텔 8086, 인텔 8088(1979년)16비트NA20비트16비트 ISA, IBM PC (8088), IBM PC/XT (8088)
1982년인텔 80186, 인텔 80188, NEC V20/V30 (1983년)8086-2 ISA, 임베디드 (80186/80188)
2세대1982년인텔 80286 및 클론30비트24비트보호 모드, IBM PC/XT 286, IBM PC/AT
IA-323세대1985년인텔 80386, AMD Am386 (1991년)32비트46비트32비트32비트 ISA, 페이징, IBM PS/2
4세대 (파이프라인, 캐시)1989년인텔 80486
사이릭스 Cx486S, DLC (1992년)
AMD Am486 (1993년), Am5x86 (1995년)
파이프라인, 온다이 x87 FPU (486DX), 온다이 캐시
5세대
(슈퍼스칼라)
1993년인텔 펜티엄, 펜티엄 MMX (1996년)슈퍼스칼라, 64비트 데이터 버스, 더 빠른 FPU, MMX (펜티엄 MMX), APIC, SMP


2. 1. 16비트 시대 (IA-16)

인텔 8086인텔 8088은 14개의 16비트 레지스터를 지원했다. AX, BX, CX, DX 4개는 일반 레지스터로 사용되었지만, 실제로는 명령에 따라 특수한 용도로 사용되기도 했다. (예: LOOP 명령은 항상 CX 레지스터를 사용) 일반 레지스터는 상위 8비트(AH, BH, CH, DH)와 하위 8비트(AL, BL, CL, DL)를 따로 접근할 수 있었다. CS, DS, SS, ES 4개의 세그먼트 레지스터는 메모리 주소의 기준을 정하는 데 사용되었고, SP, BP 2개의 포인터 레지스터는 메모리 주소를 담는 데 쓰였다. SI, DI 2개의 레지스터는 배열을 참조하는 데 사용되었고, FLAGS 레지스터는 자리올림, 오버플로 등의 상태 비트를 저장했으며, IP 레지스터는 현재 세그먼트에서 다음에 실행될 명령어의 오프셋(offset)을 저장했다.

8086은 64 KiB(65,536 바이트)의 메모리 공간과 64 KiB의 스택 공간을 지원했다. 스택에는 한 워드 단위로 값을 넣거나 뺄 수 있었으며, 스택의 꼭대기는 SS:SP에 저장되었다. 스택에 값을 넣으면 SS:SP는 감소했으며, 따라서 스택의 꼭대기는 실제로는 전체 스택에서 가장 주소가 작은 곳에 위치했다. 256개의 하드웨어 및 소프트웨어 인터럽트가 지원되었으며, 반환 주소를 스택에 저장하기 때문에 한 인터럽트가 처리되는 도중에 다른 인터럽트가 걸릴 수도 있었다.

인텔 80286은 실제 모드와 보호 모드를 제공했다. 실제 모드는 1MiB의 메모리를 접근할 수 있었고, 보호 모드는 16MiB의 물리 메모리와 1GiB가상 메모리를 접근할 수 있었다.

1980년대와 1990년대 초, 808880286이 널리 사용되던 시기에 x86이라는 용어는 일반적으로 8086 호환 CPU를 나타냈다. 그러나 오늘날 x86은 일반적으로 32비트 명령어 집합인 80386과의 바이너리 호환성을 의미한다.

8086은 주로 임베디드 시스템과 소규모 다중 사용자 또는 단일 사용자 컴퓨터를 위해 개발되었지만, x86 라인은 곧 기능과 처리 능력이 향상되었다. 오늘날 x86은 고정형 및 휴대용 개인용 컴퓨터에서 보편적으로 사용되며, 미드레인지 컴퓨터, 워크스테이션, 서버 및 TOP500 목록에 있는 대부분의 새로운 슈퍼컴퓨터 클러스터에서도 사용된다.

그러나 현대 x86은 임베디드 시스템과 소형 저전력 전자 애플리케이션, 가전제품 및 장난감과 같은 저가 마이크로프로세서 시장에서는 상대적으로 드물다.

x86 마이크로아키텍처, 전자 회로반도체 제조의 지속적인 개선으로 인해 많은 부문에서 x86을 대체하기 어려울 것이다.

다음은 x86 계열에서 다양한 아키텍처를 구현하는 프로세서 모델과 모델 시리즈를 연대순으로 나열한 표이다.

x86 프로세서 연대기
시대출시주요 CPU 모델선형가상물리주요 기능
x86-161세대1978년인텔 8086, 인텔 8088(1979년)16비트NA20비트16비트 ISA, IBM PC (8088), IBM PC/XT (8088)
1982년인텔 80186, 인텔 80188, NEC V20/V30 (1983년)8086-2 ISA, 임베디드 (80186/80188)
2세대1982년인텔 80286 및 클론30비트24비트보호 모드, IBM PC/XT 286, IBM PC/AT



Am386, AMD에서 1991년에 출시


과거에, IBM, VIA, NEC, AMD, TI, STM, 후지쯔, OKI, 지멘스, 사이릭스, 인터실, C&T, 넥스젠, UMC, DM&P 등의 회사들이 개인용 컴퓨터 및 임베디드 시스템용 x86 프로세서 (CPU)를 설계 또는 제조했다.

이러한 x86 구현은 단순한 복사본인 경우가 드물었으며, 종종 서로 다른 내부 마이크로아키텍처와 전자 및 물리적 수준에서 다른 솔루션을 사용했다.

2. 1. 1. 실제 모드 (Real Mode)

인텔 80286부터 '''실제 모드'''(real mode)라는 프로세서 모드가 부팅 시 기본으로 활성화되었다. 실제 모드는 20비트 주소를 사용할 수 있어 1MiB의 메모리에 접근할 수 있다.[65] 바이오스 루틴과 주변 장치를 소프트웨어적으로 직접 접근할 수 있으나, 멀티태스킹 같은 개념은 하드웨어적으로 지원하지 않는다.

실제 모드에서는 메모리 접근 시 해당하는 16비트 세그먼트와 실제로 사용되는 16비트 주소를 합쳐 20비트 주소를 만든다. 예를 들어 DS가 A000h이고 SI가 5677h이면 DS:SI는 DS × 16 + SI = A5677h라는 주소를 가리킨다. 메모리 접근에 사용할 수 있는 세그먼트는 CS, DS, ES, SS 네 가지가 있으며, 그중 CS와 SS는 프로그램 실행과 밀접하게 연관되어 실제로는 DS와 ES만 사용했다.

실제 모드는 프로그래밍과 컴파일러 설계를 어렵게 했는데, 현재 세그먼트 안에서 접근 가능한지 검사하여 다른 명령을 만들어야 했기 때문이다. 이때 세그먼트 안에서 접근할 수 있는 포인터를 가까운 포인터(near pointer), 그렇지 않으면 먼 포인터(far pointer)라 한다.

2. 1. 2. 보호 모드 (Protected Mode)

80286 프로세서는 실제 모드 외에 보호 모드(protected mode)라는 새로운 작동 모드를 제공했다. 보호 모드에서는 16 MiB의 물리 메모리와 1 GiB가상 메모리를 사용할 수 있었다. 보호 모드에서 세그먼트 레지스터는 별도의 세그먼트 테이블에 있는 기준 주소를 가리키도록 변경되었다. 이러한 테이블은 전역 기술 테이블(GDT)과 지역 기술 테이블(LDT) 두 가지로 나뉘며, 각각 8192개의 24비트 세그먼트 기술자를 포함하고, 각 세그먼트는 64 KiB의 메모리를 담을 수 있었다.[65]

각 세그먼트에는 네 가지 보호 단계(ring) 중 하나가 부여되어 해당 세그먼트에서 실행되는 코드의 권한을 설정할 수 있었다. 이를 통해 운영체제와 응용 프로그램 간의 안정성과 보안성을 높일 수 있었다.

OS/2와 같은 운영 체제는 실제 모드와 보호 모드를 전환하며 함께 사용하려 했지만, 속도가 느리고 실제 모드 프로그램이 시스템을 자주 중단시켜 안전하지 않았다. 윈도우 3.0은 소프트웨어적으로 가상 메모리를 구현했기 때문에 실제 모드에서 절대 주소를 접근하면 위험하여 보호 모드에서 실제 모드 프로그램을 실행해야 했다. 윈도우 3.1부터는 실제 모드를 사용하지 않았다.

2. 2. 32비트 시대 (IA-32)

사이릭스 Cx486S, DLC (1992년)
AMD Am486 (1993년), Am5x86 (1995년)32비트46비트32비트파이프라인, 온다이 x87 FPU (486DX), 온다이 캐시IA-32 5세대
(슈퍼스칼라)1993년인텔 펜티엄, 펜티엄 MMX (1996년)32비트46비트32비트슈퍼스칼라, 64비트 데이터 버스, 더 빠른 FPU, MMX (펜티엄 MMX), APIC, SMP


2. 2. 1. SIMD 명령어 집합

MMX는 펜티엄 MMX에 처음 도입된 SIMD 명령어 집합으로, 64비트 정수 레지스터 8개(MM0부터 MM7)를 사용한다. 이 레지스터들은 부동소수점 레지스터와 공유된다. AMD는 3DNow! 확장을 통해 부동소수점 실수 처리를 위한 기능을 추가했다. 이후 SSE, SSE2, SSE3 등 새로운 128비트 정수 및 실수 레지스터를 사용하는 확장들이 등장했다.

최신 x86 설계에는 SIMD 장치가 포함되어 있어, 명령어들이 (하나 또는 두 개의) 128비트 워드에서 병렬로 작동할 수 있다. 각 워드는 두 개 또는 네 개의 부동 소수점 숫자(각각 64 또는 32비트 너비)를 포함하거나, 2, 4, 8 또는 16개의 정수(각각 64, 32, 16 또는 8비트 너비)를 포함할 수 있다.

넓은 SIMD 레지스터 덕분에 기존 x86 프로세서는 단일 명령어에서 최대 128비트의 메모리 데이터를 로드하거나 저장할 수 있으며, 전체 128비트에서 비트 단위 연산을 수행할 수 있다. 인텔의 샌디 브릿지 프로세서는 AVX 명령어를 추가하여 SIMD 레지스터를 256비트로 확장했다. 나이츠 코너 제온 파이 프로세서에 구현된 인텔 초기 Many Core 명령어와, 나이츠 랜딩 제온 파이 프로세서 및 스카이레이크-X 프로세서에 구현된 AVX-512 명령어는 512비트 폭의 SIMD 레지스터를 사용한다.

2. 3. 64비트 시대 (x86-64, AMD64, Intel 64)

AMD가 2003년에 x86 아키텍처를 64비트로 확장한 x86-64 (AMD64) 아키텍처를 발표했다. x86-64는 64비트 주소 공간을 제공하며, 레지스터 개수 증가, 새로운 명령어 추가 등 성능 향상을 위한 다양한 개선이 이루어졌다. 2004년 인텔은 AMD64와 호환되는 EM64T(Extended Memory 64 Technology)를 발표했으며, 이후 인텔 64로 명칭을 변경했다. x86-64는 기존 32비트 x86 아키텍처와의 호환성을 유지하면서도 64비트 운영체제 및 응용 프로그램의 성능을 대폭 향상시켰다.

x86-64는 x86의 64비트 확장 아키텍처이며, 레거시 모드를 통해 x86 아키텍처를 변경하지 않고 보존한다. x86-64 프로세서의 기본 아키텍처는 64비트 모드에 있으며, 세분화에 접근하는 모드가 없고, 64비트 아키텍처 허용 선형 주소 공간을 제공한다. 64비트 모드와 함께 호환 모드에 있는 적응된 IA-32 아키텍처는 대부분의 x86 애플리케이션을 지원하기 위해 제공된다.

한국에서는 2000년대 중반부터 64비트 운영체제와 응용 프로그램이 보급되면서 x86-64 프로세서가 점차 확산되었다.

2. 3. 1. IA-64 (Itanium)

인텔이 x86 아키텍처와는 별개로 개발한 64비트 아키텍처이다. IA-64는 VLIW(Very Long Instruction Word) 기술을 기반으로 하며, 아이테니엄 계열 프로세서에 사용되었다. IA-64는 x86 아키텍처와의 호환성이 부족하여 시장에서 큰 성공을 거두지 못했다.[64] IA-32를 하드웨어적으로 지원하지만 상당히 느리게 동작한다. 2004년 인텔은 AMD64의 구현인 EM64T를 발표하면서 사실상 IA-64를 포기했다.

3. 주요 특징

x86 아키텍처는 가변 길이 명령어 형식, CISC 설계, 하위 호환성을 주요 특징으로 한다.

x86 명령어 집합은 전형적인 CISC는 아니지만, 8비트 80088080 아키텍처를 확장한 것이다. 바이트 주소 지정이 가능하며, 워드는 리틀 엔디안 바이트 순서로 메모리에 저장된다. 거의 모든 명령어에서 정렬되지 않은 메모리 주소에 접근할 수 있다.[13]

정수 연산 및 메모리 주소(또는 오프셋)의 최대 기본 크기는 아키텍처 세대에 따라 16, 32 또는 64비트이다. 이후 세대에는 SIMD 유닛을 통해 여러 스칼라 값을 동시에 처리할 수 있다. 자주 발생하는 경우나 -128에서 127 범위는 8비트 양으로 즉시 주소 지정 오프셋과 즉시 데이터를 표현할 수 있다. 일반적인 명령어는 2~3바이트 길이지만, 일부는 더 길거나 짧을 수 있다.[13]

코드 공간 절약을 위해 대부분의 레지스터는 opcode에서 3비트 또는 4비트(64비트 모드에서는 opcode 접두사 사용)로 표현된다. 명령어에 대한 최대 하나의 피연산자는 메모리 위치일 수 있으며,[13] 이 메모리 피연산자는 대상(또는 결합된 소스 및 대상)일 수도 있고, 다른 피연산자는 레지스터 또는 즉시 값일 수 있다. 이는 8비트 머신과 경쟁하는 코드 크기에 기여하고, 명령어 캐시 메모리의 효율적인 사용을 가능하게 한다.[13]

x86은 비교적 적은 수의 범용 레지스터(8비트 조상으로부터 상속됨)를 가지므로, 레지스터 상대 주소 지정(작은 즉시 오프셋 사용)이 피연산자에 접근하는 중요한 방법이며, 특히 스택에서 그렇다. 따라서 접근된 데이터가 최상위 캐시에 사용 가능한 대부분의 상황에서 1사이클 명령어 처리량을 갖도록 많은 노력이 투입되었다.[13]

3. 1. 가변 길이 명령어 형식

x86 아키텍처는 가변 길이 명령어 형식을 따르며, CISC 설계와 하위 호환성을 중시한다. 명령어 집합은 8비트 80088080 아키텍처를 확장한 것이다. 바이트 주소 지정이 가능하고, 워드는 리틀 엔디안 바이트 순서로 메모리에 저장된다. 거의 모든 명령어에서 정렬되지 않은 주소에 대한 메모리 접근이 허용된다.[13]

정수 연산 및 메모리 주소(또는 오프셋)의 최대 기본 크기는 아키텍처 세대에 따라 16, 32 또는 64비트이다. 이후 세대에는 SIMD 유닛을 통해 여러 스칼라 값을 동시에 처리할 수 있다.[13] 자주 발생하는 경우나 -128에서 127 범위가 충분한 경우를 위해 즉시 주소 지정 오프셋과 즉시 데이터는 8비트 양으로 표현될 수 있다. 일반적인 명령어는 2~3바이트 길이지만, 일부는 더 길거나 짧을 수 있다.[13]

인코딩 공간 절약을 위해, 대부분의 레지스터는 opcode에서 3비트 또는 4비트(64비트 모드에서는 opcode 접두사 사용)로 표현된다. 명령어에 대한 최대 하나의 피연산자는 메모리 위치일 수 있다.[13] 이 메모리 피연산자는 대상(또는 결합된 소스 및 대상)일 수도 있으며, 다른 피연산자는 레지스터 또는 즉시 값일 수 있다. 이는 8비트 머신과 경쟁하는 코드 크기에 기여하고, 명령어 캐시 메모리의 효율적인 사용을 가능하게 한다.[13]

비교적 적은 수의 범용 레지스터(8비트 조상으로부터 상속됨)는 레지스터 상대 주소 지정(작은 즉시 오프셋 사용)을 피연산자에 접근하는 중요한 방법으로 만들었으며, 특히 스택에서 그렇다. 따라서 접근된 데이터가 최상위 캐시에 사용 가능한 대부분의 상황에서 1사이클 명령어 처리량을 갖도록 많은 노력이 투입되었다.[13]

3. 2. CISC (Complex Instruction Set Computer)

x86 아키텍처는 명령어의 길이가 다양하고, 하위 호환성을 중요하게 생각하는 CISC 디자인을 따르고 있다. 하지만 명령어 집합은 전형적인 CISC는 아니고, 기본적으로 8비트 80088080 아키텍처를 확장한 버전이다.

x86에서는 바이트 주소 지정이 가능하며, 워드는 리틀 엔디안 바이트 순서로 메모리에 저장된다. 거의 모든 명령어에서 정렬되지 않은 메모리 주소에 접근하는 것이 허용된다. 정수 연산과 메모리 주소(또는 오프셋)의 최대 기본 크기는 아키텍처 세대에 따라 16, 32 또는 64비트이다. 최신 프로세서는 더 작은 정수도 직접 지원한다. 이후 세대에는 SIMD 유닛을 통해 여러 개의 값을 동시에 처리할 수 있다. 자주 발생하는 경우나 -128..127 범위가 충분한 경우를 위해 즉시 주소 지정 오프셋과 즉시 데이터는 8비트 양으로 표현될 수 있다. 따라서 일반적인 명령어는 2 또는 3바이트 길이를 가지지만, 일부는 더 길거나 단일 바이트인 경우도 있다.

코드 공간을 절약하기 위해 대부분의 레지스터는 opcode에서 3비트 또는 4비트를 사용하여 표현되며, 64비트 모드에서는 opcode 접두사를 통해 표현된다. 명령어에 대한 최대 하나의 피연산자는 메모리 위치일 수 있다. 하지만 이 메모리 피연산자는 대상(또는 결합된 소스 및 대상)일 수도 있으며, 다른 피연산자는 레지스터 또는 즉시 값일 수 있다. 이는 8비트 머신과 경쟁하는 코드 크기에 기여하고, 명령어 캐시 메모리의 효율적인 사용을 가능하게 한다. 비교적 적은 수의 범용 레지스터(8비트 조상으로부터 상속됨)는 레지스터 상대 주소 지정(작은 즉시 오프셋 사용)을 피연산자에 접근하는 중요한 방법으로 만들었으며, 특히 스택에서 그렇다. 따라서 이러한 접근을 레지스터 접근만큼 빠르게 만들기 위해 많은 노력이 투입되었다. 즉, 접근된 데이터가 최상위 캐시에 사용 가능한 대부분의 상황에서 1 사이클 명령어 처리량을 갖도록 한다.

3. 3. 리틀 엔디안 (Little Endian)

x86 아키텍처는 워드를 리틀 엔디안 바이트 순서로 메모리에 저장한다.[7] 거의 모든 명령어에서 정렬되지 않은 주소에 대한 메모리 접근이 허용된다.

3. 4. 메모리 주소 지정 방식

x86 아키텍처는 세그먼트 기반 주소 지정 방식과 페이징 기반 주소 지정 방식을 모두 지원한다.

인텔 80286부터는 '''실제 모드'''(real mode)라는 프로세서 모드가 부팅 시 기본으로 활성화되었다. 실제 모드는 20비트의 주소를 사용할 수 있으며, 따라서 1MiB의 메모리에 접근할 수 있다.

실제 모드에서는 메모리에 접근할 때 해당하는 16비트 세그먼트와 실제로 사용되는 16비트 주소를 합쳐서 20비트 주소를 만든다. 예를 들어 DS가 A000h이고 SI가 5677h이면 DS:SI는 DS × 16 + SI = A5677h라는 주소를 가리키게 된다. 메모리 접근에 사용할 수 있는 세그먼트는 네 개(CS, DS, ES, SS)가 있으며, 그중 CS와 SS는 프로그램 실행에 밀접하게 연관되어 있기 때문에 실제로는 DS와 ES만을 사용했다.

실제 모드는 프로그래밍과 컴파일러 설계를 어렵게 했는데, 현재 세그먼트 안에서 접근할 수 있는지 없는지를 검사해서 다른 명령을 만들어야 했기 때문이다. 이때 세그먼트 안에서 접근할 수 있는 포인터를 가까운 포인터(near pointer)라 하고, 그렇지 않으면 먼 포인터(far pointer)라 한다.

인텔 80286은 실제 모드 외에도 '''보호 모드'''(protected mode)라는 별도의 모드를 하나 더 제공했다. 이 모드에서는 16MiB의 물리 메모리와 1GiB가상 메모리에 접근할 수 있으며, 세그먼트 레지스터를 별도의 세그먼트 테이블에 있는 기준 주소를 가리키도록 하였다. 이러한 테이블은 전역 기술 테이블(GDT)과 지역 기술 테이블(LDT)의 두 개로 나뉘는데, 각각 8192개의 24비트짜리 세그먼트 기술자를 담고 있으며 한 세그먼트는 64KiB의 메모리를 담고 있다. 각 세그먼트별로 네 개의 보호 단계(ring) 중 하나가 부여되며, 이를 통해 해당 세그먼트에서 실행되는 코드의 권한을 설정할 수 있다.

16비트 프로세서 모드의 어드레싱 모드는 다음 공식으로 요약할 수 있다.[26][27]

:

\begin{matrix}

\mathtt{CS}: \\ \mathtt{DS}: \\ \mathtt{SS}: \\ \mathtt{ES}:

\end{matrix}\ \

\begin{pmatrix} \\

\begin{bmatrix}

\mathtt{BX} \\ \mathtt{BP}

\end{bmatrix}

+

\begin{bmatrix}

\mathtt{SI} \\ \mathtt{DI}

\end{bmatrix} \\ \\

\end{pmatrix}

+

\rm 변위



32비트 x86 프로세서 모드의 어드레싱 모드는 다음 공식으로 요약할 수 있다.[28]

:

\begin{matrix}

\mathtt{CS}: \\ \mathtt{DS}: \\ \mathtt{SS}: \\ \mathtt{ES}: \\ \mathtt{FS}: \\ \mathtt{GS}:

\end{matrix}\ \

\begin{bmatrix}

\mathtt{EAX} \\ \mathtt{EBX} \\ \mathtt{ECX} \\ \mathtt{EDX} \\ \mathtt{ESP} \\ \mathtt{EBP} \\ \mathtt{ESI} \\ \mathtt{EDI}

\end{bmatrix}

+

\begin{pmatrix}\\

\begin{bmatrix}

\mathtt{EAX} \\ \mathtt{EBX} \\ \mathtt{ECX} \\ \mathtt{EDX} \\ \mathtt{EBP} \\ \mathtt{ESI} \\ \mathtt{EDI}

\end{bmatrix}
\begin{bmatrix}

1 \\ 2 \\ 4 \\ 8

\end{bmatrix} \\ \\

\end{pmatrix}

+

\rm 변위



64비트 프로세서 모드의 어드레싱 모드는 다음 공식으로 요약할 수 있다.[29]

:

\begin{Bmatrix} \\

\begin{matrix}

\mathtt{FS}: \\ \mathtt{GS}:

\end{matrix}\ \

\begin{bmatrix}

\vdots \\

\mathtt{GPR} \\

\vdots

\end{bmatrix}

+

\begin{pmatrix} \\

\begin{bmatrix}

\vdots \\

\mathtt{GPR} \\

\vdots \\

\end{bmatrix}
\begin{bmatrix}

1\\2\\4\\8

\end{bmatrix} \\ \\

\end{pmatrix} \\ \\

\hline \\

\begin{matrix}

\mathtt{RIP}

\end{matrix} \\ \\

\end{Bmatrix}

+

\rm 변위



64비트 코드에서 명령어 상대 어드레싱(RIP + 변위, 여기서 RIP는 명령어 포인터 레지스터)은 위치 독립 코드(일부 운영 체제에서 공유 라이브러리에서 사용)의 구현을 단순화한다.[30]

8086은 의 8비트 (또는 대안으로 16비트) I/O 공간과 컴퓨터 하드웨어가 지원하는 메모리의 (하나의 세그먼트) 스택을 가지고 있었다. 단어(2바이트)만 스택에 푸시할 수 있다. 스택은 수치적으로 낮은 주소 방향으로 증가하며, 는 가장 최근에 푸시된 항목을 가리킨다. 하드웨어와 소프트웨어 모두에 의해 호출될 수 있는 256개의 인터럽트가 있다. 인터럽트는 반환 주소를 저장하기 위해 스택을 사용하여 계단식으로 연결될 수 있다.

3. 5. 레지스터 구조

인텔 80868088은 14개의 16-비트 레지스터를 가지고 있었다. 이 중 AX, BX, CX, DX의 4개는 범용 레지스터(GPR)이며, 각각 추가적인 용도를 가질 수 있었다. 예를 들어, CX는 루프 명령과 함께 카운터로 사용될 수 있었다. 각 레지스터는 두 개의 개별 바이트로 접근할 수 있었다(BX의 상위 바이트는 BH, 하위 바이트는 BL). SP(스택 포인터)는 스택의 "최상위"를 가리키고, BP(베이스 포인터)는 종종 스택의 다른 위치(일반적으로 지역 변수 위)를 가리키는 데 사용되었다(프레임 포인터 참조). SI, DI, BX, BP는 주소 레지스터이며, 배열 인덱싱에도 사용될 수 있었다.[31]

메모리 주소 형성을 위해 4개의 세그먼트 레지스터(CS, DS, SS, ES)가 사용되었다. 8086/8088/80186/80188에서는 모든 주소가 세그먼트 레지스터와 범용 레지스터 중 하나로 구성되었다 (ds:si는 [16 * ds + si]로 형성된 주소 표기법). 그러나 이는 이후 프로세서에서 변경되었다.

플래그 레지스터에는 캐리 플래그, 오버플로 플래그, 제로 플래그 등의 플래그가 포함되어 있었다. 명령어 포인터(IP)는 메모리에서 가져와 실행될 다음 명령어를 가리켰다. 이 레지스터는 프로그램에서 직접 접근(읽기 또는 쓰기)할 수 없었다.[31]

인텔 8018680188은 8086 또는 8088 CPU를 업그레이드한 것으로, 온칩 주변 장치가 추가되었으며, CPU 레지스터는 8086 및 8088과 동일하다(주변 장치 인터페이스 레지스터 제외).

8086, 8088, 80186, 80188은 8087 부동 소수점 보조 프로세서를 선택적으로 사용할 수 있었다. 8087은 프로그래머에게 CPU의 일부로 보이며, st(0)에서 st(7)까지 8개의 80비트 폭 레지스터를 추가했다. 각 레지스터는 32-, 64-, 80비트 부동 소수점, 16-, 32-, 64비트 (이진) 정수, 80비트 팩형 십진 정수 중 하나의 형식으로 숫자 데이터를 저장할 수 있었다.[9] 또한 자체 16비트 상태 레지스터가 있었으며, 명령을 통해 접근하여 일반 플래그에 복사, 분기를 위해 일부 비트를 사용하는 것이 일반적이었다.[32]

인텔 80286보호 모드 지원을 위해 디스크립터 테이블 주소(GDTR, LDTR, IDTR)를 저장하는 세 개의 특수 레지스터를 추가했고, 네 번째 태스크 레지스터(TR)는 태스크 전환에 사용되었다. 80287는 80286용 부동 소수점 보조 프로세서이며, 8087과 동일한 데이터 형식을 가진 레지스터를 가지고 있었다.

인텔 80386은 이전 아키텍처를 32비트 환경으로 확장했다. 모든 레지스터, 명령어, I/O 공간 및 메모리가 32비트로 확장되었으며, 보호 모드 역시 32비트 보호 모드로 확장되었다. 16비트 레지스터는 32비트로 확장되었고, 확장된 32비트 레지스터는 원래 16비트 레지스터 이름 앞에 'E'를 붙여 EAX, ESI 등으로 명명되었다.

80486 이후 x86 아키텍처에는 멀티미디어 처리를 위한 SIMD 명령 집합과 레지스터들이 추가되었다. 펜티엄 MMX에서 소개된 MMX는 부동소수점 레지스터와 공유되는 64비트 정수 레지스터 8개(MM0부터 MM7까지)와 관련 명령들이 추가되었다. AMD는 부동소수점 실수를 처리하기 위한 3DNow! 확장을 만들었으며, 128비트 정수 및 실수 레지스터를 사용하는 SSE, SSE2, SSE3 등의 확장도 등장했다.

SIMD 레지스터에는 XMM0–XMM15 (AVX-512 지원 시 XMM0–XMM31)가 있다.

SIMD 레지스터 YMM0~YMM15 (AVX-512 지원 시 YMM0~YMM31)가 있으며, 각 YMM 레지스터의 하위 절반은 해당 XMM 레지스터에 매핑된다.

4. 현대적 응용

오늘날 x86 아키텍처는 개인용 컴퓨터 (PC), 미드레인지 컴퓨터, 워크스테이션, 서버, TOP500 목록에 있는 대부분의 슈퍼컴퓨터 클러스터에서 널리 사용된다.[10] x86 운영 체제를 포함한 방대한 양의 소프트웨어가 x86 기반 하드웨어에서 실행된다.

그러나 x86은 임베디드 시스템, 소형 저전력 전자 애플리케이션(소형 배터리 사용), 가전제품, 장난감과 같은 저가 마이크로프로세서 시장에서는 상대적으로 드물다.[13] 이러한 시장에서는 8비트 및 16비트 기반 아키텍처, RISC-V와 같은 RISC 아키텍처가 일반적이다. 하지만 x86 호환 VIA C7, VIA Nano, AMD의 Geode, Athlon Neo, 인텔 아톰은 저전력 및 저가형 세그먼트에서 사용되는 32비트 및 64비트 설계의 예시이다.[13]

iAPX 432(원래 ''Intel 8800''으로 명명[11]), 인텔 960, 인텔 860, 인텔/휴렛팩커드 아이테니엄 아키텍처 등 x86 아키텍처의 시장 지배력을 종식시키려는 여러 시도가 있었지만, x86 마이크로아키텍처, 전자 회로, 반도체 제조 기술의 지속적인 발전으로 인해 x86을 대체하기는 어려웠다. AMD의 x86-64 확장(인텔은 결국 호환 설계로 대응[12])과 최신 멀티 코어 CPU 형태의 x86 칩 확장성은 확립된 산업 표준의 지속적인 개선이 어떻게 새로운 아키텍처와의 경쟁에 저항하는지를 보여준다.[13]

4. 1. 개인용 컴퓨터 (PC)

x86 아키텍처는 데스크톱, 노트북, 워크스테이션 등 다양한 형태의 개인용 컴퓨터에서 널리 사용되고 있다. 인텔AMD는 개인용 컴퓨터 시장에서 x86 프로세서의 주요 공급 업체이다.[13] 오늘날 x86은 고정형 및 휴대용 개인용 컴퓨터에서 보편적으로 사용된다.[10]

1978년인텔이 출시한 최초의 x86 프로세서인 8086은 16비트였다. 8086과 이를 다소 개량한 Intel 8088은 1980년대 전반에 IBM PC 등에 채용되어 PC 등 소형 컴퓨터의 사실상의 표준으로 널리 보급되었다.[63]

4. 2. 서버

x86 아키텍처는 고정형 및 휴대용 개인용 컴퓨터뿐만 아니라, 미드레인지 컴퓨터, 워크스테이션, 서버에서도 널리 사용된다.[7] x86 운영 체제를 포함한 방대한 양의 소프트웨어가 x86 기반 하드웨어를 사용하고 있다.

최근에는 (PC)에서 슈퍼컴퓨터, 서버, 임베디드 시스템까지 널리 사용되면서, 기존의 "PC 서버"나 "IA 서버"라는 용어 대신 "x86 서버"나 "x86 시스템"이라는 용어를 사용하는 벤더들이 늘고 있다.

4. 3. 임베디드 시스템

x86 아키텍처는 산업용 제어 시스템, 네트워크 장비, 의료 기기, POS(Point of Sale) 시스템, 키오스크 등 다양한 임베디드 시스템에서 사용되고 있다. 현대 x86은 임베디드 시스템과 소형 저전력 전자 애플리케이션(소형 배터리 사용), 가전제품 및 장난감과 같은 저가 마이크로프로세서 시장에서는 상대적으로 드물며 x86의 비중이 크지 않다.[13] 이 분야에서는 단순한 8비트 및 16비트 기반 아키텍처와 RISC-V와 같은 더 간단한 RISC 아키텍처가 일반적이지만, x86 호환 VIA C7, VIA Nano, AMD의 Geode, Athlon Neo 및 인텔 아톰은 일부 상대적으로 저전력 및 저가형 세그먼트에서 사용되는 32비트 및 64비트 설계의 예이다.[13]

참조

[1] 간행물 80486 32-bit CPU breaks new ground in chip density and operating performance. (Intel Corp.) (product announcement) EDN 1989-05-11
[2] 웹사이트 AMD introduces 64-bit Opteron Chip (ESJ) (news article) https://www.hpcwire.[...] 2003-04-24
[3] 서적 Computer System Architecture Prentice-Hall of India 2009
[4] 서적 Microprocessors and Interfacing Techniques: For S. E. (Computer Engineering) Semester II of University of Pune Jaico Publishing House 2012
[5] 웹사이트 AMD Sets All-Time CPU Market Share Record as Intel Gains in Desktop and Notebook PCs https://www.tomshard[...] 2022-02-09
[6] 웹사이트 The cloud beyond x86: How old architectures are making a comeback https://icloud.pe/bl[...] Business Cloud News 2020-11-23
[7] 웹사이트 Whatever Happened to the Intel iAPX432? http://www.dvorak.or[...] Dvorak.org 2014-04-18
[8] 서적 iAPX 286 Programmer's Reference http://bitsavers.org[...] Intel 2017-08-28
[9] 서적 iAPX 86, 88 User's Manual http://bitsavers.org[...] Intel 2017-08-28
[10] 웹사이트 Birth of a Standard: The Intel 8086 Microprocessor http://www.pcworld.c[...] 2014-09-14
[11] 간행물 Intel's 8086 2010-01
[12] 보도자료 AMD Discloses New Technologies At Microprocessor Forum http://www1.amd.com/[...] AMD 1999-10-05
[13] 웹사이트 Microsoft to End Intel Itanium Support https://www.eweek.co[...] 2022-06-02
[14] 웹사이트 Intel 64 and IA-32 Architectures Optimization Reference Manual https://software.int[...] Intel 2020-03-07
[15] 웹사이트 The microarchitecture of Intel, AMD and VIA CPUs https://www.agner.or[...] 2020-03-07
[16] 웹사이트 Zet: The x86 (IA-32) open implementation: Overview http://opencores.org[...] 2014-01-05
[17] 웹사이트 Zhaoxin Preparing Linux Kernel Support For 7-Series Centaur CPUs https://www.phoronix[...] 2022-04-05
[18] 웹사이트 Zhaoxin aiming at 2021 release for its 7nm x86 CPUs - CPU - News - HEXUS.net https://m.hexus.net/[...] 2022-04-05
[19] 웹사이트 Zhaoxin Finally Adding "Lujiazui" x86_64 CPU Tuning To GCC https://www.phoronix[...] 2022-04-05
[20] 웹사이트 Setup and installation considerations for Windows x64 Edition-based computers http://support.micro[...] 2014-09-14
[21] 웹사이트 Envisioning a Simplified Intel Architecture https://www.intel.co[...]
[22] 뉴스 Intel Publishes "X86-S" Specification For 64-bit Only Architecture https://www.phoronix[...] 2023-05-20
[23] 웹사이트 toms hardware X86S https://www.tomshard[...]
[24] 웹사이트 Processors — What mode of addressing do the Intel Processors use? http://www.intel.com[...] 2014-09-14
[25] 웹사이트 DSB Switches http://software.inte[...] Intel 2013-08-26
[26] 웹사이트 The 8086 Family User's Manual http://bitsavers.org[...] Intel Corporation 2018-03-28
[27] 웹사이트 iAPX 286 Programmer's Reference Manual http://bitsavers.org[...] Intel Corporation 2017-08-28
[28] 서적 80386 Programmer's Reference Manual http://bitsavers.org[...] Intel Corporation 2018-03-28
[29] 서적 Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume 1: Basic Architecture http://www.intel.com[...] Intel Corporation 2014-03-19
[30] 서적 Practical binary analysis: build your own Linux tools for binary instrumentation, analysis, and disassembly No Starch Press, Inc
[31] 웹사이트 Guide to x86 Assembly http://www.cs.virgin[...] Cs.virginia.edu 2014-02-06
[32] 웹사이트 FSTSW/FNSTSW — Store x87 FPU Status Word https://www.felixclo[...] 2020-01-15
[33] 서적 Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture http://www.intel.com[...] Intel 2013-04-23
[34] 웹사이트 Intel 80287 family http://www.cpu-world[...] 2016-07-21
[35] 서적 Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture http://www.intel.com[...] Intel 2013-04-23
[36] 서적 Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture http://www.intel.com[...] Intel 2013-03
[37] 서적 iAPX 286 Programmer's Reference http://bitsavers.org[...] Intel
[38] 서적 iAPX 286 Programmer's Reference http://bitsavers.org[...] Intel
[39] 웹사이트 Intel's Yamhill Technology: x86-64 compatible {{!}}Geek.com http://www.geek.com/[...] 2008-07-18
[40] 웹사이트 Programming With the Intel MMX™ Technology http://www.intel.com[...] Intel 2022-06-05
[41] 간행물 SIMD programming illustrated using Intel's MMX instruction set https://dl.acm.org/d[...] 2004-01-01
[42] 뉴스 The History Of AMD CPUs https://www.tomshard[...] 2017-04-21
[43] 뉴스 AMD's K6-2 350: Something to do... https://www.anandtec[...] 1998-10-29
[44] 웹사이트 Intel's MMX and AMD's 3DNow! SIMD Operations https://web.mit.edu/[...] 2022-06-05
[45] 웹사이트 3DNow!™ Technology Manual https://www.amd.com/[...] Advanced Micro Devices 2022-06-05
[46] 뉴스 Upgrading And Repairing PCs 21st Edition: Processor Features https://www.tomshard[...] 2013-10-31
[47] 서적 AMD Athlon™ Processor x86 Code Optimization Guide 2002-02
[48] 웹사이트 Will Intel abandon the Itanium? http://features.tech[...] Techworld 2006-07-20
[49] 웹사이트 IBM WebSphere Application Server 64-bit Performance Demystified https://public.dhe.i[...] IBM Corporation 2007-09-06
[50] 웹사이트 Volume 2: System Programming https://www.amd.com/[...] AMD Corporation 2024-03
[51] 뉴스 Why Intel's Prescott will use AMD64 extensions http://www.theinquir[...] 2003-09-26
[52] conference A Comparison of Software and Hardware Techniques for x86 Virtualization http://www.vmware.co[...] 2006-10-21
[53] 웹사이트 Advanced Performance Extensions (APX) https://www.intel.co[...] 2023-10-22
[54] 웹사이트 Intel adds fresh x86 and vector instructions for future chips https://www.theregis[...] 2023-10-22
[55] 웹사이트 Intel Unveils AVX10 and APX Instruction Sets: Unifying AVX-512 For Hybrid Architectures https://www.anandtec[...] 2023-10-22
[56] 웹사이트 Intel's New AVX10 Brings AVX-512 Capabilities to E-Cores https://www.tomshard[...] 2023-10-22
[57] 웹사이트 Intel's Generational On-Chip Change APX Will Make All the Apps Faster https://thenewstack.[...] 2023-10-22
[58] 웹사이트 APX is Biggest x86 Addition Since 64 Bits https://www.techinsi[...]
[59] 웹사이트 Intel APX Code Begins Landing Within The GCC Compiler https://www.phoronix[...] 2023-10-22
[60] 웹사이트 Intel® Advanced Performance Extensions (Intel® APX) Architecture Specification https://www.intel.co[...] 2023-10-22
[61] 문서 x86 - デジタル大辞林 https://kotobank.jp/[...]
[62] 문서 SIMD命令としては1997年に初めてMMXが追加され、以降もストリーミングSIMD拡張命令|SSEやストリーミングSIMD拡張命令|AVXなどといったより強力な命令が追加されている。
[63] 문서 IT用語辞典【x86, x86系】
[64] 문서 ASCII.jp:32bitアプリを64bit Windows 7で動かす「WOW64」 (1/3)|あなたの知らないWindows https://ascii.jp/ele[...]
[65] 서적 マイクロコンピュータシリーズ15 8086マイクロコンピュータ 丸善株式会社 1983-04-30
[66] 웹사이트 Intel Corporation's Multicore Architecture Briefing http://www.intel.com[...] 2008-03-17
[67] 문서 Stephen P. Morse(1980),《Intel Microprocessors: 8008 to 8086》 https://stevemorse.o[...]
[68] 문서 인텔 8080의 어셈블리어 코드를 그대로 어셈블하면 x86에서 작동하는 코드가 출력된다는 말이 아니다.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com