2023. 7. 17. 01:57ㆍ카테고리 없음
04. CPU의 작동원리
학습목표
- ALU와 제어장치에 대해 학습
- 레지스터의 종류와 역할에 대해 학습
- 명령어 사이클을 이해하자
- 인터럽트의 개념을 학습하자.
복습타임
- CPU 구성요소는 레지스터, ALU, 제어창지로 구성되어있다
- 명령어의 구조는 연산자(연산 작동), 오퍼랜드(피연산자인 데이터)로 구성되어있다.
ALU와 제어장치
CPU가 어느 명령어를 어떻게 읽어들이고 연산하고, 처리하는지 알아보자.
- ALU
이 부품의 용도는 명령어의 연산을 담당한다.
이때 연산에 필요한 값과 연산결과값을 각각 받아들이거나 내보낼 것이다.- 받아들이는 값
- 피연산자 : 레지스터에서 데이터를 가져온다.
- 수행할 연산 :
- 내보내는 값
- 결과값 : 연산결과값
- 플래그 : 연산결과에 대한 추가정보. 플래그 레지스터로 값을 보낸다.
여기서 잠깐, 왜 플래그값도 같이 내보낼까?
그 이유는 컴퓨터는 0과 1로 데이터를 표현하기 때문이다. - 음수, 양수 모두 2진수로 표현하다보니 연산값에 대한 추가적인 정보가 필요하다.
- 받아들이는 값
| --- | --- | --- |
| 플래그 종류 | 의미 | 사용 예시 |
| 부호 플래그 | 연산 결과의 부호(+,-)를 나타낸다. | 1 : 음수 0 : 양수 |
| 제로 플래그 | 연산 결과가 0인지 여부를 나타낸다. | 1 : 연산결과는 0 0 : 0이 아님 |
| 캐리 플래그 | 올림수나 빌림수가 발생하는지를 나타낸다. | 1 : 올림수나 빌림수 발생 0 : 발생X |
| 오버플로우 플래그 | 오버플로우가 발생했는지 나타낸다. | 1 : 오버플로우 발생 0 : 발생X |
| 인터럽트 플래그 | 인터럽트가 가능한지 나타낸다. | 1 : 인터럽트 가능함 0 : 인터럽트 불가능함. |
| 슈퍼바이저 플래그 | 커널모드/사용자모드 실행중인지 나타낸다. | 1 : 커널모드로 실행중 0 : 사용자 모드로 실행중. |
| | | |
- 제어장치
제어신호를 내보내고, 명령어를 해석하는 부품이다.
당연히 값 도출을 위해서 input값, ouput 값이 있는 법이다.- 제어신호 : 컴퓨터 부품들에게 보내는 관리 및 작동 신호.
- 받아들이는 값
- 클럭신호
클럭은 컴퓨터의 실행 시간단위다.
대다수의 컴퓨터 부품은 클럭 단위에 맞춰 동작한다. - 해석해야할 명령어
해석할 명령어는 명령어 레지스터 으로부터 가져온다. - 플래그 값
플래그 레지스터에서 플러그 값들을 가져온다. - 제어신호
시스템 버스에는 3가지 노선이 있다.(데이터, 주소, 제어)
그 중에서 제어 버스로 전달된 제어신호를 받아들인다.
- 클럭신호
- 내보내는 정보
- CPU 외뷰/내부에 전달하는 제어신호
레지스터
레지스터는 CPU 연산 시 사용되는 임시저장공간이다.
CPU마다 종류, 크기, 이름이 다양하지만 필수로 존재하는 레지스터들을 알아보자.
- 프로그램 카운터(PC)
- 명령어 레지스터
- 메모리 주서 레지스토
- 메모리 버퍼 레지스터
- 범용 레지스터
- 플래그 레지스터
위에서 정리했듯이, ALU 연산결과 또는 CPU 상태에 대한 부가정보를 장하는 곳이다.
명령어 사이클와 인터럽트
이번에는 전체적으로 전체적인 명령어들의 처리흐름을 살펴볼 차례이다.
그리고 이 처리흐름의 방해에 대해서도 알아본다.
* 명령어 사이클
하나의 명령어가 처리되는 주기이다. 프로그램 속 여러 명령어들 하나하나가 이 사이클을 가진다.
- 인출 사이클
명령어를 메모리 -> CPU로 가져오는 과정이다.
- 실행 사이클
가져온 명령여를 CPU에서 실행하는 과정이다.
- 간접 사이클
인출한 명령어에서 추가적으로 메모리 접근이 더 필요할 때, 이 과정을 거친다.
ex) 간접주소지정방식
- 인터럽트
프로그램을 실행하다가 갑자기 pc가 꺼지거나 내가 강제종료를 시키는 등 여러 일로 프로그램 실행이 중단되는 일이 존재한다.
이처럼 프로그램의 실행을 방해하는, 즉 인터럽트가 발생할 수 있다.- 인터럽트
CPU의 작업을 방해하는 신호 - 인터럽트의 분류
- 동기 인터럽
CPU에 의해 발생하는 인터럽트이다.- 예시
- 개발 시 예외(exception)
- 예시
- 비동기 인터럽트
주로 입출력장치에 의해 발생하는 인터럽트다.
CPU에게 보내는 알림이라고 생각하면 된다.- 예시
- 입출력장치가 어떤 입력을 받아들였을 떄, CPU는 잠깐 하던 일을 중지하고 해당 작업을 처리한다.
- 처리방법
- 예시
- 동기 인터럽
- 인터럽트
5. CPU 실행기법
보다 효율적이고 빠르게 CPU 연산처리하는 방법에 대해 알아보자.
여러분이 빨리 일을 끝낼 때 아래의 방법을 사용할 것이다.
- 작업 속도를 빠르게 하기
- 같이 작업할 수 있는 경우라면, 누구 불러서 같이 작업하기
- 멀티플레이로 일하기
마찬가지로 CPU도 해당 방법들을 사용해서 일한다.
- 클럭
- 복습타임
- 클럭 :
- 클럭 속도단위 : 헤르츠(Hz). 1Hz : 1초에 1번 사이클
컴퓨터 부품들은 클럭 신호에 맞춰 작동한다.
그렇다면 클럭 속도가 높다면 동작속도도 빨라진다 - 그렇다고 해서 무작정 오버클럭킹을 하면 발열이 심해지고, 실행속도는 무조건 빨라지는 것은 아니다.
- 코어와 멀티코어
사실 요즘 CPU는 명령어를 처리하는 부품들이 n개이다.- 코어
명령어를 처리하는 부품 - 멀티코어 프로세스
코어를 여러 개 포함하고 있는 CPU우선 1. 코어들에 일이 균등하게 분배 되어있어야하고, 2. 처리하고자 하는 작업량에 맞는 코어수인가 생각해봐야한다. - n개가 동시에 작업하니 CPU 처리 속도는 빨라진다. 그렇지만 무조건 처리속도가 빨라지는 것은 아니다.
- 코어
- 스레드와 멀티 스레드
스레드의 사전적 의미는 '실행 흐름의 단위'이다.- 하드웨어적 스레드
1개의 코어가 동시에 처리하는 명령어 단위이다. - 1개 코어라 할지라도 n개의 스레드가 있을 수 있다.
- 소프트웨어적 스레드
하나의 프로그램에서 독립적으로 실행되는 단위
- 하드웨어적 스레드
- 명령어 병렬 처리 기법
명령어를 동시에 처리해서 CPU를 쉴새 없이 가동하는 기법들에는 여러 종류가 있다.- 명령어 파이프라인
이 기법은 명령어가 처리되는 각단계를 동시에 처리하는 기법이다.- 파이프라인 위험
특정 상황에서 성능 향상에 실패하는 경우다.- 데이터 위험
명령어 간의 데이터 의존성에 의해 발생한다.
이전 명령어가 끝까지 실행되어야만 수행할 수 있는 경우도 있다.- 제어 위험
분기 등으로 인한 프로그램 카운터의 갑작스러운 변화에 의해 발생한다.
미리 준비한 PC 내에 인출했던 명령어가 무용지물되는 상황이다.
- 제어 위험
- 구조적 위험
겹처서 실행할 시, 서로 같은 CPU 부품을 사용하려할 때 나타난다. - 자원위험* 이라고도 부른다.
명령어 2 : 메모리 주소 100번지에 3을 곱해라 - 데이터 위험
- 두 명령어가 명령어 파이프라이닝으로 동시에 처리 중이다.
2개 모두 메모리 주소 100번지에 참조하게 된다.
- 파이프라인 위험
- 명령어 파이프라인
- 슈퍼스칼라 기법
명령어 파이프라이닝을 n개 두었다. - 비순차적 명령어 처리
명령어를 순차적으로 처리하지 않는 기법이다. - 순서를 바꾸어도 상관업는 명령어를 먼저 실행해 명령어 파이프라인이 멈추는 것을 방지한다.
- CISC와 RISC
앞선 시간에는 파이프라이닝에 대해 배웠다. 그러면 명령어는 어떤 구조로 되어야 명령어 파이프라이닝에 유리할까?- 명령어 집합(=ISA)
CPU가 이해할 수 있는 명령어들의 모음.
각 CPU마다 ISA가 다를 수 있다. - CICS와 RISC
- 명령어 집합(=ISA)
CISC | RISC |
---|---|
복잡하고 다양한 명령어 | 단순하고 적은 명령어 |
가변길이 명령어 | 고정 길이 방식 |
다양한 주소지정방식 | 적은 주소 지정 방식 |
프로그램을 이루는 명령어 수가 적음 | 프로그램으 이루는 명령어의 수가 많음 |
여러 클러에 걸쳐 명령어 수행 | 1클럭 내외로 명령어 수행 |
파이프라이닝하기 어려움 | 파이프라이닝하기 쉬움 |
메모리
- RAM의 종류
- 메모리의 주소 공간
컴퓨터에서 사용하는 주소는 2가지가 있다. 물리 주소, 논리 주소는 각각 메모리, CPU와 실행 중인 프로그램에서 사용하는 주소다. * 물리주소 - 하드웨어 상의 주소를 말한다. - 메모리에서 사용하는 주소 * 논리주소 -
- 캐시메모리(cache memory)
컴퓨터간 부품들은 각자 저장공간, 처리 속도가 다르다. CPU는 메모리보다 처리속도가 빠르기 때문에 메모리의 처리가 완료될 때까지 기다리기 때문에, 캐시 메모리를 두어서
#확인문제 및 미션