본문 바로가기
CE

[CE] Machine Code와 Microcode의 차이점 비교 및 설명

by ds31x 2024. 6. 5.

Machine Code와 Microcode의 차이점 비교 및 설명

Machine Code (기계어)

정의:

Machine code
CPU가 직접 이해하고 실행할 수 있는 저수준의 코드임.

이는 CPU의 명령어 세트(instruction set architecture, ISA)에 따라 작성된 명령어들로 구성됨.


특징:

  • 저수준 언어:
    • 고수준 프로그래밍 언어에서 컴파일된 형태로, CPU가 직접 실행.
  • 형태:
    • 이진수로 이루어진 bit pattern이며,
    • 각 명령어는 특정 작업을 수행함 (예: 데이터 이동, 산술 연산 등).
  • 고정된 명령어 세트:
    • 각 CPU 아키텍처마다 고유한 명령어 세트가 있음.
  • 직접 실행:
    • CPU는 machine code를 직접 해석하여 명령어를 수행함.

예:

  • 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의 동작을 수정하거나 최적화할 수 있음.
  • 하드웨어 내장:
    • 보통 하드웨어에 내장되거나 펌웨어 형태로 제공됨.

예:

MOV AX, 1 machine code 의 명령어(mnemonic form)를 실행하기 위해
필요한 레지스터 설정, 버스 신호, ALU 동작 등을 제어하는 마이크로-명령어들로 분해되어 수행됨.

  • MOV AX, 1이라는 mnemonic은 CPU가 이해할 수 있는 이진수 형태의 machine code로 변환됨.
    • x86 아키텍처에서는 MOV AX, 11011 0000 0000 0001과 같은 형태의 이진수 machine code로 변환됨.
    • Accumulator Regisger AX1을 저장.
  • CPU는 이 machine code 명령어를 해석하고 실행하기 위해 내부적으로 여러 단계의 microcode들로 사용.
  • MOV AX, 1 명령어를 실행하기 위해 CPU는 다음과 같은 microcode로 분해하여 수행함:
    1. AX 레지스터를 선택하고 준비.
    2. 상수 1을 내부 버스를 통해 ALU로 전달.
    3. ALU는 이 값을 AX 레지스터로 전송.
    4. 결과를 AX 레지스터에 저장.

차이점 요약

  1. 레벨:
    • Machine Code: CPU가 직접 실행하는 최하위 수준의 프로그래밍 언어.
    • Microcode: Machine code 명령어를 실행하기 위해 필요한 하드웨어 제어 신호를 생성하는 코드.
  2. 목적:
    • Machine Code: 프로그램의 논리적 명령어를 직접 수행함.
    • Microcode: 각 machine code 명령어를 실행하기 위해 필요한 세부적인 하드웨어 동작을 제어.
  3. 위치:
    • Machine Code: 메모리에서 CPU로 전달되어 직접 실행됨.
    • Microcode: CPU 내부의 Control Unit에서 실행됨.
  4. 작성 및 수정:
    • Machine Code: 고수준 프로그래밍 언어가 컴파일러에 의해 변환됨.
    • Microcode: CPU 설계자가 작성하며, CPU의 동작을 최적화하거나 수정할 때 사용됨.

비유

  • Machine Code:
    • 요리 레시피 책의 레시피처럼,
    • 요리사 (~cpu)가 직접 따라할 수 있는 구체적인 지침임.
  • Microcode:
    • 요리 과정에서 각 단계를 세부적으로 설명하는 내부 지침처럼,
      각 단계를 구체적으로 수행하기 위한 세부 지침임.

같이보면 좋은 자료들

https://dsaint31.me/mkdocs_site/CE/ch08/ce08_compiler_interpreter/#_2

 

BME228

Compiler Language and Interpreter Language Compiler Language Compiler(High-level language를 machine language로 번역)를 사용하는 고급 언어. 프로그램 전체를 읽어들여 이를 object code(목적코드)로 바꿈. Compiler 능력에 따

dsaint31.me

 

'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