마이크로 연산(micro-operation)
- CPU에서 한 클럭 펄스(clock pulse) 동안에 일어나는 세부 동작이다.
- micro-ops 또는 μops 로도 표시
- 기계어 또는 어셈블리 명령어는 여러 개의 마이크로연산이 합쳐진 일종의 매크로(macro) 명령어 형태이다.
- 따라서, 하나의 CPU 명령어는 여러 개의 클럭 펄스를 필요로 한다.
명령어 세트(Instruction Set)
- CPU가 이해하고 동작시킬 수 있도록 정의되는 명령어들의 집합이다.
- 컴퓨터구조의 일부이기 때문에 ISA(Instruction Set Architecture)라고도 한다.
- CPU마다 명령어의 길이나 구조가 다를 수 있다. 즉, 같은 C언어로 작성된 코드라도 다른 CPU에서 동작하게 하려면 다른 컴파일러의 도움이 필요하다
명령어 형식(instruction format)
instruction은 크게 opcode, operand 필드로 구성되어있다.
- opcode : 연산의 동작(종류, 방법)을 나타내는 비트열
- operand : 연산에 필요한 데이터 또는 데이터의 주소 또는 레지스터 번호
instruction의 operand 개수에 따라 다음과 같이 분류 할 수 있다.
주소지정 방식(addressing mode)
주소 지정방식(Addressing mode)이란?
- 명령어에 포함된 operand를 지정하는 방법
- operand가 나타내는 실제 데이터 및 유효 주소(effective address)를 찾아내는 방법을 나타낸다.
- 주소 지정 방식을 사용하면 명령어 길이의 비트 수 제약에서 벗어나 더 큰 기억용량이나 더 큰 단위의 데이터를 처리할 수 있게된다. (장점)
*유효 주소(effective adress) : 데이터가 저장된 기억장치의 실제 주소
주소지정 방식의 종류
- 암시적 주소지정 방식(implied addressing mode)
- 즉치 주소지정 방식(immediate addressing mode)
- 직접 주소지정 방식(direct addressing mode)
- 간접 주소지정 방식(indirect addressing mode)
- 레지스터 주소지정 방식(register addressing mode)
- 레지스터 간접 주소지정 방식(register indirect addressing mode)
- 변위 주소지정 방식(displacement addressing mode)
- 상대 주소지정 방식(relative addressing mode)
- 인덱스 주소지정 방식(index addressing mode)
- 베이스-레지스터 주소지정 방식(base-register addressing mode)
암시적 주소지정 방식(implied addressing mode)
- opcode 만으로 특정 레지스터 동작을 암시한다. (암묵적으로 필요한 데이터 위치를 나타냄)
- ex) SHL : 누산기 내용을 왼쪽으로 shift
- ex) INC : 누산기의 값을 1 증가
- 장점 : 명령어 길이가 짧다.
- 단점 : 종류가 제한된다.
즉치 주소지정 방식(immediate addressing mode)
- operand에 즉시 사용할 수 있는 데이터를 저장
- ex) 레지스터나 변수들의 초기값을 특정 상수값으로 초기화 하는 경우
- 장점 : 특정 기억장치에 접근할 필요가 없음
- 단점 : 상수값의 크기가 operand 크기에 제한된다.
직접 주소지정 방식(direct addressing mode)
- operand가 유효주소를 직접 저장
- ex) ADD R1, [0x1000] == R1 <- R1 + M[0x1000]
- 장점 : 한번의 기억장치 접근만 필요하다.
- 단점 : 주소의 크기가 operand 크기에 제한된다.
간접 주소지정 방식(indirect addressing mode)
- operand에 유효 주소가 들어 메모리 주소를 저장. operand -> memory -> effective address
- ex) ADD R1, [ [0x1000] ] == R1 <- R1 + M[ [M[0x1000] ]
- 명령어 형식에서 간접 주소지정인지, 직접 주소 지정인지 확인할 수 있는 1bit 가 필요
- 장점
- 접근 가능한 주소공간의 크기가 워드 크기만큼 확장
- 워드 크기가 n비트 라면 2^n개의 주소 지정이 가능
- 단점 : 실제 데이터에 접근하기 위해서 기억 장치에 두 번 접근해야 한다.
레지스터 주소지정 방식(register addressing mode)
- operand에 데이터를 저장하고 있는 레지스터 번호를 저장
- ex) ADD R1, R2; == R1 <- R1 + R2
- 장점
- operand 필드의 비트 수가 적어도 된다.
- register로 접근하므로 빠르다.
- 단점 : 데이터가 저장될 수 있는 공간이 CPU 내부 레지스터들로 제한된다. (무한정 사용할 수 없다)
레지스터 간접 주소지정 방식(register indirect addressing mode)
- operand에 유효주소를 저장하고 있는 레지스터 번호를 저장
- ex) ADD R1, [R2]; == R1 <- R1 + M[R2]
- 장점 : 접근 가능한 주소 공간의 범위가 레지스터 크기에 비례 (32bit 라면 2^32까지 표현 가능)
변위 주소지정 방식(displacement addressing mode)
- operand 필드를 직접 주소와 오프셋으로 구성
- ex) EA = R + A
- 변위 주소지정 방식은 사용 되는 레지스터 종류에 따라 다음과 같이 분류된다.
- PC => 상대 주소지정 방식
- index register => 인덱스 주소지정 방식
- base register => 베이스 주소지정 방식
변위 주소지정 방식 사용 예
- 상대 주소 지정방식 : JUMP 명령어 수행시 PC를 기준으로 앞 또는 뒤쪽으로 분기 가
- ex) EA = (PC) + A; PC가 450이고 A가 -21이라면 EA는 429가 된다.
- 인덱스 주소지정 방식 : 배열 인덱스 접근
- ex) EA = (IX) + A;
- 베이스 주소지정 방식 : 서로 다른 세그먼트 내 프로그램의 위치 지정
- ex) EA = (BR) + A;
'CS > OS & 하드웨어' 카테고리의 다른 글
CISC / RISC 개념 및 차이 (0) | 2024.04.25 |
---|---|
중앙처리장치(CPU) - 3 (CPU 명령어 사이클) (0) | 2024.04.18 |
중앙처리장치(CPU) - 1 (CPU 구조) (0) | 2024.04.18 |
레지스터 (Register) (0) | 2024.04.16 |
가상 메모리와 가상 주소 공간 (0) | 2024.04.12 |