Henu
개발냥발
Henu
전체 방문자
오늘
어제
  • 분류 전체보기 (411)
    • DevOps (52)
      • Kubernetes (19)
      • Docker (14)
      • AWS (3)
      • Nginx (4)
      • Linux (4)
      • ArgoCD (1)
      • CN (2)
      • NATS (0)
      • Git (5)
    • Back-End (30)
      • Django (18)
      • Spring (5)
      • JPA (1)
      • MSA (5)
    • CS (87)
      • SystemSoftware (20)
      • OS (25)
      • Computer Architecture (16)
      • Network (23)
      • Database (2)
    • Lang (21)
      • Java (9)
      • Python (4)
      • C# (8)
    • Life (12)
    • 블록체인 (2)
    • Algorithm (204)
      • BOJ (160)
      • 프로그래머스 (19)
      • LeetCode (4)
      • SWEA (1)
      • 알고리즘 문제 해결 전략 (8)
      • DS, algorithms (7)
      • Checkio (5)
    • IT (2)

블로그 메뉴

  • GitHub
  • 글쓰기
  • 관리자

공지사항

  • Free!

인기 글

태그

  • 다이나믹 프로그래밍
  • BFS
  • docker
  • 프로그래머스
  • DFS
  • boj
  • Network
  • Kubernetes
  • django
  • 백트래킹

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Henu

개발냥발

[컴퓨터 구조] RISC (feat. CISC)
CS/Computer Architecture

[컴퓨터 구조] RISC (feat. CISC)

2021. 6. 3. 19:37
CICS구조를 비교 모델로 삼아 RISC구조에 대해서 알아보자.

 

RISC(Reduced Instruction Set Computer) - 명령어가 축약된 컴퓨터

  • 명령어 set이 매우 짧고 심플하다
  • CISC에 비해서 레지스터의 수가 매우 많다 (CISC : 8~16, RISC : 32~520)
  • 소프트웨어적인 기술의 중요성이 크다 (컴파일러의 역할 증가(레지스터 최적화))
  • 명령어의 개수 : 60~100 (CISC : 200~300)
  • 명령어의 크기 : 4 (CISC : 1 ~ 60)
  • addressing mode : 1 (레지스터를 사용) (CISC : 4 ~ 22)

 

CISC(Complex Instruction Set Computer)가 나오게 된 이유, 장점

과거에는 소프트웨어보다 하드웨어 기술이 상대적으로 더 발달했었기 때문에 부족한 소프트웨어 기술을 하드웨어로 보완하고, 하드웨어를 제어하는 별도의 Instruction Set을 추가로 만들면서 CISC가 나오게 되었다.

  • 컴파일러 작성이 쉬워짐
  • 실행의 효율성 증가
  • 상위 레벨 언어(HLL)를 보조해주는 기능도 많아짐
  • 메모리를 적게 사용함

 

CISC를 보완한 RISC의 등장

  • HLL을 보완하기 위해서 복잡한 하드웨어를 만드는 것은 비효율적임을 알아냄
  • assignment, procedure call처럼 많이 사용되고 시간이 오래 걸리는 부분을 최적화시킬 수 있다면 효율적임을 알아냄

 

RISC의 특성, 장점

  • Cycle당 하나의 명령을 가진다
  • 매우 많아진 레지스터의 수 (메모리 접근이 줄어들어 속도가 빨라짐), 레지스터간의 동작이 많다
  • 파이프라인 기법 사용
  • addressing모드와 명령어가 매우 단순함
하지만 컴파일러는 복잡해진다

 

RISC의 중요한 부분인 레지스터에 대해서 더 알아보자

매개변수(%rsi, %rdi), 지역변수(%rcx, %rdx), return 값(%rax), 함수 스택의 위치(%rsp)를 레지스터에 할당

 

Register Window 개념 

 

Window A는 함수의 Call/Return을 통해서 return 레지스터를 Window B의 Parameter로 넘겨주고 있다.

 

위 과정은 주로 원을 이루고 있고, 이를 Circular Buffer라고 한다.

 

A -> B -> C -> D까지 window가 이동했고, 다음 window인 E의 Parameter Register에 D의 return을 넘겨주려고 할 때, 만약 E의 pointer가 A window가 저장된 공간인 Saved window pointer 를 침범하게 된다면 interrupt가 발생하여 A window를 메모리로 save 하고 Buffer에서 내보낸다. 그리고 Saved window pointer는 B window의 시작점을 가리키게 될 것이고 E window를 Buffer에 안전하게 넣을 수 있을 것이다.

'CS > Computer Architecture' 카테고리의 다른 글

[컴퓨터 구조] 컴퓨터 시스템 개요  (2) 2021.11.24
[컴퓨터 구조] Addressing Mode  (0) 2021.06.12
[컴퓨터 구조] Instruction Set  (0) 2021.06.12
[컴퓨터 구조] Control Unit  (0) 2021.06.06
[컴퓨터 구조] ILP & Superscalar  (0) 2021.06.04
    'CS/Computer Architecture' 카테고리의 다른 글
    • [컴퓨터 구조] Addressing Mode
    • [컴퓨터 구조] Instruction Set
    • [컴퓨터 구조] Control Unit
    • [컴퓨터 구조] ILP & Superscalar

    티스토리툴바