[혼공단 10기] 혼공컴운 2주차

chaewon·2023년 7월 16일
0

혼공컴운

목록 보기
2/3
post-thumbnail

Ch4. CPU의 작동 원리

04-1 ALU와 제어장치

  • ALU
    • 받아들이는 정보
      • 레지스터를 통해 피연산자를 받음
      • 제어장치를 통해 제어신호를 받음
        피연산자 + 제어신호 -> 다양한 연산 수행
    • 내보내는 정보
      • 플래그
        연산 결과에 대한 추가적인 상태 정보
        플래그 종류의미
        부호 플래그연산 결과의 부호
        제로 플래그연산 결과가 0인지 여부
        캐리 플래그올림수, 빌림수 발생 여부
        오버플로우 플래그오버플로우 발생 여부
        인터럽트 플래그인터럽트 가능 여부
        슈퍼바이저 플래그커널 모드, 사용자 모드
  • 제어장치

    1. 제어장치는 클럭 신호를 받아들인다.
    • 클럭
      컴퓨터 부품의 시간 단위
    1. 제어장치는 '해석해야 할 명령어'를 받아들인다.
    • 명령어 레지스터
      CPU가 해석해야 할 명령어가 저장되는 곳
    1. 제어장치는 플래그 레지스터 속 플래그 값을 받아들인다.
      플래그 값을 받아들여 제어 신호를 발생 시킴

    2. 제어장치는 제어 버스로 전달된 제어 신호를 받아들인다.
      제어 버스를 통해 외부로부터 전달 된 신호를 받기도 함

04-2 레지스터

  • 반드시 알아야 할 레지스터
    1. 프로그램 카운터
      메모리에서 가져올 명령어의 주소를 저장함
      명령어 포인터라고 부르기도 함
    2. 명령어 레지스터
      해석할 명령어를 저장함
    3. 메모리 주소 레지스터
      메모리의 주소를 저장함
    4. 메모리 버퍼 레지스터
      메모리와 주고받을 값을 저장함
    5. 플래그 레지스터
      연산 결과 또는 부가적 정보를 저장함
    6. 범용 레지스터
      다양하고 자유롭게 사용할 수 있음
  • 스택 주소 지정 방식
    스택과 스택 포인터를 이용한 주소 지정 방식
    • 스택 포인터
      스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터
    • 스택 영역
      스택처럼 사용하기로 약속된 영역
  • 변위 주소 지정 방식
    오퍼랜드 필드의 값과 특정 레지스터의 값을 더해 유효 주소를 얻어내는 방식
    • 상대 주소 지정 방식
      오퍼랜드 + 카운터 값 = 유효 주소
    • 베이스 레지스터 주소 지정 방식
      오퍼랜드 + 베이스 레지스터 값 = 유효주소

기본 미션: p. 125의 확인 문제 2번 풀고 인증하기

  1. 플래그 레지스터: 연산 결과 또는 부가적 정보를 저장하는 레지스터
  2. 프로그램 카운터: 메모리에서 가져올 명령어의 주소를 저장하는 레지스터
  3. 범용 레지스터: 데이터와 주소를 모두 저장할 수 있는 레지스터
  4. 명령어 레지스터: 해석할 명령어를 저장하는 레지스터

