인스트럭션(instruction)은 컴퓨터에게 일을 시키는 단위로서, 컴퓨터가 알아들을 수 있는 기계어로 이루어져 있는 명령이다. 지시 또는 명령이라고 한다.
컴퓨터는 컴퓨터가 이해할 수 있는 언어인 기계어로 작성된 프로그램을 받아들인 후, 그 지시에 따라 움직인다. 이 기계어 프로그램에서 사용하는 동작 지시가 인스트럭션이다. 인스트럭션은 컴퓨터 프로그램의 기본으로서 컴퓨터의 동작을 지시하는 부호 단위인 셈이다.
인스트럭션(instruction) 또는 명령어는 컴퓨터가 직접 실행할 수 있는 가장 기본적인 단위의 명령을 의미한다. 이는 중앙처리장치(CPU)가 수행할 수 있는 연산, 데이터 이동, 분기(조건에 따라 흐름을 바꾸는 작업) 등을 지시한다. 대부분의 인스트럭션은 기계어(machine code) 형태로 인코딩되어 있으며, 이를 사람이 읽기 쉬운 형태로 바꾼 것이 어셈블리어(assembly language)이다.
인스트럭션은 명령부와 처리부로 나누어진다.
- 명령부(OP) : 실제 컴퓨터가 수행해야 할 동작을 나타내는 동사에 해당한다. 명령부의 내용은 주로 산술 및 논리연산, 데이터 이동, 분기, 입출력, 그외의 제어 명령이다.
- 처리부(operand) : 동작의 대상이 되는 데이터를 지정하므로 목적어에 해당한다. 처리부는 피연산자를 직접 나타내거나 피연산자가 기억된 레지스터 또는 기억장치의 주소이다.
대부분 컴퓨터에서 사용되는 공통적인 명령 부류는 자료 이동 명령, 산술 및 논리연산, 비교 및 검사, 분기, 서브루틴 호출과 복귀, 입출력, CPU 상태 조절 등이 있다.
기본 구조[편집]
하나의 인스트럭션은 보통 다음과 같은 구조를 가진다:
css
[연산 코드(opcode)] + [피연산자(operand)]들
- 구성 요소
- Opcode: 어떤 작업을 할 것인지 지정 (예: 더하기, 이동, 비교 등)
- Operand: 작업 대상 (예: 레지스터, 메모리 주소, 상수 등)
- 예시 (x86 어셈블리어 기준)
asm
MOV AX, BX ; BX 레지스터의 값을 AX로 복사
ADD AX, 1 ; AX 값에 1을 더함
JMP 0x0040 ; 0x0040 주소로 점프 (무조건 분기)
인스트럭션 실행 단계[편집]
CPU는 아래 단계(명령어 사이클)로 인스트럭션을 처리한다.
- 페치(Fetch): 메모리에서 인스트럭션 읽기
- 디코드(Decode): OPCODE 해석
- 실행(Execute): ALU(산술논리장치) 연산 수행
- 메모리 접근(Memory Access): 데이터 로드/저장
- 쓰기 백(Write Back): 결과 저장
⚙️ 파이프라이닝: 현대 CPU는 여러 인스트럭션을 병렬 처리하여 성능 향상.
인스트럭션의 종류[편집]
- 데이터 처리 인스트럭션
- 산술 연산: ADD, SUB, MUL, DIV
- 논리 연산: AND, OR, XOR, NOT
- 시프트 연산: SHL(왼쪽 시프트), SHR(오른쪽 시프트)
- 데이터 이동 인스트럭션
- MOV: 레지스터/메모리 간 데이터 복사
- PUSH/POP: 스택 연산
- 제어 흐름 인스트럭션
- JMP: 무조건 분기
- CALL/RET: 서브루틴 호출 및 반환
- CMP + JE/JNE: 조건부 분기
- 시스템 인스트럭션
- INT: 인터럽트 발생
- HALT: CPU 정지
인스트럭션 세트 (Instruction Set)[편집]
인스트럭션 세트(instruction set)**는 특정 CPU 아키텍처에서 사용되는 모든 인스트럭션의 집합이다.
대표적인 인스트럭션 세트 아키텍처(ISA):
아키텍처
|
설명
|
x86
|
인텔/AMD 계열, 복잡하고 다양한 인스트럭션을 지원
|
ARM
|
모바일, 임베디드에 최적화된 간결한 인스트럭션
|
RISC-V
|
오픈소스, 교육 및 차세대 CPU 설계에 사용
|
MIPS
|
고전적인 RISC 구조, 임베디드 시스템에서 사용됨
|
인스트럭션 저장과 실행[편집]
- 프로그램은 기계어(0과 1) 형태로 저장
- CPU는 명령어 포인터(Program Counter)로 다음 인스트럭션을 읽음
- 디코더(Decoder)가 인스트럭션 해석
- 해석된 연산을 ALU(산술논리장치) 등이 수행
최신 인스트럭션 기술 동향[편집]
- SIMD(Single Instruction Multiple Data)
- 한 인스트럭션으로 다수 데이터 병렬 처리 (예: Intel AVX, ARM NEON)
assembly
; AVX-512를 이용한 16개 부동소수점 연산
VMULPS ZMM1, ZMM2, ZMM3
- 확장 ISA
- AI 가속: NPU 전용 인스트럭션 (예: ARM SVE, x86 AMX)
- 보안: Intel SGX(메모리 암호화), RISC-V PMP(권한 제어)
인스트럭션 최적화 기법[편집]
- 인스트럭션 레벨 병렬성(ILP)
- 슈퍼스칼라: 다수 실행 유닛으로 동시 인스트럭션 처리
- 분기 예측: if문 성능 향상을 위한 하드웨어 최적화
- 코드 크기 감소
- Thumb 모드(ARM): 16비트 축약 인스트럭션 사용
- RISC-V 압축 확장(C): 32비트 → 16비트 인스트럭션 압축
같이 보기[편집]
 이 인스트럭션 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.
