컴퓨터 아키텍처

컴퓨터 아키텍처 및 명령어 세트 아키텍처

컴퓨터 아키텍처

컴퓨터 아키텍처는 하드웨어 및 소프트웨어 기능의 설계와 컴퓨터가 효율적으로 실행될 수 있도록 구성되는 방식을 나타냅니다.

컴퓨터 기능 구조, 명령어 세트 구조, 마이크로 아키텍처 등의 하드웨어 및 컴퓨팅 방법 설계 등.


1. 기능적 구조 설계

컴퓨터가 효율적으로 연산을 수행하기 위해 필요한 기능을 생각하고 설계하는 분야입니다.

대표적인 것은 von Neumann 구조, Harvard 구조, 개량형 Harvard 구조이다.

2. CPU 명령어 설계

ISA(Instruction Set Architecture)라고 하며 CPU에서 처리할 명령을 설계하는 영역입니다.

일반적인 예로는 ARM, MIPS, AVR 및 Intel의 x86-64가 있습니다.

3. CPU 하드웨어 설계

이를 마이크로아키텍처라고 하며 정의된 명령 세트를 효율적으로 처리하기 위해 CPU의 회로를 설계하는 분야입니다.

폰 노이만 아키텍처 및 명령어 세트 아키텍처

컴퓨터의 폰 노이만 컴퓨팅, 제어, 스토리지세 가지 주요 기능이 필요하다고 생각합니다.

최신 컴퓨터는 계산 및 제어를 위해 중앙 처리 장치(CPU)를 사용하고 저장을 위해 저장 장치를 사용합니다.

또한 버스라는 전자 경로는 장치 간에 데이터를 교환하거나 신호를 제어하는 ​​데 사용됩니다.

중앙 처리 장치(CPU)

프로그램 산술 및 제어 시스템을 처리하는 컴퓨터의 두뇌예. 프로세스의 코드를 로드하고 실행하고 결과를 저장하는 전체 프로세스는 CPU에서 이루어집니다.

CPU는 산술/논리 연산을 처리합니다.

산술 논리 장치(ALU)그리고 제어 장치, CPU에 필요한 데이터를 저장합니다.

등록하다 으로 구성되다

메모리

컴퓨터가 작동하는 데 필요한 여러 데이터를 저장하는 데 사용그리고 용도에 따라 메인 메모리그리고 보조 기억장치프로그램 실행에 필요한 데이터를 저장하는 메인 메모리로 분류됩니다.

일시적인스토리지에 사용되며 일반적으로 RAM이 있습니다.

반대로 보조 저장소는 운영 체제 및 프로그램과 같은 데이터를 저장합니다.

장기 보관필요할 때 사용하는 일반적인 예로는 HDD와 SSD가 있습니다.

버스

컴퓨터 부품 간 또는 컴퓨터 간 신호 전송 경로일반적으로 말하면 데이터 이동 데이터 버스말하다 주소 버스제어 읽기/쓰기 제어 버스버스라고도 하는 이 외에도 LAN 케이블 또는 데이터 전송에 사용되는 소프트웨어 및 프로토콜이 있습니다.


폰 노이만 구조

*메인/보조 메모리가 있는 경우 CPU에 다른 저장 장치가 있는 이유는 무엇입니까?

CPU는 데이터를 빠르게 교환해야 하는 매우 빠른 속도로 계산을 처리합니다.

하지만 CPU는 주/보조 메모리와의 데이터 교환보다 훨씬 빠르게 동작하기 때문에 CPU만 사용할 경우 병목 현상이 발생한다.

따라서 CPU에는 데이터 교환 속도를 크게 늦추기 위해 레지스터 및 캐시라는 내부 저장 장치가 있습니다.

명령어 세트 구조(x86-64 아키텍처)

ISA(Instruction Set Architecture)는 CPU가 해석하는 명령어 집합을 말합니다.

프로그램 코드는 기계어로 작성되며 프로그램이 실행될 때 CPU에서 이러한 명령을 읽고 처리합니다.

IA-32, x86-64(x64), MIPS 및 AVR과 같은 여러 유형의 ISA가 있습니다.

모든 컴퓨터가 동일한 수준의 컴퓨팅 성능을 요구하지 않고 컴퓨팅 환경이 다양하기 때문에 다양한 ISA가 개발되어 사용되었습니다.

x86-64 아키텍처

x64 아키텍처는 Intel의 64비트 CPU 아키텍처입니다.

Intel의 32비트 CPU 아키텍처인 IA-32는 64비트 환경에서 사용할 수 있도록 확장되었으며 대부분의 PC는 Intel의 x64 CPU를 사용합니다.

n비트 아키텍처

위의 64/32비트 아키텍처에서 64와 32는 CPU가 한 번에 처리할 수 있는 데이터 크기입니다.

컴퓨터 과학에서는 CPU가 이해하는 데이터 단위존재하다 단어그것은 알려져있다.

단어크기는 CPU 설계 방식에 따라 다릅니다.

예를 들어 일반적인 32비트 아키텍처에서 ALU는 한 번에 32비트 값을 계산할 수 있으며 레지스터의 용량과 다양한 버스의 대역폭은 모두 32비트입니다.

따라서 이들로 구성된 CPU는 최대 32비트 데이터만 처리하도록 설계되었습니다.

