카테고리 없음

[혼공컴운 2주차] Chapter 4 ~ 5

Ejxnzn 2024. 1. 10. 21:29

 

ALU와 제어장치

 

  • ALU : 레지스터를 통해 피연산자를 받아들임

 

  • 제어장치 : 수행할 연산을 알려주는 제어 신호를 받아들임

 

  • CPU가 메모리에 접근하는 속도가 CPU가 레지스터에 접근하는 속도보다 느리다 

      -> CPU 안에 레지스터가 있기 때문에 레지스터에 접근하는 속도가 메모리에 접근하는 속도보다 빠르다

 

 

ALU가 내보내는 대표적인 플래그

 

  • 부호 플래그 : 연산한 결과의 부호를 나타냄

 

  • 제로 플래그 : 연산 결과가 0인지 여부를 나타냄

 

  • 캐리 플래그 : 연산 결과 올림수나 빌림수가 발생했는지 나타냄

 

  • 오버플로우 플래그 : 오버플로우가 발생했는지 나타냄

 

  • 인터럽트 플래그 : 인터럽트가 가능한지를 나타냄

 

  • 슈퍼바이저 플래그 : 커널 모드로 실행 중인지 사용자 모드로 실행 중인지 나타냄

 

반드시 알아야 할 레지스터

 

  • 프로그램 카운터 : 메모리에서 읽어 들일 명령어의 주소를 저장

 

  • 명령어 레지스터 : 메모리에서 읽어 들인 명령어를 저장하는 레지스터

 

  • 메모리 주소 레지스터 : 메모리의 주소를 저장하는 레지스터

 

  • 메모리 버퍼 레지스터 : 메모리와 주고받을 값을 저장하는 레지스터

 

  • 플래그 레지스터 : 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장

 

  • 범용 레지스터 : 다양하고 일반적인 상황에서 자유롭게 사용 -> 데이터와 주소를 모두 저장할 수 있음

 

  • 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터

 

  • 베이스 레지스터 : 기준 주소 (해당 프로그램의 시작주소)

 

 

 

 

명령어 사이클과 인터럽트

 

  • 명령어 사이클 : CPU가 하나의 명령어를 처리하는 과정(인출 -> 실행 사이클)을 반복하여 실행하는 주기

 

  • 인터럽트 : CPU의 작업을 방해하는 신호
    • 동기 인터럽트 : CPU가 예기치 못한 상황에 접했을 때 발생 
      1. 폴트 : 예외를 처리한 직후 예외가 발생한 명령어부터 실행을 재개하는 예외
      2. 트랩 : 예외를 처리한 직후 예외가 발생한 명령어의 다음 명령어부터 실행을 재개하는 예외
      3. 중단 : CPU가 실행 중인 프로그램을 강제로 중단시킬 수밖에 없는 심각한 오류를 발견했을 때 발생
      4. 소프트웨어 인터럽트 : 시스텀 호출이 발생할때 나타남
    • 비동기 인터럽트 (하드웨어 인터럽트) : 입출력 장치에 의해 발생

 

 

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

 

  • 입출력 장치는 CPU에 인터럽트 요청 신호를 보냄           

      -> 인터럽트 요청 신호 : CPU의 작업을 방해하는 인터럽트에 대한 요청

 

 

  • CPU는 실행 사이클이 끝나고 명령어 인출 전 인터럽트 여부 확인

 

 

  • CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부 확인

      -> 인터럽트 플래그 : 인터럽트 요청 신호를 받아들일지 무시할지 결정하는 비트

 

 

  • 인터럽트를 받아들일 수 있다면 CPU는 지금까지 작업을 백업

 

 

  • CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행

      -> 인터럽트 벡터 : 인터럽트 서비스 루틴의 시작주소를 포함하는 인터럽트 서비스 루틴의 식별 정보

 

 

 

  • 인터럽트 서비스 루틴 실행이 끝나면 이전에 백업해 둔 작업을 복구하여 실행 재개

       -> 인터럽트 서비스 루틴 : 인터럽트를 처리하는 프로그램

 

 

빠른 CPU를 위한 설계 기법

 

  • 클럭 : 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
    • 클럭 속도 : 1초에 클럭이 몇 번 반복되는지를 나타냄 (단위 : 헤르츠 (Hz))
  • 코어와 멀티 코어 
    • 코어 : 명령어를 실행 할 수 있는 하드웨어 부품
    • 멀티 코어 : 코어를 여러 개 포함하고 있는 CPU
  • 스레드와 멀티 스레드 
    • 스레드 : 명령어를 실행하는 단위
    • 멀티코어 프로세서 : 명령어를 실행 할 수 있는 하드웨어 부품 (= 코어) 가 CPU 안에 두 개 이상 있는 CPU
    • 멀티스레드 프로세서 : 하나의 코어로 여러개의 명령어를 동시에 실행 할 수 있는 CPU

 

 

 

명령어 병렬 처리 기법 : 명령어를 동시에 처리하여 CPU를 한시도 쉬지 않고 작동시키는 기법

 

    • 대표적인 명령어 병렬 처리 기법   
      1. 명령어 파이프 라이닝 : 명령어 파이프라인에 넣고 동시에 처리하는 기법
      2. 슈퍼스칼라 : CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
      3. 비순차적 명령어 처리 : 명령어들을 순차적으로 실행하지 않는 기법 
    • 명령어 파이프라인 : 여러개의 명령어를 겹처서 사용
      • 명령어 처리 과정
        1. 명령어 인출
        2. 명령어 해석
        3. 명령어 실행
        4. 결과 저장
      • 파이프라인 위험
        1. 데이터 위험 : 의존적인 두 명령어를 무작정 동시에 실행하려고 하면 파이프라인이 제대로 작동하지 않음
        2. 제어 위험 : 프로그램 카운터의 갑작스러운 변화
        3. 구조적 위험 : 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 같은 CPU 부품을 사용할 때

 

 

 

CISC와 RISC

 

  • 명령어 집합 (ISA) : CPU가 이해할 수 있는 명령어 모음
  • CISC : 복잡한 명령어 집합을 활용하는 컴퓨터
  • RISC : 명령어의 종류가 적고 짧은 규격화된 명령어 사용

 

CISC RISC
복잡하고 다양한 명령어 단순하고 적은 명령어
가변 길이 명령어 고정 길이 명령어
다양한 주소 지정 방식 적은 주소 지정 방식
프로그램을 이루는 명령어의 수가 적음 프로그램을 이루는 명령어의 수가 많음
여러 클럭에 걸쳐 명령어 수행 1클럭 내외로 명령어 수행
파이프라이닝하기 어려움 파이프라이닝하기 쉬움

 

기본미션 p.125 확인 문제 2번 정답

 

1 -> 플래그 레지스터

2 -> 프로그램 카운터

3 ->범용 레지스터

4 -> 명령어 레지스터

 

 

기본미션 p.155 확인 문제 4번 정답

 

답 : 코어

 

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

 

  • 코어 :  명령어를 실행 할 수 있는 하드웨어 부품

 

  • 스레드 : 명령어를 실행하는 단위
    • 하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위
    • 소프트웨어적 스레드 : 하나의 프로그램이 독립적으로 실행되는 단위

 

  • 멀티 코어 : 명령어를 실행할 수 있는 하드웨어 부품 (= 코어) 가 CPU 안에 2개 이상 있는 CPU

 

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