[혼공컴운] 2주차

Oh Yusang·2024년 1월 14일
0

혼공컴운

목록 보기
2/2

기본미션
p.125 확인문제 2번
(1) 플래그 레지스터
(2) 프로그램 카운터
(3) 범용 레지스터
(4) 명령어 레지스터

p.155 확인문제 4번
코어

CPU의 작동원리

  • ALU란?
  • 제어장치란?
  • 레지스터 : 종류 & 역할
  • 명령어 사이클이란?
  • 인터럽트란?

CPU : 메모리에 올라온 명령어를 읽고, 해석하고, 실행하는 장치
CPU 구성 요소 : ALU(계산), 제어장치(명령어 읽기, 해석), 레지스터

ALU란?

ALU : Arithmetic-Logic Unit
산술 연산과 논리 연산을 수행하는 장치

레지스터 : 피연산자 제공
제어장치 : 수행할 연산 지정해주는 제어신호(산술, 논리 등) 제공

연산 수행 결과 : 숫자, 문자, 메모리 주소
연산 수행 결과는 바로 메모리에 담지 않고 레지스터에 저장

  • 접근 속도 차이(레지스터 << 메모리)로 인한 프로그램 실행 속도 저하를 막기 위해 레지스터에 우선 저장하는 것

플래그(flag)는 연산 결과에 대한 추가적인 상태 정보. 플래그 또한 ALU가 내보내는 정보

  • 부호 플래그 : 연산 결과의 부호 :: 1이면 음수, 0이면 양수
  • 제로 플래그 : 연산 결과가 0인지 여부 :: 1이면 결과가 0. 0이면 결과가 0이 아님
  • 캐리 플래그 : 올림수 발생 여부 :: 1이면 올림수/빌림수 발생, 0이면 발생x
  • 오버플로우 플래그 : 오버플로우 발생 여부 :: 1이면 발생, 0이면 발생x
  • 인터럽트 플래그 : 인터럽트 가능/불가능 여부 :: 1이면 가능, 0이면 불가능
  • 슈퍼바이저 플래그 : 커널 모드/사용자 모드 여부 :: 1이면 커널 모드. 0이면 사용자 모드

플래그들은 플래그 레지스터에 저장됨

ALu 내부에는 여러 계산을 위한 회로들이 있음
보수기(뺄셈 목적), 시프터(시프트 연산 목적), 오버플로우 검출기(오버플로우 대비 목적) 등

제어장치란?

제어장치 : 제어신호 발생, 명령어 해석
제어신호 : 컴퓨터 부품 관리/작동을 위한 전기 신호

제어장치가 받아들이는 정보

  • 클럭 신호
  • 해석해야 할 명령어
  • 플래그 레지스터 속 플래그
  • 제어버스로 전달된 제어 신호

클럭신호

클럭 : 컴퓨터의 부품을 동작할 수 있게 하는 시간 단위
"컴퓨터의 모든 부품이 클럭 신호에 맞춰 작동한다" != "컴퓨터의 모든 부품이 한 클럭마다 작동한다"
-> 하나의 명령어가 여러 클럭에 걸쳐 실행될 수 있음

해설해야 할 명령어

해석해야 할 명령어는 명령어 레지스터에 저장됨
1. 명령어 레지스터로부터 명령어를 받아들이고 해석
2. 제어신호를 발생시켜 부품들에게 해야할 일을 제공함

제어버스로 전달된 제어 신호

CPU, 입출력장치를 비롯한 CPU외부 장치들도 제어 신호를 발생시킬 수 있음
제어 장치는 이러한 제어 신호를 제어 버스를 통해 받아들이기도 함

제어장치가 내보내는 정보

CPU 외부에 전달

제어 버스를 이용하여 제어 신호를 내보낸다는 의미
메모리와 입출력장치(보조기억장치 포함)에 제어 신호를 내보내는 것을 말함

CPU 내부에 전달

ALU에 전달하는 제어 신호
레지스터에 전달하는 제어 신호

레지스터

프로그램의 명령어와 데이터는 실행 전/후에 레지스터에 저장됨

