Machine Code와 Microcode의 차이점 비교 및 설명
Machine Code (기계어)
정의:
Machine code
는
CPU가 직접 이해하고 실행할 수 있는 저수준의 코드임.
이는 CPU의 명령어 세트(instruction set architecture, ISA)에 따라 작성된 명령어들로 구성됨.
특징:
- 저수준 언어:
- 고수준 프로그래밍 언어에서 컴파일된 형태로, CPU가 직접 실행.
- 형태:
- 이진수로 이루어진 bit pattern이며,
- 각 명령어는 특정 작업을 수행함 (예: 데이터 이동, 산술 연산 등).
- 고정된 명령어 세트:
- 각 CPU 아키텍처마다 고유한 명령어 세트가 있음.
- 직접 실행:
- CPU는
machine code
를 직접 해석하여 명령어를 수행함.
- CPU는
예:
- x86 아키텍처의
MOV AX, 1
명령어는1011 0000 0000 0001
과 같이 이진수로 표현됨. - ARM 아키텍처의
ADD R0, R1, R2
명령어는1110 1010 0001 0000
과 같이 이진수로 표현됨.
Microcode (마이크로코드)
정의:
Microcode
는
CPU 내부에서 machine code
명령어를 실행하기 위해 필요한 저수준 제어 신호를 생성하는 코드임.
이는 CPU의 마이크로아키텍처 수준에서 동작하며, 복잡한 명령어를 더 단순한 하드웨어 동작으로 분해함.
특징:
- 제어 신호 생성:
- CPU 내부의 Control Unit에서 사용되며,
- 각
machine code
명령어를 실행하기 위해 필요한 일련의microcode
들을 정의.
- 형태:
Microcode
명령어로 구성되어 있으며,- 이는 레지스터 설정, ALU(산술 논리 장치) 동작, 메모리 접근 등을 제어함.
- 유연성:
- CPU 설계자는
microcode
를 변경하여 - CPU의 동작을 수정하거나 최적화할 수 있음.
- CPU 설계자는
- 하드웨어 내장:
- 보통 하드웨어에 내장되거나 펌웨어 형태로 제공됨.
예:
MOV AX, 1
machine code 의 명령어(mnemonic form)를 실행하기 위해
필요한 레지스터 설정, 버스 신호, ALU 동작 등을 제어하는 마이크로-명령어들로 분해되어 수행됨.
MOV AX, 1
이라는 mnemonic은 CPU가 이해할 수 있는 이진수 형태의 machine code로 변환됨.- x86 아키텍처에서는
MOV AX, 1
이1011 0000 0000 0001
과 같은 형태의 이진수 machine code로 변환됨. - Accumulator Regisger
AX
에1
을 저장.
- x86 아키텍처에서는
- CPU는 이
machine code
명령어를 해석하고 실행하기 위해 내부적으로 여러 단계의microcode
들로 사용. MOV AX, 1
명령어를 실행하기 위해 CPU는 다음과 같은microcode
로 분해하여 수행함:- AX 레지스터를 선택하고 준비.
- 상수 1을 내부 버스를 통해 ALU로 전달.
- ALU는 이 값을 AX 레지스터로 전송.
- 결과를 AX 레지스터에 저장.
차이점 요약
- 레벨:
Machine Code
: CPU가 직접 실행하는 최하위 수준의 프로그래밍 언어.Microcode
: Machine code 명령어를 실행하기 위해 필요한 하드웨어 제어 신호를 생성하는 코드.
- 목적:
Machine Code
: 프로그램의 논리적 명령어를 직접 수행함.Microcode
: 각 machine code 명령어를 실행하기 위해 필요한 세부적인 하드웨어 동작을 제어.
- 위치:
Machine Code
: 메모리에서 CPU로 전달되어 직접 실행됨.Microcode
: CPU 내부의 Control Unit에서 실행됨.
- 작성 및 수정:
Machine Code
: 고수준 프로그래밍 언어가 컴파일러에 의해 변환됨.Microcode
: CPU 설계자가 작성하며, CPU의 동작을 최적화하거나 수정할 때 사용됨.
비유
- Machine Code:
- 요리 레시피 책의 레시피처럼,
- 요리사 (~cpu)가 직접 따라할 수 있는 구체적인 지침임.
- Microcode:
- 요리 과정에서 각 단계를 세부적으로 설명하는 내부 지침처럼,
각 단계를 구체적으로 수행하기 위한 세부 지침임.
- 요리 과정에서 각 단계를 세부적으로 설명하는 내부 지침처럼,
같이보면 좋은 자료들
https://dsaint31.me/mkdocs_site/CE/ch08/ce08_compiler_interpreter/#_2
'CE' 카테고리의 다른 글
Tree Traversal (트리 순회): BFS and DFS (2) | 2024.12.02 |
---|---|
[CE] Heap and Complete Binary Tree (0) | 2024.11.16 |
[CE] Stream이란 (4) | 2024.09.11 |
[CE] Byte Code (바이트코드) (1) | 2024.06.05 |
[CE] Terms: HDD, Partition, Volume, Drive and File System. (0) | 2024.05.15 |