- 컴퓨터 하드웨어의 특성 :
- cpu와 메모리의 구성 및 동작 방식 :
- 성능을 향상하는 기술 :
- 멀티프로세싱의 개념과 관련 기법 :
CPU : 컴퓨터의 두뇌. 명령어를 해석하여 실행한다.
메모리(주기억장치) : 바이트 단위로 분할되어 있고, 분할 공간마다 주소로 구분한다.
입출력장치 : 키보드나 모니터이다. 컴퓨터에 입력하는 장치, 컴퓨터의 처리 결과를 출력하는 장치이다.
저장장치(보조기억장치) :
메인보드 : CPU, 메모리 등 여러 부품을 연결하는 보드이다.
CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어있는 구조이다.
저장장치에서 실행 불가능하고, 메모리에 올려야만 실행된다.
ㄴ메인메모리 관리가 중요하다.
도마에 올려야만 실행이 가능하다.
크기 단위
1Byte == 8bit
| 단위 | 2진 크기 | 10진 크기 | Byte |
|---|---|---|---|
| B | 1 | 1 | 1B |
| KB | 2^10 | 10^3 | 1000B |
| MB | 2^20 | 10^6 | 1000,000B |
| GB | 2^30 | 10^9 | 1000,000,000B |
| TB | 2^40 | 10^12 | 1000,000,000,000B |
| PB | 2^50 | 10^15 | 1000,000,000,000,000B |
클록과 헤르츠
- clock : 컴퓨터에서 단위시간이다. clock에 의해 일정 간격으로 만들어지는 tick을 pulse/clock tick 이라고 한다.
- 클록이 일정 간격으로 펄스를 맞추면 거기에 맞춰 모든 구성 부품들이 진행된다.
- CPU는 클록 한 번에 한 번의 덧셈, 클록이 발생할 때마다 데이터를 저장.
- Hertz (헤르츠) : 1초동안 발생한 펄스의 횟수이다.
- CPU 성능을 나타내는 단위이다.
버스
- 시스템 버스 : 주기억장치와 주변장치를 연결하는 버스이다.
- FSB (Front-Side-Bus)
- 메인보드의 동작 속도이다.
- 제일 느린 장치의 속도에 맞춘다.
- CPU 버스 : CPU 내부의 버스이다.
- BSB (Back-Side-Bus)
- CPU 클록과 속도가 같다.
- FSB 보다 속도가 빠르다.
프로그래밍과 언어
어셈블리어 : 기계어를 문자(사람이 읽을 수 있는) 형태로 바꾼 언어이다.
저급언어 : 어셈블리어, 기계어는 아니지만 사람이 사용하기 어려운 언어이다.
고급언어 : if, for처럼 사람이 이해하기 쉬운 언어이다.
컴파일 : 고급언어를 기계어로 변환하는 과정이다.
실행파일을 생성한다.
인터프리터 : 한 줄씩 변환하는 방법이다.
실행파일을 만들지 않는다. 코드상 오류 파악이 어렵다.
- ALU (산술논리 연산장치 Arithmetic and Logic Unit) : CPU의 핵심이다.
덧셈, 뺄셈같은 산술 연산과 AND, OR같은 논리 연산을 수행한다.- 제어장치 (control unit) : 작업을 지시하는 부분이다.
- 레지스터 (register) : 작업 데이터를 임시 보관한다. (CPU 내부) 세부내용 참고
제어장치가 주기억장치로 데이터를 로드한다.
주기억장치 2,3 -> 레지스터 2,3
로드한 데이터들을 복사한다.
레지스터 2,3 -> ALU 2+3
ALU 5 -> 레지스터 5
레지스터 5 -> 주기억장치 5
제어장치가 CPU내 데이터 흐름을 관리한다.

일반 레지스터 : 사람이 접근할 수 있다.
| 레지스터 | 특징 |
|---|---|
| 데이터 레지스터 (DR) | CPU가 명령을 처리하는 데 필요한 데이터를 임시로 저장하는 범용 레지스터이다. |
| 주소 레지스터 (AR) | 데이터 / 명령어가 저장된 주기억장치의 주소를 저장한다. |
특수 레지스터 : 주로 하드웨어에서 관리한다.
| 레지스터 | 특징 |
|---|---|
| 프로그램 카운터 (PC) | 다음에 실행할 명령어의 위치 (코드의 행 번호)를 저장한다. |
| 명령어 레지스터 (IR) | 현재 실행중인 명령어를 저장한다. |
| 메모리 주소 레지스터 (MAR) | 메모리 관리자가 다음에 접근해야 할 메모리의 주소를 저장한다. |
| 메모리 버퍼 레지스터 (MBR) | 메모리에서 가져온 데이터를 임시 저장한다. |
| 프로그램 상태 레지스터 (PSR) | 연산 결과를 저장한다. |
버스 : FSB (Front 시스템 버스) / BSB (Back CPU 버스)
장치들을 연결한다.
제어 버스 : 메모리와 주변장치에 제어 신호를 보낸다.
주소 버스 : 데이터를 읽거나 쓸 때 메모리나 주변장치에 위치정보를 보낸다.
데이터 버스 : 메모리 버퍼 레지스터와 연결되어있다.

