Hacker News

x86-64 CPU에는 몇 개의 레지스터가 있습니까? (2020)

x86-64 CPU에는 몇 개의 레지스터가 있습니까? (2020) 이 탐구는 Mewayz Business OS의 중요성과 잠재력을 조사하면서 많은 것을 탐구합니다.

1 분 읽음

Mewayz Team

Editorial Team

Hacker News

x86-64 CPU에는 16개의 범용 레지스터가 있지만 전체 레지스터 파일은 훨씬 더 큽니다. 부동 소수점, SIMD, 세그먼트, 제어 및 모델별 레지스터를 포함하면 100개 이상의 아키텍처 레지스터를 포함합니다. 낮은 수준의 코드를 작성하든, 시스템 성능을 디버깅하든, 단순히 운영 체제 아래에서 일어나는 일에 대한 호기심을 만족시키든 전체 그림을 이해하는 것이 중요합니다.

x86-64의 16개 범용 레지스터는 무엇입니까?

x86 아키텍처(AMD64/Intel 64)의 64비트 확장은 IA-32의 원래 8개 범용 레지스터를 16개로 두 배로 늘렸습니다. 이는 산술, 메모리 주소 지정, 함수 인수 및 반환 값에 사용되는 일상적인 계산의 핵심입니다.

RAX, RBX, RCX, RDX — 원래의 "누산기", "기본", "카운터" 및 "데이터" 레지스터가 이제 64비트 너비로 확장되었습니다.

RSI, RDI — 문자열 연산 및 함수 인수에 자주 사용되는 소스 인덱스 및 대상 인덱스

RSP, RBP — 호출 스택 및 스택 프레임 관리에 중요한 스택 포인터 및 기본 포인터

R8 ~ R15 - x86-64에 도입된 8개의 새로운 레지스터(32비트 아키텍처에는 없음)로 컴파일러에 최적화를 위한 훨씬 더 많은 유연성 제공

이러한 64비트 레지스터 각각은 이전 버전과 호환됩니다. 즉, 하위 32비트(예: EAX), 16비트(AX) 또는 개별 8비트 절반(AH, AL)까지 주소를 지정할 수 있습니다. 이는 1978년 Intel 8086까지 거슬러 올라가는 설계 유산입니다.

x86-64에는 실제로 몇 개의 총 레지스터가 있습니까?

💡 알고 계셨나요?

Mewayz는 8개 이상의 비즈니스 도구를 하나의 플랫폼으로 대체합니다.

CRM · 인보이싱 · HR · 프로젝트 · 예약 · eCommerce · POS · 애널리틱스. 영구 무료 플랜 이용 가능.

무료로 시작하세요 →

범용 레지스터를 넘어서면 숫자가 상당히 늘어납니다. 최신 x86-64 프로세서는 사용자 공간 프로그램과 운영 체제 커널 모두에 여러 가지 고유한 레지스터 클래스를 노출합니다.

RFLAGS 레지스터는 모든 산술 또는 논리 연산 후에 조건 분기를 제어하는 조건 코드(0 플래그, 캐리 플래그, 오버플로 플래그)를 보유하는 단일 64비트 레지스터입니다. RIP 레지스터(명령어 포인터)는 실행할 다음 명령어의 주소를 추적하며 대부분의 명령어에서 직접 수정할 수 없습니다.

6개의 세그먼트 레지스터(CS, DS, ES, FS, GS, SS)는 이전 x86 아키텍처의 세그먼트화된 메모리 모델에서 남아 있습니다. 64비트 모드에서는 대부분 흔적이 남아 있지만 FS와 GS는 여전히 운영 체제에서 스레드 로컬 저장소와 CPU 로컬 커널 데이터 구조를 가리키는 데 적극적으로 사용됩니다.

그런 다음 SSE에 도입된 16개의 XMM 레지스터(XMM0~XMM15)가 있으며 각각 128비트 너비입니다. AVX를 사용하면 256비트 YMM 레지스터가 되고 AVX-512를 사용하면 512비트 ZMM 레지스터로 확장되어 지원되는 하드웨어의 파일에 또 다른 32개의 레지스터를 추가할 수 있습니다. 스택으로 구성된 레거시 8 x87 FPU 레지스터(ST0~ST7)는 80비트 확장 정밀도 부동 소수점 계산을 처리합니다.

주요 통찰력: 일반적인 x86-64 프로세스에서 사용자 공간 코드에 표시되는 총 레지스터 수는 약 40~50개입니다(범용, 플래그, 명령 포인터, 세그먼트 및 XMM 레지스터). 커널 모드 제어 레지스터, 디버그 레지스터 및 수백 개의 MSR(모델별 레지스터)을 추가하면 전체 아키텍처 레지스터 공간이 수천 개에 달하며 대부분은 일반 소프트웨어에서 건드릴 수 없습니다.

x86-64가 범용 레지스터 수를 두 배로 늘린 이유는 무엇입니까?

범용 레지스터가 8개에서 16개로 늘어난 것은 AMD가 2000년대 초반 x86-64 확장을 설계할 때 이룩한 가장 실용적인 개선 사항 중 하나였습니다. 원래의 8개 레지스터는 심각한 병목 현상을 일으켰습니다. 중간 값을 보유할 레지스터가 충분하지 않았기 때문에 컴파일러는 변수를 메모리(스택)에 지속적으로 유출해야 했습니다. 이러한 유출로 인해 추가 로드 및 저장 명령이 생성되어 시간과 메모리 대역폭이 모두 소모됩니다.

16개의 범용 레지스터를 사용하면 x86-64 호출 규칙(Linux/macOS의 System V AMD64 ABI, Windows의 Microsoft x64 ABI)은 스택을 전혀 건드리지 않고 레지스터에서 처음 여러 함수 인수(Linux의 6개 정수 인수(RDI, RSI, RDX, RCX, R8, R9))를 완전히 전달할 수 있습니다.

Build Your Business OS Today

From freelancers to agencies, Mewayz powers 138,000+ businesses with 207 integrated modules. Start free, upgrade when you grow.

Create Free Account →

Mewayz 무료로 사용해보기

CRM, 인보이싱, 프로젝트, HR 등을 위한 올인원 플랫폼. 신용카드 불필요.

오늘부터 더 스마트하게 비즈니스를 관리하세요

30,000+개의 비즈니스에 합류하세요. 영구 무료 플랜 · 신용카드 불필요.

이것이 유용하다고 생각하시나요? 공유하세요.

이를 실전에 적용할 준비가 되셨나요?

Mewayz를 사용하는 30,000+개 기업과 함께하세요. 영구 무료 플랜 — 신용카드 불필요.

무료 체험 시작 →

행동할 준비가 되셨나요?

오늘 Mewayz 무료 체험 시작

올인원 비즈니스 플랫폼. 신용카드 불필요.

무료로 시작하세요 →

14일 무료 체험 · 신용카드 없음 · 언제든지 취소 가능