CS/컴퓨터 구조

[컴퓨터 구조] 3-2 명령어의 구조

서니션 2024. 5. 28. 15:00
728x90
반응형
이 글을 혼자 공부하는 컴퓨터구조 + 운영체제 (한빛미디어) 책을 읽고 혼자 공부한 내용입니다.
잘못 이해한 부분이 있을 수 있고, 문제가 있는 부분 댓글로 알려주시면 수정하겠습니다.

 

연산 코드와 오퍼랜드

명령어는 '무엇을 대상으로, 어떤 작동을 수행하라'는 구조

아래 그림처럼 색 배경 필드는 명령의 '작동', 흰색 배경의 필드는 '데이터 or 위치'를 담고 있음

 

명령어는 연산 코드와 오퍼랜드로 구성

연산 코드는 연산자, 오퍼랜드는 피연산자라고도 부름

 

오퍼랜드

오퍼랜드는 연산에 사용할 데이터, 연산에 사용할 데이터가 저장된 위치

오퍼랜드가 담기는 영역을 오퍼랜드 필드

 

데이터보다 위치가 더 자주 저장 되기 때문에 주소 필드라고도 부른다

오퍼랜드는 명령어 안에 하나도 없을 수도 있고, 한 개만 있을 수도 있고, 여러 개가 있을 수도 있음

 

 

연산 코드

연산 코드는 명령어가 수행할 연산

연산 코드가 담기는 영역을 연산 코드 필드

 

가장 기본적인 연산 코드 유형 4가지

- 데이터 전송

- 산술/논리 연산

- 제어 흐름 벼경

- 입출력 제어

 

 


주소 지정 방식

 

오퍼랜드 필드에 데이터만 넣으면 편하지 않은가? 왜 위치 값을 많이 넣을까?

-> 명령어 길이 때문

 

 

하나의 명령어가 n비트로 구성되어 있고, 그중 연산 코드 필드가 m비트일 때

오퍼랜드 필드의 길이는 연산 코드만큼의 길이를 뺀 n-m 비트이기 때문에

오퍼랜드 필드의 크기는 더욱 작아지게 됨

 

-> 오퍼랜드 필드 안에 메모리 주소가 담긴다면 표현할 수 있는 데이터의 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커짐! (레지스터 이름도 마찬가지)

 

연산의 대상이 되는 데이터가 저장된 위치를 유효 주소라고 함

 

주소 지정 방식 :

오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치를 찾는 방법

 

즉시 주소 지정 방식

연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식

가장 간단한 형태의 주소 지정 방식

데이터 크기가 작아지지만, 메모리나 레지스터로부터 찾는 과정이 없기 때문에 빠름

 

직접 주소 지정 방식

오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식

표현할 수 있는 오퍼랜드 필드의 길이가 연산 코드의 길이만큼 짧아져 표현할 수 있는 유효 주소에 제한이 생길 수 있음

 

간접 주소 지정 방식

유효 주소의 주소를 오퍼랜드 필드에 명시

유효 주소의 범위가 더 넓어졌지만, 두 번의 메모리 접근이 필요하기 때문에 일반적으로 느린 방식

 

레지스터 주소 지정 방식

연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방법

메모리보다 레지스터에 접근하는 것이 빠름

표현할 수 있는 레지스터 크기에 제한이 생길 수 있음

 

레지스터 간접 주소 지정 방식

연산에 사용할 데이터를 메모리에 저장하고, 그 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법

레지스터 간접 주소 지정 방식은 그냥 간접 주소 지정 방식보다 빠름

 


정리...

 

즉시 주소 지정 방식 : 연산에 사용할 데이터

직접 주소 지정 방식 : 유효 주소 (메모리 주소)

간접 주소 지정 방식 : 유효 주소의 주소

레지스터 주소 지정 방식 : 유효 주소 (레지스터 이름)

레지스터 간접 주소 지정 방식 : 유효 주소를 저장한 레지스터

728x90
반응형