휘발성 메모리
DRAM (Dynamic RAM) : 데이터가 일정 시간이 지나면 사라진다 -> 주기적으로 재실행해야한다.
SRAM (Static RAM) : 전원이 공급될 때는 데이터가 사라지지 않는다.
SDRAM (Synchronous Dynamic RAM) : 펄스가 발생할 때마다 데이터를 저장한다.
비휘발성 메모리
플래시 메모리 : USB처럼 전력이 없어도 저장한다.
SSD : 속도가 빠르고, 저전력이고, 내구성이 높고, 고가이다.
ROM (Read Only Memory)
시분할 기법으로 여러 프로그램을 동시에 실행하므로 메모리 보호가 매우 중요하다. 프로세스가 CPU를 차지하여 작업하면 운영체제는 CPU를 사용할 수 없는데, 운영체제가 메모리를 관리하므로 위험하다. 이때 메모리를 보호하려면 하드웨어의 도움이 필요하다.
두 레지스터의 범위를 벗어나는지 하드웨어가 점검하면서 메모리를 보호한다.
다른 메모리는 건드리지 못한다.

운영체제를 RAM에 올린다. 전원을 끄면 날아가기 때문에 켤 때마다 다시 올려야 한다. 메인 메모리가 비휘발성이면 부팅이 필요없다.
ROM은 비휘발성이다. 어디서 가져와서 어디에 올리라는 코드가 있다.
속도 차이가 있는 장치 간의 속도 차이를 완화한다.
바구니를 이용하면 도마를 낭비하지 않는 개념이다.
CPU와 입출력장치가 독립적으로 동작하도록 하는 버퍼이다.
입출력장치가 출력하는 도중에 프로그램이 끼어들 수 없게 독립적으로 동작하게 한다.
CPU의 메모리이다. 자주 사용하는 것들을 모아놓는다. 안 쓰면 버린다. 버퍼의 일종이다.
메모리와 CPU 간의 속도 차이(BSB-FSB)를 줄이기 위해 메모리의 데이터를 미리 가져온다.
앞으로 자주 사용할 것 같은 데이터를 미리 갖다놓는다.
CPU는 RAM접근 전에 캐시를 먼저 확인한다.
cache hit : 원하는 데이터가 캐시에 있을 때
cache miss : 원하는 데이터가 캐시에 없을 때 -> 메모리에서 찾는다.
cache hit ratio : cache hit 비율로, 일반적으로 90%이다.
캐시와 메모리에는 중복되는 데이터가 있다.
캐시 히트면 바로 쓰고 미스면 메모리에서 사용한다.
속도에 차이가 있다.
캐시가 꽉차면 사용할 확률이 낮은 것을 버린다.

즉시 쓰기 : 캐시에 있는 데이터가 변경 될 경우, 즉시 메모리에도 반영한다.
느리다. 정전에도 데이터를 잃지 않는다.
지연 쓰기 : 캐시 데이터가 변경될 경우, 모아서 주기적으로 반영한다.
카피백이라고도 한다. 빠르다. 하지만 메모리와 캐시 불일치가 발생할 수 있다.
L1 캐시와 L2 캐시 :
속도가 빠르고 비싼 장치를 CPU 가까이에 두고, 저렴하고 용량이 큰 장치를 멀리 둔다. -> CPU가 작업을 빨리 진행할 수 있다.
폴링 방식 : CPU가 직접 입출력장치에서 데이터를 가져온다.
계속 입출력 완료되었는지 확인해야 하기 때문에 비효율적이다.
요리사가 직접 창고에 가는 것과 같다.
인터럽트 방식 : 입출력 관리자가 입출력을 관리한다.
CPU가 입출력 확인하지 않아도 되므로 작업 효율이 좋다.
인터럽트 : 입출력 관리자가 CPU에게 보내는 신호이다.
인터럽트 번호 : 어떤 장치의 작업이 끝났는지 번호로 알려준다.
인터럽트 벡터 : 인터럽트를 하나의 배열로 만든 것이다.
재료소진 등을 벡터에 매핑하면 CPU가 일일이 확인하지 않아도 된다.
동작 과정
인터럽트 발생 -> CPU 실행 중단 -> 확인 -> 해결 -> CPU 실행
CPU가 인터럽트 관리자에게 입출력을 요청한다.
입출력 관리자가 메모리에게 데이터를 전달한다.
메모리는 CPU에게 메모리를 전달한다.

메모리의 주소공간에 입출력장치의 주소를 넣어놓는다.
모든 입출력은 메모리를 거친다.
입출력장치의 속도가 느리기 때문에 양보한다.
여러 개의 스레드를 동시에 처리한다.
무어의 법칙 : CPU속도가 24개월마다 2배 빨라진다.
요즘엔 CPU속도를 올리기보다 1칩에 여러 코어(멀티코어)를 넣기 때문에 깨졌다.
암달의 법칙 : 주변장치 향상 없이 CPU속도를 2배 올리면 컴퓨터의 성능이 2배 빨라지지 않는다.
성능이 빨라도 메모리(도마)가 그대로면 성능 향상을 체감할 수 없다.