컴퓨터 아키텍처 및 명령어 세트 아키텍처
컴퓨터 아키텍처
컴퓨터 아키텍처는 하드웨어 및 소프트웨어 기능의 설계와 컴퓨터가 효율적으로 작동할 수 있도록 구성되는 방식을 나타냅니다. 컴퓨터의 기능적 구조, 명령 세트 구조, 마이크로아키텍처 및 기타 하드웨어 및 계산 방법 설계 등이 포함되어 있습니다.

1. 기능적 구조 설계
컴퓨터가 계산을 효율적으로 수행하기 위해 어떤 기능이 필요한지 고민하고 설계하는 분야입니다. 대표적으로 von Neumann 구조, Harvard 구조 및 수정된 Harvard 구조가 있습니다.
2. CPU 명령어 설계
ISA(Instruction Set Architecture)라고 하며 CPU에서 처리할 명령어를 설명하는 필드입니다. 일반적인 예로는 Intel의 ARM, MIPS, AVR 및 x86-64가 있습니다.
3. CPU 하드웨어 설계
이를 마이크로아키텍처라고 하며 CPU 회로가 정의된 명령 집합을 효율적으로 처리하도록 설계된 영역입니다.
von Neumann 구조 및 명령어 세트 구조
폰 노이만 컴퓨터 계산, 제어, 저장세 가지 핵심 기능이 필요하다고 생각했습니다. 최신 컴퓨터는 계산 및 제어를 위해 중앙 처리 장치(CPU)를 사용하고 저장을 위해 메모리 장치를 사용합니다. 또한 버스라는 전자 경로는 장치 간에 데이터를 교환하거나 신호를 제어하는 데 사용됩니다.
중앙 처리 장치(CPU)
프로그램의 산술을 처리하고 시스템을 제어하는 컴퓨터의 두뇌오전. 프로세스의 코드를 로드하고 실행하고 결과를 저장하는 전체 프로세스는 CPU에서 이루어집니다. CPU는 산술/논리 연산을 처리합니다. 산술 논리 장치(ALU)그리고 제어 장치, CPU에 필요한 데이터를 저장합니다. 등록하다 등으로 구성되어 있습니다.
저장
컴퓨터가 작동하는 데 필요한 여러 데이터를 저장하는 데 사용그리고 용도에 따라 메인 메모리그리고 보조 기억장치프로그램 실행에 필요한 데이터를 저장하는 메인 메모리로 분류됩니다. 그 사이에스토리지에 사용되며 일반적으로 RAM이 있습니다. 반대로 보조 저장소는 운영 체제 및 프로그램과 같은 데이터를 저장합니다. 장기 보관원하는 경우 사용 일반적인 예는 HDD 및 SSD입니다.
버스
컴퓨터 부품 간 또는 컴퓨터 간 신호가 전송되는 경로일반적으로 데이터가 이동됨 데이터 버스해결하기 위해 주소 버스읽기/쓰기 제어 제어 버스또한 LAN 케이블 또는 데이터 전송을 목적으로 하는 소프트웨어 및 프로토콜을 버스라고도 합니다.

*메인 메모리/보조 메모리가 있는 경우 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 데이터 비트까지만 처리할 수 있습니다.
큰 단어의 이점
최신 PC는 대부분 64비트 아키텍처의 CPU를 사용하며 그 이유 중 하나는 32비트 아키텍처입니다. CPU가 제공할 수 있는 가상 메모리작은 크기 때문에오전. 가상 메모리~이다 CPU가 프로세스에 제공하는 가상 메모리그러나 32비트 아키텍처에서 프로비저닝할 수 있는 최대 가상 메모리 양은 4GB입니다. 따라서 메모리 리소스를 많이 소모하는 특수 소프트웨어나 고사양 게임을 실행하는 경우에는 부족할 수 있습니다.
그러나 64비트 아키텍처는 이론적으로 16엑사바이트의 가상 메모리를 제공할 수 있습니다. 일반적으로 이 용량을 완전히 활용할 수 없기 때문에 소프트웨어가 최적으로 작동하지 않거나 사용 가능한 메모리 리소스가 부족하여 소프트웨어를 실행할 수 없는 경우는 드뭅니다.
x86-64 아키텍처: 레지스터
레지스터는 CPU에서 빠르게 액세스하고 사용할 수 있는 CPU 내의 저장 장치입니다. 등 다양한 용도로 사용됩니다. B. 산술 연산 또는 주소 저장 및 참조에 필요한 데이터를 저장합니다. x64 아키텍처에는 일반 레지스터, 세그먼트 레지스터, IP(명령 포인터 레지스터) 및 플래그 레지스터가 있습니다.
일반 등기부
주 목적이 있지만 다른 목적으로도 사용할 수 있는 레지스터입니다. x86-64에서 각 범용 레지스터는 8바이트를 저장할 수 있으며, 이는 부호 없는 정수로 최대 2^64 – 1을 나타냅니다.

세그먼트 레지스터
x64 아키텍처에서 cs, ss, ds, es, fs, gs 총 6개의 세그먼트 레지스터가 있으며 각 레지스터의 크기는 16비트입니다. 세그먼트 레지스터는 아키텍처가 x64로 확장됨에 따라 용도가 크게 변경된 레지스터입니다.
과거에 IA-32 및 IA-16은 세그먼트 레지스터를 사용하여 사용 가능한 물리적 메모리의 양을 늘리려고 시도했습니다. 예를 들어 IA-16에서 주소 이름이 cs:offset인 경우 cs<<4 + offset의 주소를 사용하여 16비트 범위 내에서 접근할 수 없는 주소에 실제로 접근이 가능합니다. 당시에는 범용 레지스터의 크기가 작아 사용 가능한 메모리 주소 폭이 좁았지만 x64에서는 사용 가능한 주소 범위가 매우 넓어 이런 용도로 거의 사용되지 않는다.
현대의 x64에서 cs, ds 및 ss 레지스터는 코드, 데이터 및 스택 영역을 참조하는 데 사용됩니다.이 되다, 나머지 레지스터는 범용이므로 운영 체제에서 용도를 결정할 수 있습니다.세그먼트 레지스터.
명령어 포인터 레지스터
프로그램 코드는 기계어로 작성되며 그 중 CPU가 실행할 코드 부분을 지정합니다. 이것은 명령 포인터 레지스터의 역할입니다. x64 아키텍처 명령어 레지스터는 편히 쉬다크기는 8바이트입니다.
플래그 레지스터
이 레지스터는 프로세서의 현재 상태를 저장합니다. x64 아키텍처에는 이전 16비트 플래그 레지스터의 확장인 RFLAGS라는 64비트 플래그 레지스터가 있습니다. CPU의 현재 상태를 나타냅니다. B. 깃발을 세우고 내리는 것.


등록 호환 가능
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비트를 가리킵니다.

정리하다
- 일반 등기부: 주 용도가 있지만 다른 용도로도 자유롭게 사용할 수 있는 레지스터입니다. x64에는 rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, r8-r15가 있습니다.
- 세그먼트 레지스터: 과거에는 메모리 분할이나 가용 공간 확장에 사용되었으나 현재는 주로 메모리 보호에 사용됩니다. x64에는 cs, ss, ds, es, fs, gs가 있습니다.
- 플래그 레지스터: CPU의 상태를 저장하는 레지스터
- 명령 포인터 레지스터(IP): CPU가 실행해야 하는 코드를 가리키는 레지스터. x64에는 Rip이 있습니다.