[CA] ISA - CISC와 RISC

짱수·2022년 12월 24일
0

CS

목록 보기
3/4

ISA

ISA란, 컴퓨터에서 실행 될 수 있는 명령어의 집합이다.
여기서의 명령어란, 컴퓨터의 state (Register와 Memory의 값)을 변경시키는 역할을 하는 것이다. 즉, 하나의 명령어가 수행되고 나면 각각의 operation에 따라 컴퓨터의 메모리와 레지스터 중 적어도 하나가 변화한다.

ISA는 성능 개선을 위한 방법론에 따라 RISC와 CISC 두가지 종류로 구분된다.

CISC - intel, AMD

CISC의 핵심 목표는 소프트웨어에 의존하지 않는 ISA 이다.
즉, 필요한 모든 명령어를 전부 하드웨어로 설계하여 만들어 둔다.
그렇기 때문에 다음의 단점을 가진다.

  • CPU 디자인이 복잡하다.
  • 명령어 개수가 많다.
  • 각 명령어의 길이가 다르다.

RISC - ARM, RISC-V

RISC의 핵심 목표는 소프트웨어로 더 간단하게 구현할 수 있는 ISA 이다.
즉, RISC의 ISA는 간단한 명령어들의 집합을 만들어 둔 뒤, 복잡한 명령어들은 간단한 명령어들을 활용하여 구현한다.
때문에 전력 소모가 적고, (명령어들이 간단하기 떄문), Instruction set이 작다.

CISC VS RISC

CISC와 RISC의 차이점을 자세히 알아보자.

Cycle per instruction

CISC : Instruction can take several clock cycle
-> CISC는 모든 instruction들이 ISA에 구현되어 있기 때문에, 복잡한 instruction들을 가지고 있다. 때문에 몇 cycle이 소요가 된다.
RISC : Single cycle instruction
-> RISC는 간단하고 필수적은 몇몇 instruction을 구현한 뒤, 복잡한 instruction들은 간단하게 구현 된 instruction을 조합하여 구현한다. 때문에 ISA에 구현되어 있는 모든 instruction들은 single cycle 내에서 실행이 되는 간단한 instruction이다.

Instructions per program

CISC : Smaller
-> CISC는 필요한 모든 instruction들이 구현이 되어있기 때문에, high level language 프로그램이 instruction들로 변환되는 과정에서 프로그램을 구성하는 instruction들의 수가 많아지지 않는다.
RISC : Larger
-> RISC의 복잡한 instruction들은 간단한 여러개의 instruction들을 조합하여 사용한다. 때문에, 필요한 모든 instruction을 구현해 사용하는 CISC에 비해 프로그램을 구성하는 instruction들의 수가 많아진다.

Emphasize for performance

CISC : IC
-> CISC는 각 프로그램을 구성하는 instruction의 수가 RISC에 비해 상대적으로 적으므로 IC에서 강점을 가진다.
RISC : CPI
-> RISC에서 사용되는 instruction들은 각각의 instruction이 실행되는데 필요한 clock cycle이 적어 CPI에서 강점을 가진다.

Code size

CISC : Smaller -> easy to optimize compiler
-> IC가 적기 때문에 code size는 적고, 때문에 컴파일을 최적화하기 편하다.
RISC : Larger -> difficult to optimize compiler
-> RISC는 프로그램의 IC가 크기 때문에 code size가 커진다. 때문에 컴파일을 최적화 시키기 어렵다.

Design

CISC : Hardware-centric
-> CISC는 필요한 모든 instruction들을 하드웨어로 구현하기 때문에 하드웨어 위주의 디자인을 한다.
RISC : Software-centric
-> RISC의 복잡한 instructon들은 쉽게 구현되어 있는 instruction을 조합하여 만들기 때문에 소프트웨어 위주의 디자인을 한다.

Required memory

CISC : More efficient use of RAM
-> CISC는 프로그램의 명령어 수가 적고, 때문에 코드를 가지고 오기 위해 메모리에 접근을 하는 횟수가 더 적다.
RISC : Heavy use of RAM
-> RISC는 명령어의 수가 많기 때문에 더 많은 메모리로의 접근을 필요로 한다.

Implementation complexity

CISC : High (more transistors) -> expensive
-> CISC의 ISA를 구현하기 위해선 칩이 훨씬 복잡하게 구현되어야 한다. 때문에 구현이 힘들고, 비싸다.
RISC : Low -> Cheap
-> RISC의 ISA를 구현하기 위해선 칩의 구현이 간단하고 쉽다.

# of registers

CISC : Smaller
-> CISC는 instruction 구현이 훨씬 복잡하기 때문에 칩에 많은 수의 register를 넣을 만한 공간이 남지 않는다.
RISC : Larger
-> 반대로 RISC는 instruction 구현이 비교적 간단하기 때문에 많은 수의 register를 사용할 수 있는 공간이 확보가 된다.

Instruction

CISC : Larger number of complex and variable length instructions ( > 1000 instructions, 1 to 15 - byte wide each )
-> CISC는 instruction의 길이가 제각각이며, 그 수 역시 많다.
RISC : Smaller number of simple and fixed length instructions (~200 instructions, 32-bit wide each)
-> RISC는 32비트의 고정된 길이의 명령어를 가지며, 그 수는 200여개로 상대적으로 적다.

Pipelining

CISC : Bad for pipelining (less pipelined)
-> CISC는 명령어마다의 길이가 제각각이어서 pipeline을 하기에 불편하다.
RISC : Good for pipelining (high pipelined)
-> pipeline은 명령어의 구조와 size가 동일할 때 훨씬 활용하기 쉽고, 때문에 RISC가 Pipeline에 유리하다.

Power consumtion

CISC : High (desktop of server)
-> CISC의 하드웨어 구조가 복잡하기 때문에, 전력소모가 심하다..
RISC : Low (embedded systems)
-> RISC는 상대적으로 하드웨어 구조가 간단하여 전력소모가 적고, 때문에 모바일, 임베디드 시스템에서는 RISC가 유리하다.

profile
Zangsu

0개의 댓글