CPU란
Register의 집합체(코어) -> 집합체가 n개 라면, n코어 cpu
싱글코어 -> 멀티코어 쓰는 이유는?
- 발열
- 코어의 성능 향상엔 본질적 한계가 있기 때문(multiple)
CPU 구조
ALU, CU, Register, 캐시
ALU(계산기)
산술 논리 장치, 산술연산과 논리연산을 계산하는 디지털 회로
- 정수형 산술 연산 (덧셈, 뺄셈, 그리고 가끔 곱셈과 나눗셈, 이것보다 더 복잡할지라도)
- 비트 논리 연산 (AND, NOT, OR, XOR)
-NOT 연산은 각 자릿수의 값을 반대로 바꾸는 연산
-OR 연산은 두 값의 각 자릿수를 비교해, 둘 중 하나라도 1이 있다면 1을, 아니면 0을 계산
-XOR 연산은 두 값의 각 자릿수를 비교해, 값이 같으면 0, 다르면 1을 계산
-AND 연산은 두 값의 각 자릿수를 비교해, 두 값 모두에 1이 있을 때에만 1을, 나머지 경우에는 0을 계산
- 비트 시프트 연산 (부호 확장을 지녔거나, 지니지 않거나, 왼쪽이나 오른쪽으로 특정 비트만큼 이동하거나 회전하는 워드). 시프트는 2로 곱셈하거나 나눗셈하는 것처럼 해석할 수 있다.
CU(컨트롤유닛)
명령 제어장치, 입력된 명령어로 cpu내부의 움직임을 총괄하고 각과정을 통제
(입출력 장치 간 통신 및 조율을 제어, 명령어들을 읽고 해석하며 데이터 처리를 위한 시퀀스를 결정)
Register
업무별로 나뉘게 됨
- General-purpose(범용)
- Special-purpose(특수용) - PC(프로그램 카운터)레지스터
캐시
CPU와 DISK간의 통신거리가 멀기(비효율적) 때문에 캐시를 통해 CPU와 가까운 곳(효율적)에서 통신을 함(자주 쓰이는 것, 최근에 쓴 것을 저장)
CPU-프로그래머
소통
- CPU는 기계어(0과1로 이루어진 언어)
- 프로그래머는 기계어로 소통하기 어렵기 때문에 어셈블리어를 통해 기계어와 소통함
하지만 어셈블리어도 쉽지 않기 때문에 프로그래밍이된(?) 컴파일러를 통해 더욱 쉽고 간편하게 소통하게 됌
- 어셈블리어 - 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어
- 컴파일러 - 컴파일러는 C 또는 Java 와 같은 고급 언어를 CPU가 이해할 수 있는, 즉 어셈블리어와 같은 기계 언어로 변환
일단 CS는 CPU의 전체적인 흐름과 가벼운 개념 정도만 알아놓고 틈틈이 추가하며 공부하기!!
아직 갈 길이 멀다....