본문 바로가기
System Hacking

#0 80x86 시스템의 이해

by zz! 2024. 5. 1.
728x90

80x86 시스템 CPU는 인텔에 의해 개발된 마이크로프로세서의 계열을 지칭하는 용어이다.

이 계열의 CPU 중 초기 모델에는 8086과 8088이 포함된다. 그래서 8086과 8088을 먼저 알아보도록 하겠다.

 

1. 인텔 8086

8086은 인텔사에서 1978년에 제작한 개인용 컴퓨터를 위한 16비트 마이크로프로세서이다.

더보기

마이크로프로세서 : 산술 논리 장치 (ALU) , 제어 장치 , 레지스터를 하나의 단일체 집적회로로 구성한 것을 의미한다.

 

CPU와 동의어로 오해할 수 있지만, CPU 뿐만 아니라 GPU(Graphic Processing Unit), DSP(Digital Signal Processor)도 포함된다.  즉, CPU는 마이크로프로세서의 핵심 구성 요소이며, 마이크로프로세서는 CPU를 포함한 더 큰 개념이라고 볼 수 있습니다.

 

https://namu.wiki/w/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C

 

마이크로프로세서

마이크로프로세서(Microprocessor) 는 산술 논리 장치 , 제어 장치 , 레지스터 를 하나의 단일체

namu.wiki

 

아래의 사진은 인텔 8086 이다.

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%85%94_8086

 

2. 인텔 8088 또는 (iAPX 88이라고 부름.)

1979년 6월 1일 인텔사에서 나온 마이크로프로세서로 인텔 8086에 기초한 개량품이다.

(더 자세한 내용은 아래의 위키백과를 참고하자.)

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%85%94_8088

아래의 사진은 인텔 8088 이다.

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%85%94_8088

 

3. 80x86

x86 또는 80x86은 인텔이 개발한 마이크로프로세서 계열을 부르는 말이자, 이들과 호환되는 프로세서들에게 사용한 명령어 집합 구조들을 통칭하는 말이다. 

더보기

명령어 집합 구조(Instruction Set Architecture, ISA) : 마이크로프로세서가 이해하고 실행할 수 있는 기계어 "명령어"의 모음이다.

 

마이크로프로세서마다 기계어 코드의 길이와 숫자 코드가 다르다. 명령어의 각 비트는 기능적으로 분할하여 의미를 부여하고 숫자화한다. 프로그램 개발자가 숫자로 프로그램하기가 불편하므로 기계어와 일대일로 문자화한 것이 어셈블리어이다.

위에서 "명령어"는 어셈블리어(Assembly Language)로 표현되는 명령어를 말한다.

https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9%EC%96%B4_%EC%A7%91%ED%95%A9

3.1 x86 또는 80x86 이라는 이름인 이유

초기의 프로세서들 이름이 모두 80으로 시작해서 86으로 끝났기 때문에 붙여졌다.

3.2 80x86을 왜 배워야 하는지?

x86기반 CPU의 점유율이 압도적이기 때문이다. 

 

4. 80x86 시스템 CPU 구조

80x86 시스템 구조

4.1 ALU (Arithmetic and Logic Unit) 연산 장치

CPU(중앙 처리 장치)의 핵심 부분으로, 산술논리 등 연산을 수행하는 연산 회로 집합이다.

더보기

산술 : 덧셈, 뺄셈, 곱셈, 나눗셈 등의 연산을 말한다.

논리 : AND, OR, NOT, XOR 등의 논리게이트 연산을 말한다.

4.2 연산 장치의 구성 요소

여기서 데이터 레지스터, 누산기, 상태 레지스터는 "관련 레지스터"라고 보면 되고,

누산기, 가산기, 보수기는 "내부 장치"로 보면 된다.

데이터 레지스터(Data Register) : 메인 메모리에서 가져온 데이터를 일시적으로 저장하는 레지스터이다.

누산기(Accumulator) : 연산 결과를 일시적으로 저장하는 레지스터이다. 연산의 중간 결과를 저장한다.

가산기(Adder) : 데이터 레지스터와 누산기의 값을 더하여 결과를 누산기에 저장한다.

보수기(Complementer) : 뺄셈 연산을 수행하고, 1의 보수나 2의 보수 방식 이용

상태 레지스터(Status Register) : 연산 실행 결과로 나타내는 양수와 음수, 자리올림, 오버플로 상태 기억

시프터(Shifter) : 비트를 오른쪽이나 왼쪽으로 이동하여 나눗셈과 곱셈 연산 수행

4.3 제어 장치(Control Unit)

주기억 장치에 저장된 명령을 차례로 호출하여 해독한 후, 연산 장치로 보내 처리하도록 지시한다.

4.4 제어 장치의 구성 요소

명령 해독기, 부호기, 주소 해독기는 "내부 장치"로 보면 되고,

프로그램 카운터, 명령 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터는 "관련 레지스터"로 보면 된다.

명령 해독기(Instruction Decoder) : 명령어 레지스터(Instruction Register)에 저장된 명령어를 해석하여 부호기(Decoder)로 전송합니다.

부호기(Decoder) : 명령 해독기가 전송한 명령을 신호로 만들어 각 장치로 전송한다.

주소 해독기(Address Decoder) : 명령 레지스터에 있는 주소를 해독하여 메모리의 실제 주소로 변환한 후, 이를 데이터 레지스터에 저장한다. 

프로그램 카운터(Program Counter) : 다음에 실행할 명령의 주소를 저장한다.

명령 레지스터(Instruction Register) : 현재 실행 중인 명령을 저장한다.

메모리 주소 레지스터(Memory Address Register) : 주기억 장치의 번지를 저장한다.

메모리 버퍼 레지스터(Memory Buffer Register) : 메모리 주소 레지스터에 저장된 주소의 실제 내용을 저장한다.

4.5 레지스터

CPU 내에서 데이터를 임시 저장하기 위한 고속의 작은 메모리 영역이다. 프로세서의 처리 속도를 높이기 위해 매우 중요한 역할을 한다.

CPU는 레지스터를 통해 데이터를 빠르게 처리할 수 있으며, 메모리보다 접근 속도가 빠르다는 장점이 있다.

 

참고 자료

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%85%94_8086

 

인텔 8086 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 8086[1](iAPX 86)[2]은 인텔사에서 1978년에 제작한 개인용 컴퓨터를 위한 16비트 마이크로프로세서이다. x86-16(IA-16) 아키텍처를 적용한 첫 제품이다. 클럭 속도는 제

ko.wikipedia.org

728x90