CS/컴퓨터 구조론

컴퓨터 구조론 2장 [CPU의 구조와 기능 - 명령어 세트3]

devrabbit22 2025. 3. 23. 00:50

실제 상용 프로세서들의 명령어 형식

  • 회로 복잡도 증가 및 성능 한계를 극복하는 방법으로 새로이 제안된 명령어 세트 설계 개념은 명령어의 수를 최소화하고, 명령어의 길이를 일정하게 고정시키며, 주소지정 방식의 종류도 단순화 시키는 것이다.
  • 이러한 개념에 근거해 출현한 새로운 유형의 프로세서는 RISC(Reduced Instruction Set Computer)프로세서라고 불린다.
  • 그와 비교하여 복잡한 명령어 형식을 가진 기존 유형의 프로세서는 CISC(Complex Instruction Set Computer) 프로세서로 분류되고 있다.

 

실제 상용화된 프로세서들의 명령어들

PDP 계열 프로세서

PDP-10 시스템의 프로세서는 단어의 길이가 36비트이며, 명령어의 길이도 36비트이다. 

PDP-10 프로세서의 명령어 형식

  • PDP-10 프로세서는 명령어의 길이가 한 가지로 고정되어 있는 경우에 해당한다. 
  • 서로 다른 길이를 가진 여러 가지 명령어 형식들을 사용하는 프로세서들도 있다. 이 경우 길이가 서로 다른 더 많은 종류의 연산 코드들과 오퍼랜드들을 쉽게 제공해줄 수 있기 때문이다. 
  • ex) 대표적인 예시 PDP-11 미니 컴퓨터 프로세서
  • PDP-11은 16-비트 미니컴퓨터라는 한계 속에서도 강력하고 유연성이 높은 명령어 세트를 제공하도록 설계되었다. 

PDP-11의 명령어 형식들

  • PDP 명령어들의 길이는 대부분 한 단어(16비트)이다.
  • 몇 가지 명령어들은 하나 또는 두 개의 기억장치 주소 필드들이 추가되어 , 길이가 32비트 혹은 48비트인 경우도 있다.
  • 명령어 형식의 종류로는 13가지가 사용된다. 여기에는 0-, 1- 및 2-주소명령어 형식들이 모두 포함되어 있다.
  • OpCode는 연산 코드 필드를 나타내며, 길이는 4비트부터 16비트까지 다양하다.
  • 레지스터 필드는 각각 오퍼랜드의 근원지(Source) 혹은 목적지(Dest)가 되는 레지스터의 번호와 주소지정 방식 비트들을 포함하고 있으며, 길이는 6비트이다.
  • 이 프로세서는 8개의 16-비트 일반 목적용 레지스터들을 가지고 있기 때문에, 레지스터 필드의 6비트들 중의 3비트는 레지스터 번호를 지정하고, 나머지 3비트는 주소지정 방식을 가리킨다.
  • Offset은 상대 주소지정 방식을 위한 변위, R은 주소지정 방식의 구분이 필요하지 않은 경우의 조건 코드 필드를 각각 의미한다. 각 형식 아래의 숫자들은 필드의 길이를 가리킨다.

펜티엄 계열 프로세서

  • CISC(Complex Instruction Set Computer) 형으로 분류되는 펜티엄 계열 프로세서들도 다양한 종류의 명령어 형식들을 사용한다.
  • 펜티엄은 C나 FORTRAN과 같은 고급 언어가 효율적으로 실행될 수 있도록 하기 위해 여러 종류의 주소지정 방식들을 제공하고 있다. 기억장치 공간은 세그먼트 단위로 분리되어 액세스된다.
  • 이들은 세그먼트 레지스터(SR)에 의하여 구분된다. 세그먼트 레지스터는 6개가 있으며, 각 세그먼트 레지스터는 해당 세그먼트의 시작 주소를 가지고 있다.
  • 베이스 레지스터(BR)와 인덱스 레지스터(IX)가 주소지정에 사용된다.

펜티엄 계열 프로세서에서는 일단 유효주소(EA)가 결정되면, 해당 세그먼트의 시작 주소와 유효 주소를 더하여 실제 기억장치를 액세스하는 데 사용되는 선형 주소(linear address:LA)를 생성한다.