이후의 정리된 내용은 부실하여 차후 보완할 예정입니다.

PC : Program Counter : 메모리에서 가져올 명령어의 주소가 저장됨
IR : Instruction Register : 해석할 명령어가 저장됨
MAR : Memory Address Register는 메모리의 주소가 저장됨
MBR : Memory Buffer Register는 메모리와 주고받을 데이터가 저장됨

범용 레지스터는 데이터와 주소 모두 저장됨
플래그 레지스터는 연산 결과 / CPU 상태에 대한 부가 정보가 저장됨

명령어 사이클

명령어 사이클 : 하나의 명령어를 처리하는 정형화된 흐름

인출 사이클 : 메모리에 저장된 명령어를 CPU로 가져오는 단계
실행 사이클 : 인출 사이클에서 가져온 명령어를 실행하는 단계

간접 사이클 : 간접 주소 지정 방식과 같이 인출 사이클을 마친 상태에서도 바로 실행 사이클에 들어가지 못 하는 경우가 있음. 이와 같이 추가적인 메모리 접근이 필요하여 진행하는 단계가 간접 사이클

인터럽트

인터럽트 : CPU의 작업을 방해하는 신호(현재 진행중인 작업을 멈추는 것)

동기 인터럽트(Synchronous interrupts) : CPU에 의해 발생하는 인터럽트
실행하는 프로그래밍상의 오류와 같은 예외적인 상황에 발생하는 인터럽트
동기 인터럽트는 예외라고 부름

비동기 인터럽트(Asynchronous interrupts) : 주로 입출력장치에 의해 발생하는 인터럽트 (세탁기 완료 알림 등의 알림 역할 수행)
비동기 인터럽트는 하드웨어 인터럽트라고 부름

인터럽트 서비스 루틴(ISR) : 인터럽트를 처리하기 위한 동작들로 이루어진 루틴

CPU 성능 향상 기법

빠른 CPU를 위한 설계 기법

클럭

클럭 : Hz(헤르츠) 단위로 측정되는 프로그램의 실행 단위
클럭 속도가 빨라지면 CPU의 속도가 빨라짐

클럭 속도를 높일 수록 CPU의 발열 정도가 상승함 -> 발열에 따른 성능 저하가 유발됨 -> 클럭 속도를 무작정 높이는 것만으로는 CPU의 속도를 올리는 데에 한계가 있음

코어/멀티코어

명령어를 실행하는 부품 : 코어
현대의 CPU는 내부에 여러 개의 코어가 존재
여러 개의 코어를 포함하는 CPU를 멀티코어 CPU(프로세서)

일반적으로 코어 수가 늘어날 수록 CPU의 연산 속도가 상승함
하지만 처리할 연산이 적잘하게 분배되지 못하거나 코어의 수에 비해 연산이 적은 경우 코어의 수가 많더라도 꼭 CPU의 속도를 올리는 결과를 가져오지는 않음

스레드/멀티스레드

스레드 : 실행 흐름의 단위

하드웨어적 스레드
하나의 코어가 동시에 처리하는 명령어의 단위

멀티스레드 CPU(프로세서) : 하나의 코어로 여러 명령어를 동시에 처리하는 CPU
하이퍼스레딩 : 인텔의 멀티스레드 기술의 명칭

소프트웨어적 스레드
하나의 프로그램에서 독립적으로 실행되는 단위

  • 입력받는 내용을 화면에 출력하는 기능
  • 입력한 내용을 수시로 저장하는 기능
    등과 같은 기능들을 동시에 수행되게 하는 기능

명령어 병렬 처리 기법

명령어 파이프라인

동시에 여러 개의 명령어를 겹쳐 실행하는 기능

슈퍼스칼라

여러 개의 명령어 파이프라인을 두는 기법

비순차적 명령어 처리

명령어를 순차적으로 실행했을 경우 파이프라인의 지연이 발생될 수 있는데, 이러한 지연을 방지하고자 명령어를 비순차적으로 처리하는 기법

0개의 댓글