📜 CS 특강
✍ CPU
컴퓨터의 전반적인 특성을 이해하기 위한 강의
컴퓨터 이루는 3대장
:: CPU
- 여러개의 Register로 구성
- 코어의 수가 n개 만큼 많아지면 Register와 status도 n개 만큼 많아짐
- 또 statu
:: CPU가 싱글에서 멀티로 진화한 이유
무어의 법칙 : 해마다 성능이 2배로 늘어남
- 싱글코어로도 극한의 처리가 가능했지만 발열 감당이 안됨 (회로가 타들어감)
- 코어의 성능 향상엔 본질적인 한계가 있기 있음
- 그래서 차라리 "멀티플하게 해결해보자" 해서 멀티코어가 나옴
- 멀티코어이기 때문에 멀티한 상태를 가짐 (status == register)
:: CPU 內
ALU (Arithmetic and Logical Unit)
- 산술 논리 연산
- CU로부터 명령을 받아 cpu로 들어온 모든 데이터들을 산술연산, 논리연산
CU (Control unit)
- 리얼 뇌
- 명령 제어장치 , 입력된 명령어를 해독하여 cpu내부의 움직임을 총괄 및 통제
- 프로그램 A 클릭 → CPU한테 연산 해달라고 좀! = 이 접수를 CU가 받음
- 작업 지시
- 명령어를 특정 register에 저장
- 명령어를 1. fetch함
- 명령어 2. 해석 recorde
- 명령어 3. ALU에게 토스
프로그램을 클릭해서 CPU에게 연산해달라고 하는 요청들어옴
- CU가 받은 후 명령어를 특정 레지스터에 저장
- CU는 명령어를 Fetch하고 해석후 ALU에게 토스
- ALU은 받은 명령어를 산술, 논리연산 후 프로그램에 전달
- 메모리 상태가 바뀜
Prefetch
- 하나의 명령어 수행 중 다른 명령어 미리 fetch
- 효율이 좋아짐
- 컴퓨터 속도가 올라감
- 최적화
Register
- 업무별로 나뉨
- 각 하는 역할이 있고, 그 역할에 맞게 분업해서 하나처럼 돌아가게 함
- General - purpose 범용
- eax, ecx
-special - purpose 특수용
- pc 레지스터
- 프로그램 카운터
- 명령 실행 후 레지스터 상태 증가
- 명령어 1,2,3 한 라인을 cpu가 얼마나 처리했는지 pc1,2,3 별로 처리했는지 관리
Cash
- 캐싱
CPU 와 DISK가 핑퐁할 때, CPU 와 DISK의 거리를 좁히기 위해
빈번하게 쓰이거나 최근 쓰인 것들 캐쉬라는 공간에 모아둠
Cache Coherence (캐시 일관성)
- 공유 메모리 시스템에서 각 로컬 캐시 간의 일관성
각 클라이언트가 자신 만의 로컬 캐시를 가지고
다른 여러 클라이언트와 메모리를 공유하고 있을 때,
캐시의 갱신으로 인한 데이터 불일치 문제가 발생
- Cache Coherence을 유지한다고 하는 것은 데이터 불일치 현상을 없애는 것
- 일관성 유지하기 위해서는 다른 프로세서가 갱신한 캐시 값을 곧바로 혹은 지연하여 다른 프로세서에서 사용할 수 있도록 해줘야 함
:: CPU와 프로그래머 통신방법
- cpu는 binary 원툴 0101 이런 기계어만 알아들음
- 통신을 위해 프로그래머가 직접 어셈블리어를 짤 수도 있음
어셈블리어도 코딩이 가능함
어셈블리어도 개발자 허들이 있음
어셈블리어 - 프로그래밍언어, c / c++ / java ...
컴파일러
- 일종의 번역 프로그램
- 어셈블리어를 쓰지 않아도 통역해주는 것
코딩만 할 줄 알면 컴퓨터에 명령하는 것이 쉽다.
:: 명령어 수행방법
ISA (Instruction set architecture): 명령어집합
- CISC :Complex instruction set computer
- RISC :Reduced Instruction Set Computer
line마다 컴퓨터 메모리와 레지스터들이 자꾸 변함
이런 것들이 모여서 원하는 결과로 딱!
모니터 등의 변화
line by line 으로 변화시킴
디테일 : 명령어 수행
- 디스크와 모니터에 영향을 끼침 (DB, DISK 원통그림)
- CU가 명령어 FETCH
명령어 == opcode
- 아래 operand들이 있음 - 메모리, 레지스터...
- fetch
- execute (실행)- ALU, 오퍼랜드에 반영
- Write back
- 캐시로부터 해제되는 때(캐시안에 있는 내용을 버릴시) 에만 주기억장치 or 보조기억장치에 기록되는 방식
컴퓨터구조 지식이 현업에서 어떤식으로 쓰이나요?
- 당장 웹, 앱개발에선 안쓰이지만
- 시스템 프로그래머, 설계 등에 알고 있는 것과 모르는 것이 엄청 차이남
:: CS 공부
Essntial
Advanced
디깅이란? 해독, 파보기, 깊게