펜티엄의 주소지정 방식

  • 즉시방식(immediate mode): 데이터가 명령어에 포함.
  • 레지스터 방식(register mode): 유효 주소가 레지스터에 들어있다.
  • 변위 방식(displacement mode): 변위 값이 명령어의 한 부분으로 포함되어 있다.
  • 베이스 방식(base mode): 레지스터 간접 주소지정 방식과 동일
  • 변위를 가진 베이스 방식(base with displacement mode): 어떤 레지스터든 베이스 레지스터로 사용. 반복계산에 유용하다.
  • 변위를 가진 인덱스 방식(index with displacement mode): 명령어가 IX에 더해질 변위값을 포함. 데이터 배열 순차 검색에 유용.
  • 인덱스와 변위를 가진 베이스 방식(base with index and displacement mode): 다 더하여 유효 주소 결정. 특정 지역 내의 데이터 배열을 액세스하는 데 유용
  • 상대 방식(relative mode): 변위값이 PC와 더해지고 그 값은 다음 명령어의 주소로 사용된다. 변위값은 sign bit, word, 이중 word 등이 사용될 수 있다.

펜티엄 계열 명령어 형식의 필드들 

펜티엄 계열 프로세서의 명령어 형식

  • 연산 코드(Op code): 연산의 종류를 지정.
  • MOD R/M: 주소지정 방식을 지정해줌. 세 개의 필드들로 구성.
  • SIB: MOD R/M 필드와 결합하여 주소지정 방식을 완성시켜준다. 세 개의 필드들로 구성.
  • 변위(displacement): 변위 방식인 경우 부호화된 정수가 저장된다.
  • 즉시(immediate): 즉시 방식의 경우 데이터가 저장된다.

ATmega 마이크로컨트롤러

  • CPU의 데이터 처리의 기본 단위가 8비트이고 대부분의 명령어들의 길이는 16비트이며, 기억장치의 명령어나 분기 명령어와 같이 기억장치 주소를 포함하는 명령어들의 길이는 32비트이다. 
  • 이 명령어 세트의 특징은 연산 코드의 비트 수가 고정되지 않고 명령어에 따라 달라지며, 오퍼랜드 비트들의 위치도 유동적이다.

Atmega128 CPU 코어의 명령어 형식들

ATmega128 microcontroller의 명령어 형식의 예

(a) ADD Rd,Rr         ; Rd ← Rd + Rr
(b) ASR Rd               ;레지스터Rd에대하여산술적우측시프트수행
(c) JMP K                ; K 번지로 무조건 점프
(d) BRVS K               ;V플래그가세트되었다면,K번지로분기
(f) LDS Rd,K            ; K 번지의 내용을 읽어서 Rd에 적재

 

ARM (Advanced RISC Machine) 계열 프로세서 

  • 32-비트 RISC 프로세서
  • 공개형 아키텍처(Open Architecture) : 라이센스가 있으면 사용 가능
  • 모바일 시스템용 프로세서로 널리 사용

명령어 필드들

  • 분기조건 필드, 연산 필드, 오퍼랜드 필드, 등
  • 조건 플래그(cond): 명령어의 분기 조건 지정 (N, Z, C, V)
  • 명령어 연산 유형 결정 비트: 데이터 처리, 기억장치 액세스, 조건 분기 등 ➢연산 코드(OP)
  • S 비트: 명령어 실행 후 조건 플래그 갱신 여부 결정
  • 레지스터 필드: Rn, Rd, Rs
  • P, U, W 비트: 주소지정 방식 결정
  • B 비트: 연산처리 단위 결정 (바이트(B=1) 혹은 단어(B=0))

ARM 프로세서는 32-비트 명령어 형식을 사용하지만, 프로그램이 차지하는 기억장치 용량을 줄이고 16-비트 버스도 이용하기 위하여 코드 밀도를 높인 Thumb 명령어 세트를 추가적을 사용한다.

Thumb 명령어: 컴파일 과정에서 원래의 32-비트 명령어들을 분석하여 새로운 패턴의 16-비트 명령어 형식으로 축소
→ 프로그램 기억장치 용량 감소 (각종 임베디드 시스템에서 널리 사용)


Reference

컴퓨터구조론 개정 5판

https://yz-zone.tistory.com/70

 

[ 컴퓨터구조 ] 2.4.3 명령어 세트

[ 실제 상용 프로세서들의 명령어 형식 ] ▣ CISC(Complex Instruction Set Computer) 프로세서 ▪ 명령어들의 수가 많음 ▪ 명령어 길이가 일정하지 않음(명령어 종류에 따라 달라짐) ▪주소지정 방식이 매

yz-zone.tistory.com

https://github.com/okskna/ComputerArchitecture_Summary/blob/master/chapter_2.md

 

ComputerArchitecture_Summary/chapter_2.md at master · okskna/ComputerArchitecture_Summary

김종현 저자 컴퓨터 구조론 요약입니다. Contribute to okskna/ComputerArchitecture_Summary development by creating an account on GitHub.

github.com