|
개발 : 프로그래밍 □■⊕, 소프트웨어, 데이터, 솔루션, 보안, 하드웨어, 컴퓨터, 사무자동화, 인터넷, 모바일, 사물인터넷, 게임, 메타버스, 디자인
|
|
프로그래밍 언어
|
ASP • C 언어 • C++ • C# • CSS • D 언어 • HTML • HTML5 • JSP • PHP • R • XHTML • XML • XSLT • 고(Go) • 고급언어 • 기계어 • 다트 언어 • 델파이 • 러스트 • 루비 • 루아 • 리스프 • 리액트 • 리퀴디티 • 무브 • 미켈슨 • 베이직 • 브이비스크립트 • 비주얼 C++ • 비주얼베이직(VB) • 비주얼베이직닷넷(VB.NET) • 솔리디티 • 스몰토크 • 스위프트 언어 • 스칼라 • 스크립트 언어 • 알골 • 어셈블리 • 언리얼스크립트 • 얼랭 • 에이잭스(Ajax) • 엠에프씨(MFC) • 오브젝티브-C • 오브젝트 파스칼 • 오카멜 • 웹어셈블리(WASM) • 이와즘(eWASM) • 자바 • 자바스크립트 • 저급언어 • 제이슨(JSON) • 제이쿼리(jQuery) • 카멜 • 코볼 • 코틀린 • 콜드퓨전 • 타입스크립트 • 파스칼 • 파워스크립트 • 파이썬 • 펄(Perl) • 포트란 • 프로씨(Pro-C) • 피엘에스큐엘(PL/SQL) • 피엘원(PL/I) • 하스켈
|
|
개발방법론
|
CBD 개발방법론 • EA • 구조적 개발방법론 • 객체지향 개발방법론 • 라이브러리 • 람다 아키텍처 • 모듈 • 모듈화 • 벤치마킹 • 산출물 • 소프트웨어 개발방법론 • 스크럼 • 스프린트 • 아키텍처 • 아키텍트 • 애자일 • 웹개발방법론 • 정보공학 개발방법론 • 컴포넌트 • 테일러링 • 폭포수 모델 • 프로젝트 • 프로토타입 • 피드백
|
|
코딩
|
EUC-KR • UTF-8 • 값 • 글루웨어 • 노팔로우 링크 • 두팔로우 링크 • 디버깅 • 디코딩 • 마크다운 • 마크업 • 버그 • 부트스트랩 • 세이브포인트 • 소스코드 • 시큐어코딩 • 아스키 • 액티브엑스 • 오픈소스 • 유니코드 • 인코딩 • 재컴파일 • 주석 • 컴파일 • 컴퓨터 프로그램 • 코드 • 코딩 • 태그 • 테스트 • 테이블 • 텍스트 • 파서 • 파싱 • 퍼블리싱 • 퓨니코드 • 하드코딩 • 하이퍼링크 • 하이퍼텍스트
|
|
프로그래밍
|
C 명령어 • 객체 • 객체지향 • 객체지향 프로그래밍 • 거짓 • 관계연산자 • 기본형 변수 • 널 • 논리 • 논리연산 • 논리연산자 • 다중상속 • 다형성 • 대입 • 대입문 • 대입연산자 • 더블 • 도스 명령어 • 디폴트 • 레지스터변수 • 루프 • 리눅스 명령어 • 리턴 • 매개변수(파라미터) • 메모리 주소 • 메소드 • 멤버 • 명령문 • 명령어 • 무한루프 • 문자 • 문자열 • 바이트 • 반복문 • 배열 • 변수 • 분기 • 분기문 • 불린 • 브레이크 • 비교연산자 • 비트연산자 • 산술연산자 • 상속 • 상수 • 생성자 • 선언 • 선언문 • 설정자 • 속성 • 스위치 • 스태틱 • 시프트연산자 • 실행 • 실행문 • 어노테이션 • 에코 • 역참조 • 연산 • 연산문 • 연산자 • 오버로딩 • 오버라이딩 • 외부변수 • 윈도우 명령어 • 유닉스 명령어 • 인스턴스 • 인스트럭션 • 인클루드 • 인터페이스 • 임포트 • 입력 • 입력문 • 입출력 • 입출력문 • 자동변수 • 자료형(데이터 타입) • 자바 명령어 • 자바 예약어 • 자바 컬렉션 • 전역변수 • 접근자 • 접근제어자 • 정보은닉 • 정수형 • 정의 • 정적변수 • 정적함수 • 제어 • 제어문 • 제어자 • 조건 • 조건문 • 조건연산자 • 주소 • 증감연산자 • 지역변수 • 참 • 참조 • 참조변수 • 초기화 • 추상메소드 • 추상클래스 • 추상화 • 출력 • 출력문 • 캡슐화 • 케이스 • 클래스 • 타입 • 파이널 • 패키지 • 퍼블릭 • 포인터 • 프라이빗 • 프로텍티드 • 필드(멤버변수) • 함수 • 환경변수
|
|
명령어
|
abstract • array • boolean • break • byte • case • char • continue • default • double • do while • echo • elif • else • else if • false • final • float • for • gosub • goto • if • if else • import • include • int • long • long long • null • print • printf • println • private • protected • public • return • scanf • short • stdio.h • static • string • switch • temp • then • true • unsigned • void • while
|
|
디자인패턴과 템플릿
|
구조패턴 • 동시성패턴 • 동시실행패턴 • 모델-뷰-컨트롤러 패턴 • 상태패턴 • 생성패턴 • 싱글톤패턴 • 아키텍처패턴 • 전략패턴 • 커맨드패턴 • 타임리프 • 템플릿 • 행동패턴
|
|
프로그래밍 인물
|
귀도 반 로썸 • 그레이스 머레이 호퍼 • 니클라우스 비르트 • 댄 브릭클린 • 더그 커팅 • 데니스 리치 • 리누스 토르발스 • 리처드 그린블라트 • 마거릿 해밀턴 • 마크 앤드리슨 • 빈트 서프 • 빌 게이츠 • 빌 조이 • 스티브 잡스 • 에이다 러브레이스 • 제임스 고슬링 • 척 벤턴 • 켄 톰슨 • 팀 패터슨
|
|
위키 : 인공지능, 개발, 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인물, 행사, 일반
|
|