GGWiki
새 문서
일반/위키

X86

공식 자료를 바탕으로 AI가 작성한 초안 · 출처 보기

편집 이의 제기 토론 수정 이력 토론에서 언급
X86 제목을 표시한 GGWiki 시각화
GGWiki 자체 생성 시각화 · 실제 게임 화면이 아닙니다.

개요편집이의 제기

x86(또는 80x86)은 인텔이 개발한 마이크로프로세서 계열을 부르는 말이자, 이들과 호환되는 프로세서들에서 사용되는 명령어 집합 구조(ISA)를 통칭하는 용어다. 1978년 인텔 8086이 처음 발표되면서 시작되었으며, 이후 80186, 80286, 80386, 80486 등 모델명이 '86'으로 끝나는 프로세서들이 잇따라 출시되면서 'x86'이라는 명칭이 정착되었다[1][2]. 숫자로 상표를 등록할 수 없었기 때문에 80486 이후로는 펜티엄 등 별도 브랜드명을 사용했으나, 586·686 같은 비공식 표기는 여전히 쓰이며 아키텍처 전체를 지칭하는 용어에도 그 흔적이 남아 있다[2].

x86은 가변 길이 명령어를 쓰는 CISC(Complex Instruction Set Computer) 설계를 채택했으며, 하위 호환성을 최우선으로 한다[2][3]. 메모리는 바이트 단위 주소 지정과 리틀 엔디안(little-endian) 바이트 순서를 사용하며, 정렬되지 않은 메모리 접근도 대부분 명령어에서 허용된다[3]. 워드 크기는 세대에 따라 16비트, 32비트, 64비트로 확장되었고, 최신 세대에서는 SIMD 유닛을 통해 여러 스칼라 값을 병렬 처리할 수 있다[3]. 2022년 6월 기준 데스크톱·노트북 시장의 대다수가 x86 기반이며, 워크스테이션·클라우드·슈퍼컴퓨터(TOP500) 분야에서도 지배적이다[3]. 반면 임베디드·모바일·초저전력·초저가 시장에서는 ARM, RISC-V 등 다른 아키텍처가 주류를 이룬다[3].

역사편집이의 제기

개발 배경과 초기 공개

인텔 8086은 8비트 프로세서인 8080의 16비트 확장판으로, 16비트 주소로는 다룰 수 없는 더 많은 메모리를 접근하기 위해 메모리 세그먼테이션을 도입했다[3]. 1978년 발표 당시에는 임베디드 시스템과 소형 멀티유저·싱글유저 컴퓨터를 주 타깃으로 했으며, 지일로그 Z80의 성공에 대응하려는 목적도 있었다[3]. 3년 뒤인 1981년 IBM PC의 표준 프로세서로 채택되면서 개인용 컴퓨터 업계의 사실상 표준 아키텍처로 자리 잡았다[2].

16비트 시대: IA-16과 실제 모드

인텔 8086과 8088은 14개의 16비트 레지스터(AX·BX·CX·DX 등 범용 4개, 세그먼트 4개, 포인터 2개, 인덱스 2개, FLAGS, IP)를 제공했다[2]. 8086은 64 KiB 메모리 공간과 64 KiB 스택 공간을 지원했으며, 256개 하드웨어·소프트웨어 인터럽트를 처리할 수 있었다[2]. 인텔 80286부터 부팅 시 기본으로 활성화되는 '실제 모드(real mode)'가 도입되어 20비트 주소(1 MiB 메모리) 접근이 가능해졌으나, 멀티태스킹을 하드웨어적으로 지원하지 않았고 세그먼트:오프셋 주소 계산 방식으로 인해 근거리 포인터(near pointer)와 원거리 포인터(far pointer)를 구분해야 하는 등 프로그래밍이 복잡해졌다[2].

보호 모드와 32비트 확장: IA-32

인텔 80286은 '보호 모드(protected mode)'를 추가로 제공했다. 이 모드에서는 16 MiB 물리 메모리와 1 GiB 가상 메모리를 접근할 수 있으며, 전역 기술자 테이블(GDT)과 지역 기술자 테이블(LDT)을 통해 세그먼트 기반 보호와 4단계 권한 링(ring 0~3)을 구현했다[2]. 그러나 실제 모드와의 전환이 느리고 불안정해 OS/2 등 초기 시도는 어려움을 겪었다[2].

