RISC

IT위키

Reduced Instruction Set Computer; 축소 명령어 집합 컴퓨터; 단순 명령어 집합 컴퓨터

CPU 명령어를 짧게 구성하여 속도 개선을 향상시키는 프로세서 설계 방식

개요[편집 | 원본 편집]

정보처리기사 수준에선 아래 개요 내용만 암기해도 충분하므로, 더 자세하게 알고 싶은 경우 아래 내용 참고

  • 간단한 명령어의 집합으로 구성
  • 명령어들의 동작이 단순
  • 프로그램을 작성하는데 많은 명령어 사용
  • 모든 CISC명령은 RISC 명령 조합으로 만들어 낼 수 있다.
  • CISC명령어 하나 수행할 시간에 몇배의 명령을 실행 할 수 있다.
  • 호환성 부족
  • 명령어 하나당 하나의 연산만을 수행
  • 대표적으로 ARM Architecture

역사[편집 | 원본 편집]

  • IBM에서 1980년에 발표하고 MIPS를 창시한 컴퓨터과학자 데이비드 패터슨 교수등이 개념을 설계하고 RISC라고 명명
  • 다만 명령어 수를 줄이는 방식의 프로세서 설계는 기존에도 있어 왔으며[1], 데이비드 패터슨 교수가 이를 체계적으로 정리했다고 볼 수 있음

CISC의 문제와 RISC의 해결 방안[편집 | 원본 편집]

CISC의 문제[편집 | 원본 편집]

1980년대 지적된 CISC의 주요 문제

  • 명령어 길이가 가변 길이고 편차가 큼
    • 각 명령어들의 실행 사이클이 다음(ex. A 명령어는 1사이클, B 명령어는 3사이클)
    • 명령어를 인출할 때 언제가 명령어 종료 시점인지 알 수 없으며 다중 사이클이 소요되는 명령어를 그대로 파이프라인 처리를 할 경우 파이프라인 버블이 발생하여 처리효율 하락
  • 명령어 포맷 다양하고 복잡함
    • 명령어 해석기에서 특정 내용을 액세스하려고 할 경우 그 명령어에 대한 인출과 해석이 완전이 끝나야 가능
  • 명령어에 레지스터 대상 연산과 메모리를 대상 연산이 혼재
    • 메모리를 대상으로 한 연산의 경우 메모리 액세스 사이클의 손실이 정확히 얼마일지 알 수 없기 때문에 파이프라인의 정확한 운용이 어려워짐
  • 명령어의 구조가 어큐물레이터 구조를 유지
    • 명령어가 2개의 레지스터·메모리만을 액세스
    • ex) a+b의 연산을 c에 따로 저장하지 못하고 b의 내용에 덮어쓰면서 b의 내용을 재활용하지 못하는 한계
  • 레지스터의 기능이 일정하지 못하고 특수기능이 포함된 경우가 많아 컴파일러의 복잡성을 증대
  • 프로그램 코드와 데이터가 단일 캐시메모리 공간에 위치(폰노이만 구조)
    • 메모리 동작 특성과 데이터의 메모리 동작 특성이 크게 다르다는 사실을 반영하지 못하여 효율 저하
  • ROM 기반 마이크로코드 해석기의 매리트 저하
    • ROM 기반 마이크로코드 해석기는 유연성이 떨어지지만 속도가 상대적으로 빠르다는 장점
    • 그러나 RAM 기술이 비약적으로 발달하면서 ROM의 속도차가 줄어들고 ROM의 장점 퇴색