04-3 명령어 사이클과 인터럽트

  • 명령어 사이클
    하나의 명령어를 처리하는 정형화된 흐름
    프로그램 속 각각의 명령어들이 반복하며 실행되는 주기
    • 인출 사이클
      메모리에 있는 명령어를 CPU로 가지고 오는 과정
    • 실행 사이클
      CPU로 가져온 명령어를 실행하는 단계
    • 간접 사이클
      명령어를 실행하기 위해 한 번 더 메모리에 접근하는 단계
  • 인터럽트
    정해진 명령어의 흐름이 끊어지는 상황
    CPU의 작업을 방해하는 신호
    • 동기 인터럽트(= 예외)
      CPU에 의해 발생하는 인터럽트
      • 폴트
        예외를 처리한 직후 예외가 발생한 명령어부터 실행 재개
      • 트랩
        예외가 발생한 명령어 다음부터 실행 재개
      • 중단
        프로그램을 강제로 중단
      • 소프트웨어 인터럽트
        시스템 호출이 발생
    • 비동기 인터럽트(= 하드웨어 인터럽트)
      입출력장치에 의해 발생하는 인터럽트
      • 처리 순서
        1. 입출력장치->CPU: 인터럽트 요청 신호 전달
        2. CPU: 인터럽트 여부와 이를 받아들일 수 있는지 여부 확인
        3. CPU: 인터럽트를 받아들일 수 있다면 작업을 백업함
        4. CPU: 인터럽트 벡터를 참조해 인터럽트 서비스 루틴 실행
      • 인터럽트 요청 신호
        인터럽트 하기 전 CPU에게 보내는 신호
      • 인터럽트 플래그
        인터럽트를 받을지, 말지 결정하는 플래그
      • 인터럽트 서비스 루틴(= 인터럽트 핸들러)
        인터럽트를 처리하기 위한 프로그램
      • 인터럽트 벡터
        인터럽트 서비스 루틴을 식별하기 위한 정보

Ch5. CPU 성능 향상 기법

05-1 빠른 CPU를 위한 설계 기법

  • 쿨럭
    • 쿨럭 속도
      1초에 쿨럭이 몇번 반복 되는지

선택미션: Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티 스레드의 개념을 정리하기

  • 코어와 멀티 코어
    • 코어
      명령어를 실행하는 부품
    • 멀티코어(= 멀티코어 프로세서)
      코어를 여러 개 포함하고 있는 CPU
  • 스레드와 멀티 스레드
    • 스레드
      실행의 흐름 단위
      • 하드웨어적 스레드
        하나의 코어가 동시에 처리하는 명령어 단위
        • 멀티스레드 프로세서(= 멀티스레드 CPU)
          하나의 코어로 여러 명령어를 동시에 처리하는 CPU
        • 하이퍼스레딩
          인텔의 멀티스레드 기술
      • 소프트웨어적 스레드
        하나의 프로그램에서 독립적으로 실행되는 단위

기본미션: p. 155의 확인 문제 4번 풀고 인증하기

멀티코어 CPU를 도식화한 그림에서의 빈칸: 코어

05-2 명령어 병렬 처리 기법

  • 명령어 파이프라인
    1. 명령어 인출
    2. 명령어 해석
    3. 명령어 실행
    4. 결과 저장
    • 명령어 파이프라이닝
      명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
    • 파이프라인 위험
      • 데이터 위험
        명령어간 데이터 의존성에 의해 발생
      • 제어 위험
        프로그램 카운터의 갑작스런 변화에 의해 발생
        • 분기 예측
          프로그램이 어디로 분기할지 미리 예측하고 인출하는 기술
          -구조적 위험(= 자원 위험)
          명령어들을 겹쳐 실행하는 중 같은 부품을 사용하려고 할 때 발생
  • 슈퍼 스칼라
    여러 개의 명령어 파이프라인을 포함한 구조
    • 슈퍼스칼라 프로세서(= 슈퍼스칼라 CPU)
      슈퍼스칼라 구조로 명령어 처리가 가능한 CPU
  • 비순차적 명령어 처리(OoOE)
    명령어들을 순차적으로 실행하지 않는 기법
    순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 멈추는것을 방지하는 기법

05-3 CISC와 RISC

  • 명령어 집합(ISA)
    CPU가 이해할 수 있는 명령어들의 모음
  • CISC
    복잡한 명령어 집합을 활용하는 컴퓨터
    • 적은 수의 명령으로 동작 가능
    • 명령어의 규격화가 어려움
    • 사용 빈도가 낮은 명령어가 많음
  • RISC
    단순한 명령어 집합을 활용하는 컴퓨터
    • 많은 수의 명령으로 동작함
    • 명령어 파이프라이닝이 쉬움

으앙 주중엔 발표준비 하느라 하루만에 몰아서 하려니까 힘드네요...
다음주부턴 방학이니까 더 열심히 해보겠습니당

0개의 댓글