본문 바로가기
이론/컴퓨터구조

복잡도에 따른 명령어 집합

by ohojee 2023. 12. 4.

CISC vs RISC

  • 초기 컴퓨터 문제점
    • 메모리는 고가, 속도 느림 ⇒ 코드 밀도 높여 메모리 용량 줄이려고 시도 ⇒ CISC 구조가 인기
  • CISC는 필연적으로 가변 명령어 형식 사용
    • 많은 종류의 주소 지정 방식을 사용하며, 명령어 해독 전까지 명령어의 길이를 알 수 x
    • 인출 여러번 해야돼서 데이터 전송 효율 저하
    • 명령어 인출 속도 저하
    • CISC의 강력하고 복잡한 명령어의 활용성에 대한 연구 결과
      • 생각보다 특별한 명령어 사용 빈도 ⬇️, 일부 데이터 형식은 거의 사용 x
      • 메모리의 지속적인 가격 하락으로 코드 밀도의 중요성 저하
      • 메모리의 속도 향상으로 폰노이만 병목에 대한 영향 축소
      • 비효율적인 복합 명령어보다 기본 명령어의 최적 조합을 이용하자는 주장
    • ⇒ RISC 구조 등장
      • 명령어 개수는 많아도 한 명령어의 실행 시간이 적기에 실행 시간 비슷할거라고 예상
  • RISC
    • 단순 명령어 형식, 명령어 종류 최소화, 고정 길이 명령어 사용
    • 적재-저장 구조, 제한된 종류의 주소 지정 방식
    • 하버드 아키텍처 (명령어 캐시, 데이터 캐시)(메모리는 하나인데 인터페이스를 따로 만듦)
    • 장:
      • 제어 장치가 간단해져 사이클 시간 ⬇️
      • 명령어 집합의 단순화로 효율적인 최적화 컴파일러 개발 가능
  • 현재는 RISC 구조와 CISC 구조의 장점을 통합하는 추세

picoMIPS 명령어 집합 구조

개요

  • 스탠퍼드 대학에서 제안한 RISC 프로세서 모델
  • 16bit 고정길이 명령어 형식
  • 명령어 16bit, 데이터 16bit ⇒ 워드도 16bit
    • 데이터: 2의 보수
  • 기본적으로 3-주소 명령어 형식을 사용
  • 적재-저장 명령어 구조
    • 적재와 저장 메모리를 따로 두고 그 외 나머지 명령은 메모리 엑세스 x
    • 연산은 레지스터만 이용해서 연산
  • 8개의 레지스터(0 ~ 7) ⇒ 3bit

명령어 형식

  • R-형식 명령어: Reg[rd] ← fn(Reg[rs], Reg[rt])
    • 대부분의 연산 명령어 형식
    • op에는 사실상 0000, fn도 op코드의 일부처럼 쓰임 + 역할을 함
    • rs와 rt 2개의 레지스터를 사용하여 연산 → 결과는 rd 레지스터에 저장
  • I-형식 명령어
    • imm = immidiate 데이터 = 그냥 데이터 값이라는 것 = 0주소 데이터 같이 연산자 자체가 값인 경우
      • 2의보수 방식이라 음수 쓸 수 o
    • 6bit imm(immediate) 필드
      • -32 ~ 31 사이의 상수
      • 워드 단위(2byte)로 메모리에 정렬되므로 ×2 하여 사용
    • 명령
      • 적재 명령 lw(load word): Reg[rt] ← M[Reg[rs] + imm × 2]
        • 피연산자 두개로 하나의 주소를 정하는 것 <= 2-주소지정방식
        • imm = 즉치주소
      • 저장 명령 sw(store word): M[Reg[rs] + imm × 2] ← Reg[rt]
      • 조건 분기 명령 beq(branch equal): if (Reg[rs] == Reg[rt]) PC ← PC + 2 + imm × 2
      • 기타 명령 addi, subi: Reg[rt] ← f(Reg[rs], imm)
  • J-형식 명령어: PC ← PC + 2 + addr × 2
    • 무조건 분기 명령(점프 명령)에 사용
    • 피연산자 1개
      • 12bit로 주소 표현
      • 주소도 음수값을 가질 수 o, pc 상대주소로 값을 지정하기 때문

$rt ← M[$rs + immx2]

왜 곱2? 명령어도, 데이터도 2바이트 ⇒ 메모리를 읽을 때 짝수번지부터 읽음

imm의 데이터의 마지막은 항상 0이 될 수밖에 없음 ?

rt는 저장하려는 레지스터 주소

if ($rt == $rs) then PC ← PC + 2 + immx2

pc상대주소로 pc주소 지정

  • picoMIPS의 명령어

Uploaded by N2T

'이론 > 컴퓨터구조' 카테고리의 다른 글

실수, 비수치 데이터  (1) 2023.12.24
데이터 형식, 정수  (1) 2023.12.06
주소 지정 방식  (1) 2023.11.30
명령어와 메모리  (0) 2023.11.27
피연산자의 수와 명령어 집합  (0) 2023.11.24

댓글