[컴퓨터구조] ISA - CISC vs. RISC

apphia·2021년 9월 25일
3

CS

목록 보기
1/8

ISA란

  • Instruction Set Architecture

  • 소프트웨어(시스템 소프트웨어)와 하드웨어 사이의 약속(인터페이스)

  • 개발자들은 보통 high-level language로 코드를 짠다. 하지만 컴퓨터가 이를 이해하기 위해서는 어셈블러(high-level language → assembly language)와 컴파일러(assembly languabe → machine language)를 거쳐 low-level lanaguage로 번역되어야 한다. 이렇게 low-level language로 번역된 후에는 hw에게 명령을 내려줘야 하는데, 이 때 sw와 hw 사이를 연결해주는 것이 ISA이다.

  • 즉, ISA는 소프트웨어와 하드웨어가 서로 통신할 수 있게 해주는 "명령어들의 집합"이다.

  • ISA 아래에 있는 micro architecture는 micro processor가 사용하는 명령어 처리 방식이다. micro processor는 우리가 아는 CPU라고 생각하면 된다.(과거와 비교했을 때 상대적으로 사이즈가 작아져서 micro가 붙었다고 한다.) 따라서 micro architecture 역시 CPU architecture의 맥락으로 이해하면 된다.

  • CPU architecture의 종류로는 CISC와 RISC가 있다.
    (참고로 컴퓨터 구조에서 자주 등장하는 MIPS는 전형적인 RISC 아키텍쳐 위에서 사용될 수 있는 ISA이다.)

ISA 명령어

종류

: ISA에 포함되는 명령어들이 종류로는 다음과 같은 것들이 있다.

  • 산술 논리 명령어(add, sub) : ALU를 이용해 사칙연산/논리연산 등을 수행한다.

  • 데이터 전송 명령어(load, store) : 메모리 간에 데이터를 전송한다.

  • 실행 흐름 제어 명령어(branch, call, trap) : 조건에 따라 서로 다른 실행 흐름으로 분기한다.

  • 부동 소수점 연산 명령어 : 부동소수점 실수의 연산을 수행한다.

구성

: 각 명령어는 보통 opcodeoperand 로 구성된다.

  • opcode
    : ADD, SUB와 같은 "명령의 종류"이다.

  • operand
    : opcode가 연산을 수행하는 대상이다. opcode가 무엇인지에 따라 함께 오는 operand의 개수가 달라질 수 있다. operand로 흔히 쓰이는 것들로는 register , memory address , 상수 값 등이 있다.

Addressing mode

: 명령어가 어느 위치에 있는 값을 읽고 써야하는지를 지정하는 방식이다. ISA마다, 명령어마다 가능한 addressing mode가 다를 수 있다.

  • register : 레지스터에 저장된 값을 접근할 때
    ex) add r1, r2 : reg[r1] = reg[r1] + reg[r2]

  • immediate : 명령어 자체에서 상수 값을 읽어올 때
    ex) add r1, 3 : reg[r1] = reg[r1] + 3

  • direct : 고정된 주소의 메모리를 접근할 때
    ex) add r1, (1000) : reg[r1] = reg[r1] + mem[1000]

  • register indirect : 레지스터에 있는 주소의 메모리를 접근할 때
    ex) add r1, (r2) : reg[r1] = reg[r1] + mem[reg[r2]]

  • displacement : 레지스터에 있는 주소에 일정 거리를 더한 주소의 메모리를 접근할 때
    ex) add r1, 4(r2) : reg[r1] = reg[r1] + mem[reg[r2] + 4]

  • index : 레지스터에 있는 주소에 다른 레지스터 값에 해당하는 거리를 더한 주소의 메모리를 접근할 때
    ex) add r1, (r2+r3) : reg[r1] = reg[r1] + mem[reg[r2] + reg[r3]]


CISC와 RISC

CISC

  • Complex Instruction Set Computer

  • micro processor에게 명령을 내리는데 필요한 모든 명령어 셋을 갖추고 있는 processor이다. 따라서 복잡하고 기능이 많은 명령어로 구성되어있다.

  • 과거에는 컴퓨터 메모리 용량이 크지 않아서 sw 프로그램의 용량을 줄이기 위해 하나의 명령어로 여러 작업을 수행하도록 했기 때문에 CISC를 많이 사용하였다.

  • [장점] 복합적이고 기능이 많기 때문에 하위 호환성이 좋다. 따라서 호환성이 절대적으로 필요한 PC 환경에서는 CISC를 사용하는 것이 좋다.

  • [단점] 하지만 트랜지스터 집적에 있어서 효율성이 떨어지기 때문에 성능 향상을 방해하는 요인이 될 수 있으며, 전력 소모가 크고, 속도가 느리고, 가격이 비싸다는 등의 단점이 있다.

  • [용도] 다양한 명령어들을 포함하고 있어 일반적으로 우리가 사용하는 범용 컴퓨터(general-purpose computer)의 CPU로 많이 사용된다.

RISC

  • Reduced Instruction Set Computer

  • CISC 내부에 갖추어진 모든 명령어들 중 불과 20%에 해당하는 명령어들만이 전체 80% 이상의 일을 처리한다. 따라서 CISC와 같이 필요한 모든 명령어 셋을 갖고 있는 것은 비효율적일 수 있다. 이를 극복하기 위해 등장한 것이 RISC이다.

  • [장점] RISC는 적은 수의 명령어들(사용 빈도가 높은 20%의 명령어들)로 구성된 processor이다. 따라서 CISC보다 더 빠른 속도로 동작할 수 있으며, 단순하고, 전력소모가 적고, 가격도 저렴하다.

  • [단점] 하지만 하드웨어가 간단한 대신 소프트웨어가 크고 복잡해졌으며, 하위 호환성이 부족하다는 단점이 있다.

  • [용도] RISC 구조는 파이프라인 중첩이 가능해서 같은 수의 명령어에 대해 적은 clock으로 처리가 가능하며 발열과 전력 소모도 줄일 수 있다. 따라서 임베디드 프로세서에서는 RISC 구조를 많이 사용한다. (MIPS, ARM)


[References]

profile
내가 보려고 정리하는 공부 블로그

1개의 댓글

comment-user-thumbnail
2022년 12월 19일

안녕하세요.
"어셈블러(high-level language → assembly language)와 컴파일러(assembly languabe → machine language)"
이 부분에서 어셈블러와 컴파일러가 반대로 쓰였습니다.

답글 달기