본문 바로가기

혼공- 컴퓨터구조, 운영체제

[혼공컴운] 2주차_CPU의 작동원리/ CPU 성능 향상 기법

목차

    -


     

    2주차 범위

    Chapter 04: CPU의 작동원리
    Chapter 05: CPU 성능 향상 기법

     

    슬슬 인터럽트나 복잡한 주소 지정 방식이 나와서 어렵네요...


    학습 내용 정리

    Chapter 04: CPU의 작동원리

     

    ALU (산술논리연산장치)

    ALU는 제어 신호와 피연산자를 받아들인다.

    ALU는 결과값 및 플래그를 내보낸다.

     

    플래그의 종류

    • 부호 플래그
    • 제로 플래그
    • 캐리 플래그
    • 오버플로우 플래그
    • 인터럽트 플래그
    • 슈퍼바이저 플래그

    플래그는 플래그 레지스터에 저장된다.

     

     제어장치

    제어 장치: 제어 신호를 내보내고 명령어를 해석하는 부품

    제어 신호: 컴퓨터 부품을 관리, 작동시키기 위한 전기신호

     

    제어장치의 역할

    • 클럭 신호 받음
    • 명령어를 받음
    • 플래그 레지스터속 플래그값 받음
    • 제어 버스로 받아들인 제어 신호를 받음

    레지스터

    • 프로그램 카운터: 메모리에서 읽어들일 명령어 주소  저장
    • 명령어 레지스터: 메모리에서 읽은 명령어를 저장
    • 메모리 주소 레지스터: 메모리의 주소 저장
    • 메모리 버퍼 레지스터: 메모리와 주고받을 값을 저장
    • 범용 레지스터: 데이터와 주소를 모두 저장 가능
    • 플래그 레지스터: 연산결과, CPU상태의 부가적인 정보 저장

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

    1. 스택 주소 지정 방식: 스택과 스택 포인터를 활용한 주소 지정 방식
    2.  변위 주소 지정 방식

    스택은 메모리 내부 스택 영역 에 위치함

     

    변위 지정 방식의 종류

    • 상대 주소 지정 방식: 오퍼랜드와 프로그램 카운터의 값을 더해 유효 주소를 얻음
    • 베이스 레지스터 주소 지정 방식: 오퍼랜드와 베이스 레지스터의 값을 더해 유효 주소를 얻음

    베이스 레지스터에 저장된 주소가 기준주소가 됨

     

    명령어 사이클의 종류

    • 인출 사이클: 명령어를 CPU로 가져옴
    • 실행 사이클: 명령어를 실행
    • 인터럽트 사이클: 인터럽트를 실행
    • 간접 사이클: 명령어를 가져온 후 메모리 접근이 더 필요한 경우

    인터럽트

    인터럽트: CPU의 정상적인 작업을 방해하는 신호

     

    인터럽트의 종류

    • 동기 인터럽트(예외)
    • 비동기 인터럽트(하드웨어 인터럽트): 주로 입출력장치에 의해 발생

    참고) 동기와 비동기

    동기식은 요청후 응답까지 대기, 비동기는 요청 후 응답을 대기하지 않는 방식입니다.

    자세한 내용은 아래 내용 참고

    https://wikidocs.net/227912

     

    3.1 동기 vs. 비동기 프로그래밍

    지금까지 다트 언어를 배우면서 작성한 코드는 모두 동기 방식을 사용했습니다. 함수를 실행하면 다음 코드가 실행되기 전에 해당 함수의 결괏값이 먼저 반환됩니다. 하지만 비동기 프로…

    wikidocs.net

     

     

    하드웨어 인터럽트 처리 과정

    순번 내용
    1 입출력 장치가 CPU에 인터럽트 요청 신호를 보냄
    2 CPU는 실행사이클 종료 후 인터럽트 여부 확인
    3 인터럽트 플래그 확인
    4 인터럽트 플래그 확인 -> 인터럽트를 받을 수 있는 경우 작업을 백업
    5 인터럽트 벡터를 참조, 인터럽트 서비스 루틴 실행
    6 인터럽트 서비스 루틴 완료 후 백업해놓은 작업을 복구 후 실행

     

    인터럽트 서비스 루틴(인터럽트 핸들러): 인터럽트를 처리하기 위한 프로그램

     

    예외 종류

    • 폴트
    • 트랩
    • 중단
    • 소프트웨어 인터럽트

    Chapter 05: CPU 성능 향상 기법

    클럭: CPU에서 연산을 조정하는 타이밍 신호

    오버클럭: 최대 클럭 속도를 강제로 더 올리는 기법

     

    코어: CPU내에서 명령어를 실행하는 부품

    멀티코어: 코어를 여러개 포함하는 CPU

     

    스레드: 실행 흐름의 단위

     

    멀티 스레드 프로세서: 여러개의 하드웨어적 스레드를 지원하는 CPU

     

    명령어 병렬 처리 기법

    • 명령어 파이프라이닝: 동시에 여러개의 명령어를 겹처 실행
    • 슈퍼스칼라: 여러개의 파이프라인 사용
    • 비순차적 명령어 처리: 파이프라인 중단 방지를 위해 명령어를 비순차적으로 처리

    ISA: 명령어 집합 구조

     

    RISC 와 CISC

    구분 RISC CISC
    명령어 적음(고정) 많음(가변)
    레지스터수 많음 적음
    처리속도 빠름 느림
    프로그램 길이 길음 짧음
    주소지정방식 단순하고 제한적 복잡하고 다양

    과제

    기본 과제 : p.125 2번 문제
                     p.155 4번 문제

     

    2. 설명에 맞는 레지스터를 보기에서 찾아 빈칸을 채워 보세요.
      - 프로그램 카운터, 명령어 레지스터, 플래그 레지스터, 범용 레지스터

     

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

    답: (1): 플래그 레지스터

         (2): 프로그램 카운터

         (3): 범용 레지스터

         (4): 명령어 레지스터

     

    멀티코어 CPU를 도식화한 그림이다. 그림에 알맞은 용어를 쓰시오

     

    [p.155 그림 참조]

    정답: 코어


    심화 과제: 코어와 스레드, 멀티 코어와 멀티 스레드의 개념 정리

     

    스레드: 프로세스 내에서 실행되는 흐름의 단위

    멀티 스레드: 하나의 프로세스 내에서 둘 이상의 스레드사 동시에 작업을 수행

    코어: 명령을 실행하는 CPU 내의 단일 처리 장치

    멀티 코어: 여러개의 독립 코어를 단일 집적회로로 이루어진 하나의 패키지로 통합한 CPU

     

    요즘 나오는 pc들은 다 멀티코어라고 보시면 됩니다. 

    심심하시면 한번 확인해보죠

     

    ctrl+ alt +del 혹은 직접 작업관리자 여신 뒤에

    성능 탭을 클릭합니다

    그럼 우측 하단에 저렇게 표시가 되는데

    저기서 코어 수가 표시됩니다

    제 pc는 16개네요