개발자 되는 중/개발 공부

CS 특강 - CPU

SeonChoco 2022. 12. 15. 00:03

cpu memory disk

컴퓨터를 이루는 3대장

cpu는 cpu를 제외한 모든 유닛을 관장한다.

 

컴퓨터는 특성

cpu는 n개의 resgister로 이루어져있다.

코어 X N

 

무어의 법칙

왜 코어를 여러개 만들었을까?

하나로는 발열이 너무 심해서

회로가 타들어 갈 정도

코어 - 협의 

 

코어의 성능 향상엔 본질적인 한계가 있다. 

차라리 multi 만들자

 

state = register 이다.

멀티하게 상태를 가진다.

 

cpu는

ALU 산술논리연산

CU controll unit = 리얼 뇌

 

프로그램A를 클릭하면 cpu에게 연산을 하라고 시킨다.

명령 접수는 cu가 받아준다.

그 다음 fetch 한다.

어딘가 쌓인다 그다음에 해석한다. 

ALI에게 토스 일거리받음 산술논리연산한다

연산한 결과를 프로그램에 보내고 프로그램의 메모리의 상태가 달라진다.

 

 

Register

업무별로 나눈다.

General purpose -  범용 - EAX, ECX (ESP, EAB 같은것)

special puroise - 특수용 (PC 레지스터 - 프로그램 카운터, 

 

프로그램

명령어 1 명령어 2 명령어 3

한라인 한라인 한라인

cpu가 명령을 처리했는지 알아야 다음 일을 할 거 아닌가

얼마나 명령처리했는지 알려주는 것이 PC 레지스터이다.

레지스터의 종류는 너무 많아서 검색해보시길

 

CPU의 구성

ALU

CU

Registers

Cache

 

disk 랑 cpu랑 서로 통신할 때 거리가 좀 있다.

매번 왔다 갔다하면 비효율적 사람들이 불편하다.

빈번하게 쓰인 것

가장 최근에 쓰이는 것

등등 그런거를 캐시라는 장소에 저장해놓는다.

 

음료수 사러 집에서 10km 떨어진 마트 가기 보다는 앞에 있는 자판기에서 음료수 뽑아 먹는거

cache coherence가 뭐라고?

 

cpu랑 프로그래밍이랑 어떻게 통신하는지

cpu는 binary onetool

cpu는 기계어만 알아듣는다 비트로 된 101100001111000

어셈블리어가 뭐지 loud jmp stop operand (개발자들의 허들이다)

010101010 못쓰니까 어샘블리어 만들데 이것도 힘들어서 C언어같은 HIGH LEVEL 언어를 만들었다

컴파일러가 C 언어, 자바스크립트, 파이썬 같은거다 아하… 말그대로 조립(연결)을 도와주는 언어들인거구나

 

ISA 가 뭐라고? 명령어 집합 instruction set architecture

원래 RISC CISC라는게 있었다.

CISC complexed라는게 있었는데 너무 복잡해서

RISC reduced로 간단한걸 쓰기로 했다.- 조금더 효율적으로 우리가 쓸수가 있다.

 

명령어 수행

의미가 뭐야?

이거를 하면 뭐가 되는데?

코드 하나하나 실행이 되는 것 라인 1, 라인2을 보내면서

컴퓨터 메모리의 레지스터들이 자꾸자꾸 변한다.

그렇게 하나하나 변하게 하다보면 결국 내가 원하는 기능이 실행된다

 

디테일 명령어 수행

결론은 모니터나, 디스크 등등에  영향을 미친다

명령어를 fetch 하면 CU가 일한다 

사실 Opcode가 있다. 

risc는 한 싸이클에 컴퓨터 명령을 실행

cisc는 시간이 많이 걸린다

 

opcode- 명령어

operand 

imm

resgister

memory

 

fetch해라

execute 

 

WB: Write back

 

결론 명령어 수행이 그냥 되는 것이 아니다

프리패치

prefetch

 

최적화 테크

 

컴퓨터 구조론

os, db, 네트워크 - 필수

컴파일러, 프로그래밍 언어

 

 

summary

1. 왜 싱글에서 멀티 코어 됐는지

2. cpu 생김새

3. cpu와 프로그래머는 어떻게 통신하는가

4. 명령어 수행방법

 

'개발자 되는 중 > 개발 공부' 카테고리의 다른 글

React uuid 쓰는 법  (0) 2022.12.20
애자일 방법론 특강  (0) 2022.12.16
스파르타 알고리즘 - Python 1주차  (0) 2022.12.14
스파르타 리액트 입문  (0) 2022.12.14
스파르타 React 숙련  (0) 2022.12.14