< 목차 >
0. TL;DR
1. 명령어
2. 연산코드
3. 주소 지정
0. TL;DR
- 명령어: 무엇을 대상(오퍼랜드)으로 무엇을 수행(연산코드)하는 것
- 주소 지정: 유효 주소*를 찾는 방법
- 즉시 주소 지정
- 직접 주소 지정
- 간접 주소 지정
- 레지스터 주소 지정
- 레지스터 간접 주소 지정
1. 명령어
: 무엇을 대상(오퍼랜드)으로 무엇을 수행(연산코드)하는 것
이처럼 명령어는 명령의 대상과 동작으로 이루어진다.
명령어는 컴퓨터를 동작시키는 실질적인 정보다.
- 오퍼랜드(operand): 명령어를 수행할 대상
- 대상(데이터)이 직접 명시되기도 하고, 대상의 위치*가 명시되기도 함
- 연산코드(op-code): 오퍼랜드로 수행할 동작
👾 [중요] 대상의 위치
: 레지스터(CPU에 있는 작은 임시 저장 장치)의 이름, 메모리 주소
실제 컴퓨터로 동작시키는 명령어의 형태를 표로 간략하게 한 번 봐보자.
더해라 | 100과 | 100을 |
빼라 | 메모리 32번지 안의 값과 (위치) | 메모리 33번지 속의 값을 |
저장해라 | 무엇을 | 메모리 128번지에 |
출력해라 | 무엇을 | 모니터에 |
맨 왼쪽 ‘~해라’가 연산코드에 해당하고, 나머지가 오퍼랜드에 해당한다.
위 사진 2개는 명령어를 계산하는 단계다. 참고 정도만 해도 된다.
2. 연산코드
위 명령어들이 어셈블리어로 작성될 땐, 보통 약어로 작성되는 듯하다.
어셈블리어 명령어와 비교하면 다음과 같다.
3. 주소 지정
: 유효 주소*를 찾는 방법
CPU마다 차이가 있을 수 있다.
👾 유효 주소
: 연산의 대상(연산코드)이 되는 데이터가 저장된 위치
주소 지정하는 여러 방법에 대해 알아보기 전에 한 가지 의문점이 생길 수 있다.
왜 데이터를 ‘직접 명시하지 않고 위치를 명시’하는 걸까?
명령어의 길이가 한정되어 있기 때문이다.
위와 같이 짧은 길이에는 직접 데이터를 명시하는 것보다 위치(주소)를 명시하는 게 더 효율적이다.
(1) 즉시 주소 지정
: 오퍼랜드 필드에 연산에 사용할 데이터를 직접 명시
- 가장 빠른 주소 지정 방법
- 데이터 크기에 제한될 수 있음
즉시 주소 지정법이 이론적으로는 가장 빠르다고 알려져 있으나 주소 지정법이라고 하기도 뭐한 방법이긴 하다.
현업에서 많이 사용되지 않는 방법이라고 한다.
(2) 직접 주소 지정
: 오퍼랜드 필드에 유효 주소(연산에 사용될 데이터가 저장된 메모리 주소) 명시
[중요] CPU가 메모리에 접근하는 속도는 훨씬 더 느리기 때문에
레지스터에 접근해서 처리할 수 있는 건 레지스터로 처리하는 게 빠른 성능을 보장할 수 있다고 한다.
오퍼랜드 필드로 표현 가능한 메모리 주소 크기에 제한된다.
그래서 등장한 게 간접 주소 지정법이다.
(3) 간접 주소 지정
: 오퍼랜드 필드에 유효 주소의 주소 명시
유효 주소 크기에 제한은 없으나 속도가 비교적 느리다.
유효 주소의 주소는,
(1) 유효 주소 → (2) 데이터
이렇게 2번 접근해야 하기 때문에 속도가 느리다는 특징이 있다.
(4) 레지스터 주소 지정
: 오퍼랜드 필드에 연산에 사용할 데이터를 저장한 레지스터를 직접 명시
레지스터 접근은 메모리보다 빠르다!
(5) 레지스터 간접 주소 지정
: 연산에 사용할 데이터를 메모리에 저장한 뒤, 오퍼랜드 필드에 해당 메모리의 유효 주소를 저장한 레지스터를 명시
메모리 접근은 1번만 한다.
'CS (Computer Science)' 카테고리의 다른 글
[개발 공부 117일차] 컴퓨터 구조 | 2진법, 16진법, 문자 인코딩/디코딩 (8) | 2024.10.12 |
---|---|
[개발 공부 115일차] 컴퓨터 구조 | 컴파일, 인터프리트 (4) | 2024.10.10 |
[개발 공부 114일차] 컴퓨터 구조 | 컴퓨터의 4가지 핵심 부품 (0) | 2024.10.09 |
[개발 공부 112일차] DB 개론 | 성능을 고려한 데이터 모델링 (2) | 2024.10.03 |
[개발 공부 111일차] DB 개론 | 데이터 모델링 문제 및 해소 (10) | 2024.10.02 |