RISC 방식의 개선[편집 | 원본 편집]

  • 명령어 길이를 16bit 혹은 32bit로 일정하게 정리
    • 각 명령어들의 실행 사이클을 1사이클로 조정
    • 명령어 해석기는 무슨 명령어인지 별도로 판단할 필요 없이 16bit 혹은 32bit만큼 인출동작을 기계적으로 수행하면 되므로 명령어 해석기가 크게 단순화
    • 또한 1사이클에 1명령어가 정확하게 들어오는 것이 보장되면서 파이프라인 버블 발생 가능성이 감소
    • 마이크로프로세서보다 회로 디자인 비용이 크게 감소
  • 명령어 포맷을 규격화하여 명령어 해석기와 내부 컨트롤의 효율 증가
    • ex) 소스 레지스터와 타겟 레지스터를 나타내는 플래그를 명령어 상의 특정 비트에 위치시킴으로서 명령어 해석기에서 명령 해석이 완전히 끝나기도 전에 소스 레지스터와 타겟 레지스터를 찾아서 선제적으로 동작시키는 것이 가능
  • 메모리 대상 연산과 레지스터 대상 연산을 분리
    • 메모리를 대상으로 하는 load/store 연산과 레지스터를 대상으로 하는 mov 연산을 분리
    • 메모리 액세스 타이밍의 불확실성을 제거하고 파이프라인 효율 향상
    • ex) 필요한 값에 대한 load 동작을 메모리 레이턴시를 고려하여 몇 사이클 앞에서 선제적으로 실행하고 load 동작이 완료되자마자 연산을 수행하는 식으로 레이턴시를 감추는 방식을 사용 가능
  • 마이크로코드의 복잡한 연산기능은 컴파일러로 역할 이전
    • 마이크로코드가 제외되면서 명령어 해석기가 hard-wired 회로로 구성되어 동작속도 증가
  • 어큐뮬레이터 구조를 폐지
    • 한 개의 명령어는 2개의 소스 레지스터와 1개의 타겟 레지스터를 대상으로 동작
    • 예시) b=a+b에 종속된 구조에서 탈피하여 c=a+b 동작이 가능해짐
  • 레지스터는 기본적으로 일반목적레지스터(GPR)로 설계
  • 발전된 폰노이만 구조인 하버드 구조 채용

RISC의 단점[편집 | 원본 편집]

  • 단순화를 위해 코드밀도가 감소하여 같은 내용을 처리하는 데 더 많은 코드 용량이 필요
    • 항상 16bit 혹은 32bit를 차지하는 고정 길이 명령어는 상황에 따라 8~32bit를 오가는 CISC의 가변 길이 명령어에 비해 코드 밀도 면에서 원천적으로 불리
    • 메모리를 대상으로 하는 연산 명령어의 경우 CISC에서는 1개 명령어로 표현 가능하지만 반면 RISC에서는 load-execute-store로 3개의 명령어가 필요
    • 마이크로코드로 한 줄로 구현된 CISC 명령어를 여러개의 RISC 명령어로 변환 필요
    • 평균적으로 같은 역할을 수행하는 RISC의 코드 길이가CISC에 비해 2배로 길어짐
  • 메모리를 소스 혹은 타겟으로 쓸 수 없게 되면서 그 역할을 대체해야 하는 더 많은 레지스터가 필요하게 됨
  • 명령어 길이가 제약되면서 분기 명령의 점프 범위가 제약
    • CISC에서는 분기 명령의 점프 범위를 단순히 코드 길이를 늘리는 것으로 해결 가능
    • RISC의 고정길이 명령어에선 불가
  • 호환성 부족
    • 당시 CISC방식이던 x86이 대세이던 시절로, 기존 시스템과 호환되지 않는 새로운 프로세서는 치명적인 단점으로 작용
    • 당시 가장 인기있던 Microsoft Windows 구동 불가

RISC 프로세서[편집 | 원본 편집]

  • MIPS 계열 - 대부분의 SGI 컴퓨터, 플레이스테이션, 플레이스테이션 2, 닌텐도 64 등에 쓰임.
  • IBM 파워 계열 - 대부분의 IBM 슈퍼컴퓨터, 메인프레임에 쓰임.
  • 모토롤라와 IBM의 PowerPC 시리즈 - 이전의 애플 매킨토시 컴퓨터, 엑스박스 360, 닌텐도 Wii, 플레이스테이션 3 등에 쓰임.
  • 썬 사의 SPARC와 UltraSPARC의 후기 기종.
  • 휴렛 팩커드 사의 PA-RISC
  • DEC 알파
  • ARM 계열 - 최신 팜 파일럿 PDA 시리즈. 게임보이 어드밴스, 닌텐도DS과 같은 닌텐도사의 소형 게임기 하드웨어. 한국 게임파크사의 GP32 하드웨어, 스마트폰, 태블릿 PC.

참고 문헌[편집 | 원본 편집]

각주[편집 | 원본 편집]

  1. Fisher, Joseph A.; Faraboschi, Paolo; Young, Cliff (2005). 《Embedded Computing: A VLIW Approach to Architecture, Compilers and Tools》. 55쪽. ISBN 1558607668.