큰 WORD의 이점

최신 PC가 64비트 아키텍처 CPU를 사용하는 이유 중 하나는 32비트 아키텍처 CPU가 제공할 수 있는 가상 메모리작은 크기 때문에예. 가상 메모리 CPU가 프로세스에 제공하는 가상 메모리 공간그러나 32비트 아키텍처에서 사용 가능한 최대 가상 메모리 크기는 4GB입니다.

따라서 대용량 메모리 리소스를 사용하는 특수 소프트웨어나 고급 게임을 실행할 때는 충분하지 않을 수 있습니다.

그러나 64비트 아키텍처는 이론적으로 16엑사바이트의 가상 메모리를 제공할 수 있습니다.

일반적으로 이 용량을 완전히 활용할 수 없기 때문에 소프트웨어가 최적의 성능을 발휘하거나 사용 가능한 메모리 리소스가 부족하여 실행에 실패하는 경우는 드뭅니다.

x86-64 아키텍처: 레지스터

레지스터는 CPU에서 빠르게 액세스하고 사용할 수 있는 CPU 내부의 저장 장치입니다.

산술 연산에 필요한 데이터를 저장하거나 주소를 저장하고 참조하는 등 다양한 용도로 사용됩니다.

x64 아키텍처에는 일반 레지스터, 세그먼트 레지스터, 명령 포인터 레지스터(IP) 및 플래그 레지스터가 있습니다.

범용 레지스터

기본 목적이 있지만 다른 목적으로도 사용할 수 있는 레지스터입니다.

x86-64에서 각 범용 레지스터는 최대 2^64 – 1을 부호 없는 정수로 나타내는 8바이트를 저장할 수 있습니다.


일반 레지스터 사용

세그먼트 레지스터

x64 아키텍처에서 cs, ss, ds, es, fs, gs 6개의 세그먼트 레지스터가 있으며 각각의 크기는 16비트입니다.

세그먼트 레지스터는 아키텍처가 x64로 확장됨에 따라 용도가 크게 변경된 레지스터입니다.

과거에 IA-32 및 IA-16은 세그먼트 레지스터를 사용하여 사용 가능한 물리적 메모리의 크기를 늘리려고 시도했습니다.

예를 들어 IA-16에서는 주소를 cs:offset이라고 하는데, 실제로 16비트 범위 내에서 접근할 수 없는 주소는 cs<<4 + offset 주소를 통해서 접근할 수 있다.

당시 범용 레지스터는 크기가 작았기 때문에 사용 가능한 메모리의 주소 폭도 좁았지만 x64에서는 사용 가능한 주소 범위가 넓어 이러한 용도로 거의 사용되지 않았습니다.

현대의 x64에서 cs, ds 및 ss 레지스터는 코드, 데이터 및 스택 메모리 영역을 가리키는 데 사용됩니다.

이 되다, 나머지 레지스터는 범용으로 설계되었으므로 운영 체제에서 용도를 결정할 수 있습니다.

세그먼트 레지스터.

명령어 포인터 레지스터

프로그램 코드는 기계어로 작성되며 여기서 CPU가 실행할 코드 부분을 나타냅니다.

이것이 명령어 포인터 레지스터의 목적입니다.

x64 아키텍처용 명령어 레지스터는 다음과 같습니다.

찢다크기는 8바이트입니다.

플래그 레지스터

이 레지스터는 프로세서의 현재 상태를 저장합니다.

x64 아키텍처에는 이전 16비트 플래그 레지스터의 확장인 64비트 플래그 레지스터인 RFLAGS가 있습니다.

상승 및 하강 플래그와 같은 CPU의 현재 상태를 나타냅니다.


플래그 레지스터의 여러 플래그 비트

RFLAGS는 64비트이므로 최대 64개의 플래그를 사용할 수 있지만 실제로는 올바른 20비트 정도만 사용합니다.

등록 가능

x86-64 아키텍처는 IA-32의 64비트 확장이며 호환됩니다.

IA-32에서 CPU 레지스터는 크기가 32비트이고 이름은 eax, ebx, ecx, edx, esi, edi, esp 및 ebp입니다.

이들은 호환성을 위해 x86-64에서 있는 그대로 제공됩니다.

이전 rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp는 확장된 형식입니다.

eax, ebx 등은 확장 레지스터의 하위 32비트를 가리킵니다.

예를 들어, eax는 rax의 하위 32비트를 나타냅니다.

또한 과거 16비트 아키텍쳐와 호환되기 위해 IA-16, ax, bx 등은 eax, ebx 등 하위 16비트를 가리킨다.


x86-64에 등록

정리하다

  • 일반 명단: 주 목적이 있지만 다른 목적으로도 자유롭게 사용할 수 있는 레지스터입니다.

    x64에는 rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, r8-r15가 있습니다.

  • 세그먼트 레지스터: 예전에는 메모리 파티셔닝이나 가용 메모리 공간 확장용으로 사용되었으나 현재는 주로 메모리 보호용으로 사용됩니다.

    x64에는 cs, ss, ds, es, fs, gs가 있습니다.

  • 플래그 레지스터: CPU 상태를 저장하는 레지스터
  • 명령 포인터 레지스터(IP): CPU가 실행해야 하는 코드를 가리키는 레지스터. x64에 립이 있습니다.