1985년 인텔 80386(i386)이 출시되면서 아키텍처는 32비트(IA-32)로 확장되었다. 모든 레지스터·명령·I/O·메모리가 32비트가 되었고, 32비트 보호 모드에서 각 프로그램은 4 GiB 메모리를 쓸 수 있으며 페이징을 통해 하드웨어 가상 메모리를 지원하게 되었다[2]. 80386SX는 비용 절감을 위해 24비트 주소·16비트 데이터 버스를 썼다[2]. 레지스터명은 기존 16비트 이름 앞에 'E'를 붙여 EAX, ESI 등으로 확장되었고, 16비트/32비트 명령어 혼용을 위한 접두어 바이트가 도입되었다[2]. 80386은 세그먼트 메모리 모델과 페이징을 동시에 지원한 첫 프로세서로, 리눅스·386BSD·윈도우 NT 등 현대적 멀티태스킹 OS의 기반이 되었다[2]. 80486에서는 부동소수점 장치(FPU)가 온다이에 통합되었으며, 80486SX는 FPU를 뺀 저가형으로 나왔다[2].

SIMD 명령어 집합의 도입

80486 이후 멀티미디어 처리를 위해 SIMD 명령어와 전용 레지스터가 지속적으로 추가되었다. 펜티엄 MMX에서 64비트 정수 레지스터 8개(MM0~MM7)를 부동소수점 레지스터와 공유하는 MMX가 처음 등장했고[2], AMD는 부동소수점 실수 처리를 위한 3DNow!를 독자 개발했다[2]. 이어 인텔은 128비트 XMM 레지스터를 쓰는 SSE, SSE2, SSE3 등을 내놓았으며[2], 샌디브리지에서 AVX(256비트), 나이츠 코너/나이츠 랜딩/스카이레이크-X에서 AVX-512(512비트)까지 레지스터 폭을 넓혀갔다[3].

64비트 전환: IA-64, AMD64, 인텔 64

IA-32의 4 GiB 메모리 한계를 극복하기 위해 여러 64비트 확장이 제안되었다. 인텔은 완전히 새로운 설계인 IA-64(아이테니엄)를 내놓았으나 IA-32 하위 호환 성능이 낮았고[2], AMD는 IA-32와 호환되면서 64비트 레지스터·명령을 추가한 AMD64(x86-64)를 1999~2003년 발표했다[3]. 인텔은 2004년 AMD64와 호환되는 EM64T(나중 인텔 64)를 펜티엄 4부터 탑재했다[2]. 마이크로소프트와 썬/오라클은 'x64', 리눅스·BSD 진영은 'amd64'라 부르며, 윈도우는 32비트 버전을 'x86', 64비트 버전을 'x64'로 표기하고 64비트 설치 파일은 'AMD64' 디렉터리에 둔다[3].

주요 제조사와 라이선스 현황

IBM, NEC, 사이릭스, 트랜스메타, VIA, AMD 등 다수 기업이 x86 프로세서를 설계·제조했으며[2][3], 초기 호환 칩은 16비트였고 32비트 설계는 1990년대 초 i386·i486 호환품부터 본격화되었다[3]. AMD K5는 29K RISC 설계를 기반으로 x86 명령을 마이크로 연산으로 변환하는 파이프라인을 도입해 현대 x86 마이크로아키텍처의 원형이 되었고[3], K6·애슬론·옵테론으로 성공을 거두었다[3]. 사이릭스 6x86은 레지스터 리네이밍과 추측 실행을 처음 구현했으나 호환성·발열 문제가 있었다[3]. 넥스젠 Nx586은 FPU와 핀 호환성이 부족했고[3], 센테어 테크놀로지(VIA C3/C7/나노)와 트랜스메타도 저전력 시장을 노렸으나 주류에서 밀렸다[3].

현재 x86 아키텍처 라이선스를 보유하고 현대 64비트 설계를 적극 생산하는 업체는 인텔과 AMD 두 곳뿐이어서 '듀오폴리(duopoly)'라 불린다[3]. VIA 테크놀로지와 합작한 중국 자오신(Zhaoxin)이 2014년부터 VIA 기반 x86 프로세서를 개발 중이며, KX-7000 등 '7' 시리즈 출시를 2021년경 계획했으나 2022년 3월 기준 아직 출시되지 않았다[3].

X86S 제안과 철회

2023년 인텔은 레거시 실행 모드(16비트·32비트 OS 지원, 실제 모드, 페이징되지 않은 모드 등)를 제거하고 롱 모드에서 직접 부팅하는 단순화 아키텍처 'X86S'(구 X86-S)를 제안했다[3]. 32비트 사용자 코드(링 3)만 단순화된 세그먼테이션으로 허용하고, 5단계 페이징으로 바로 전환하는 식이었다[3]. 초안 명세는 2024년 6월 버전 1.2까지 갱신되었으나, 2024년 12월 인텔과 AMD가 'x86 생태계 자문 그룹'을 결성하면서 제안은 철회되었다[3].

이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.

출처

3개
1Wikidata ↗https://www.wikidata.org/wiki/Q182933
2위키백과 (한국어) · X86 ↗https://ko.wikipedia.org/wiki/X86
3위키백과 (영어) · X86 ↗https://en.wikipedia.org/wiki/X86