[혼공컴운] WIL_#2

Oigu·2024년 1월 10일
0
post-thumbnail

1주차 우수혼공족 ㅋ ㅎㅋㅎ
족장님 나이쓰 고맙습니다 😏😏😏

  • "아아메로 가볍게 시작하겠습니다" ➡️ 나를 설레게 하는 포인~ㅌ
    ummena

이제 공부하자


04 CPU의 작동 원리


ALU와 제어장치

✔️ ALU

  • 레지스터에게 피연산자 받고 제어장치에게는 제어 신호를 받음
  • 얘는 연산한 결과랑 플래그를 내보냄
    * 플래그는 1주차에서 공부한 것처럼 ALU가 연산 결과의 추가 정보에 대해 보내는 것!

✔️ 제어장치

  • 얘 일단 좀 일을 많이 받네,,
  1. 클럭 신호 받아들임
  2. 해석해야 할 명령어 받아들임
  3. 플래그 레지스터 속 플래그 값 받아들임
  4. 시스템 버스 중 제어 버스로 전달된 제어 신호 받아들임

레지스터

✔️ 레지스터 종류

정리하는 김에 공부하고 있는 html/css를 사용해서 표를 만들어봤닷 ㅋ ㅎ ㅋ ㅎ
register


✔️ 특정 레지스터를 이용한 주소 지정 방식

  • 스택 주소 지정 방식
  • 변위 주소 지정 방식
    • 상대 주소 지정 방식
    • 베이스 레지스터 주소 지정 방식


명령어 사이클과 인터럽트

✔️ 하드웨어 인터럽트 처리 순서

  1. 입출력장치가 CPU에 인터럽트 요청 신호 보냄
  2. CPU 인터럽트 요청 확인하고 인터럽트 플래그로 수용 가능 여부 확인
  3. 가능하면 지금까지의 작업 백업
  4. CPU는 인터럽트 벡터인터럽트 서비스 루틴 실행
  5. 인터럽트 서비스 루틴 끝나면 아까 4번에서 백업한 작업 복구해 실행 재개

키워드

  • 명령어 사이클: 하나의 명령어가 처리되는 주기
  • 인터럽트: CPU의 정상적인 작업을 방해하는 신호
    • 동기 인터럽트(예외)
    • 비동기(하드웨어) 인터럽트
  • 인터럽트 서비스 루틴: 인터럽트를 처리하기 위한 프로그램 = 인터럽트 핸들러

클럭과 명령어 사이클이 헷갈린다면~?~?~?~?~?

클럭은 전체 시스템의 시간을 제어하고,
명령어 사이클은 각 명령어의 실행 단계를 관리

💡 클럭이 주기적으로 발생하면서 명령어 사이클이 진행



05 CPU 성능 향상 기법


빠른 CPU를 위한 설계 기법

1. 클럭 속도 높이기

  • 헤르츠(Hz) 단위
  • 클럭은 컴퓨터의 시간 단위인데 컴퓨터의 모든 부품이 클럭 신호에 맞춰 작동
  • 하나의 명령어가 여러 클럭에 걸쳐 실행될 수 있음

2. CPU의 코어 수 늘리기 * 멀티코어

  • 멀티코어 프로세서:CPU 내에 명령어를 처리하는 일꾼(코어)이 여러 명 있는 것과 같은 의미!

3. CPU의 스레드 수 늘리기 * 멀티스레드

  • 멀티스레드 프로세서: 하나의 코어로 여러 명령어를 "동시에" 처리함!


명령어 병렬 처리 기법

명령어 파이프라인

  • 인출 ➡️ 해석 ➡️ 실행 ➡️ 결과 저장

슈퍼스칼라

  • 여러 개의 명령어 파이프

비순차적 명령어 처리

  • 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 기법


CISC와 RISC

✔️ 명령어 집합

  • CPU가 이해할 수 있는 명령어들의 모음

✔️ CISC

  • Complex Instruction Set Computer
  • 복잡하고 다양한 명령어들을 활용하는 CPU 설계 방식
  • x86, x86-64 ➡️ 대표적인 CISC 기반의 ISA
  • 가변 길이 명령어

장단점

  • 적은 수의 명령으로 메모리 절약
  • 명령어의 규격화가 어려움 ➡️ 파이프라이닝이 어려움, 대다수의 복잡한 명령어는 사용 빈도가 낮음

✔️ RISC

  • Reduced Instruction Set Computer
  • CISC에 비해 명령어의 종류 적지만, 명령을 많이 함
  • 1클럭 내외 명령어 지향
  • 고정 길이 명령어
  • 명령어 파이프라이닝에 최적화
  • 메모리 접근을 단순화, 최소화하는 대신 레지스터를 활용



🚶🏻 기본 미션


p.125

2. 설명에 맞는 레지스터를 보기에서 찾아 빈칸을 채워 보세요.

프로그램 카운터, 명령어 레지스터, 플래그 레지스터, 범용 레지스터

  1. 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터
  2. 메모리에서 가져올 명령어의 주소를 저장하는 레지스터
  3. 데이터와 주소를 모두 저장할 수 있는 레지스터
  4. 해석할 명령어를 저장하는 레지스터

1. 플래그 레지스터
2. 프로그램 카운터
3. 범용 레지스터
4. 명령어 레지스터

레지스터 의미가 조금씩 달라서 헷갈리니 역할 구분 정도는 하자 🪶


p.155

4. 다음 그림은 멀티코어 CPU를 간략하게 도식화한 그림. 빈칸에 알맞은 용어?
코어

✔️ 코어



🏃🏻 선택 미션


코어와 스레드, 멀티 코어와 멀티 스레드 개념 정리

  • 코어: CPU 내에서 명령어를 실행하는 부품
  • 멀티코어: 여러 개의 코어를 포함하는 CPU
  • 스레드: 실행 흐름의 단위
    • 하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위
    • 소프트웨어적 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위
  • 멀티스레드: 하나의 코어로 여러 개의 명령어를 동시에 시행할 수 있는 CPU


부담없이 읽으려고 키워드 중심으로 정리 중!

외우려고 부담갖지 말고 키워드를 봤을 때 어떤 역할을 하는지 정도는 알 수 있게 익히자 ~ ! ! 😀😀😀😀

0개의 댓글