사진과 같이 컴퓨터가 이해하는 정보로는 데이터, 명령어가 있으며 컴퓨터의 핵심 부품의 4가지를 알 수 있다.
(CPU, 메모리, 보조기억장치, 입출력장치)
입출력장치
1. 입력장치
컴퓨터에게 직접적으로 명령을 요청하거나 데이터를 입력할 수 있게 해주는 역할을 한다.
입력 장치로는 (키보드, 마우스 터치스크린, 마이크, 스캐너, 카메라 등등)이 있으며 사용자는 입력 장치들을 통해
컴퓨터에게 명령을 요청하거나 데이터를 입력할 수 있다.( 키보드를 통해 문자 입력, 마우스를 통해 폴더 열기 등등)
2. 출력장치
컴퓨터에게 명령을 요청하거나 데이터를 입력한 후 결과를 보여주는 역할이 출력 장치 이다.
즉, 연산된 데이터(결과)를 보여주는 역할을 하는 것이다. 출력 장치로는(스피커, 프린터, 모니터 등등)이 있다.
정리 : 입출력장치는 컴퓨터에게 직접적으로 명령을 내려주며 결과를 보여주는 역할을 한다.( 하드웨어 )
CPU ( 컴퓨터가 사용자의 명령에 대한 작업을 수행하는 처리장치 이다. )
1. CPU의 구성
CPU의 4가지 항목
1. 산술논리 연산장치 (ALU)(우뇌)
명령어에 따라서 명령에 대한 연산하고 수행하는 역할 ( 비교, 판단, 연산을 담당한다. )
2. 제어부(CU)와 내부 버스 (좌뇌)
명령을 수행할 때 명령어의 순서대로 하도록 스케쥴을 제어하는 역할
( 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적을 제어합니다. )
( 내부 버스를 통해 실제 명령어나 데이터가 이동할 수 있도록 도와준다. )
메모리 유닛( ALU의 연산을 도와주는 역할임. 저장 및 속도 개선 / 레지스터와 캐시메모리 포함 )
3. 레지스터
처리할 명령어를 저장을 해주는 구성 요소이다.
4. 캐시 메모리(L1)
처리속도를 높여주는 역할을 한다.(연산을 할 때 빨리할 수 있도록 도와주는 역할)
레지스터( CPU의 메모리 유닛 공간안에 존재함 )
레지스터는 연산에 필요한 데이터를 저장하고 빠른속도로 접근할 수 있는 저장공간이다.
용도에 따라 범용 레지스터와 특수목적 레지스터로 구분이 된다.
1. 범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장한다.
2. 특수목적 레지스터 : 특별한 용도로 사용하는 레지스터이다.
특수목적 레지스터
1. 메모리 주소 레지스터(MAR) : 읽고 쓰기 위한 주기억장치의 주소를 저장한다.
2. 프로그램 카운터(PC) : 다음에 수행할 명령어의 주소를 저장한다.
3. 명령어 레지스터(IR) : 현재 실행 중인 명령어를 저장한다.
4. 메모리 버퍼 레지스터(MBR) : 주기억장치에서 읽어온 데이터나 저장할 데이터를 임시로 저장한다.
5. 누산기(AC, ACCUMULATOR) : 연산 결과를 임시로 저장한다.
제어장치( 제어부(CU)와 내부 버스를 의미한다. )
제어장치는 명령어를 실행하는 순서를 제어하고 스케쥴링 한다.(구성력을 담당한다.)
1. 제어부
주기억 장치에 저장되어 있는 명령어를 순서대로 호출하여 해독하고, 제어 신호를 발생시켜
컴퓨터의 각 장치를 동작하도록 하는 장치이다.
2. 내부버스
기억, 연산, 제어 기능을 실현하기 위한 CPU와 주기억 장치, 입출력 장치, 외부 기억 장치,
주변 장치, 통신 처리 장치 등의 제어부 사이를 연결하는 연결통로를 버스라고 한다.
연산장치
CPU의 핵심으로 연산장치는 논리연산(덧셈,뺄셈,비교연산)을 수행한다.
1. 산술논리 연산장치 (ALU)
명령어에 따라서 명령에 대한 연산하고 수행하는 역할 ( 비교, 판단, 연산을 담당한다. )
논리적인 연산을 담당하는 디지털 회로라고 생각하면 된다.
2. CPU의 동작
컴퓨터가 모든 데이터를 "기계어(0,1)"로 저장 한다.( 전류가 통하면 1, 통하지 않으면 0 )
이러한 0,1로 구성된 기계어를 CPU가 하드웨어적으로 알아볼 수 있게 변환한게 "어셈블리어"이다.
"어셈블리어"는 사람이 알아볼 수 없고 CPU만 알아볼 수 있다. 어셈블리어를 사람이 알아볼 수 있게
소프트웨어적으로 변환한게 "프로그래밍 언어"이다.
# 즉, 기계어(저장공간) > 어셈블리어(CPU) > 프로그래밍 언어(사람)
CPU가 명령어를 읽고 수행하는 동작
1. 명령어 인출
CU(좌뇌)가 이번에 수행할 명령어 정보를 가지고 온다.
2. 명령어 해독
명령어 정보를 성공적으로 인출했으면 명령어를 읽어줘야한다. 즉, 해독해준다는 의미이다.
보통 opcode라고 하는 명령어 코드를 인출하고 opcode의 성경에 맞게 레지스터들을 준비시킨다.
3. 실행
해독된 명령어를 수행한다. 예를 들어, 이것이 산술/논리 관련된 연산이라고 하면 ALU가 주체가 되어서
실행을 하게 된다.
4. 반영
이 명령어의 수행 결과를 반영함으로써 명령어 수행의 한 사이클이 끝이 난다.
3. CPU의 성능
1. 클럭(CPU의 속도를 의미 한다.)
CPU 내부에서 일정한 주파수를 가지는 신호로, 이 신호로 모든 명령어가 동작하게 된다.
1Hz(헤르츠)면 1초에 한 번의 주기. 1기가 헤르츠라고 하면 1초에 1기가만큼(1024메가), 즉 10억 번 정도인 셈이다.
4.5GHz라는 것은 초당 45억 번의 명령어를 처리할 수 있다는 뜻 이다.
따라서 클럭 주파수가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있기에 더 좋은 성능의 중앙 처리 장치
라고 할 수 있다.
2. 코어
코어는 중앙처리 장치 역할을 하는 블록을 뜻한다.
즉, 멀티 코어들은 싱글 코어에 비해서 마치 여러 개의 CPU가 작동하듯이 많은 연산을 빠르게 병렬 처리할 수 있다.
물론 컴퓨터의 전체적인 성능은 CPU만으로 결정되지는 않고 메모리도 중요하다.
하지만, 가장 중요한 부분이라고 할 수 있는건 CPU이다.
메모리
명령어 대한 모든 연산은 결국 저장공간을 통해서 처리하게 된다.
# 레지스터 = CPU / 캐시메모리(SRAM), 메인 메모리(DRAM) = 주 기억장치 / 하드디스크(HDD) = 보조 기억장치
1. 캐시메모리 (L2, L3)
캐시 메모리는 컴퓨터의 전원이 꺼지면 지워지지만 제일 빠르게 조회할 수 있는 저장공간이다.
컴퓨터 시스템 향상을 위해서 CPU와 주기억장치 사이에 있는 아주 작은 메모리이다.
# CPU 구성의 캐시메모리랑은 다른 것임 CPU의 구성 캐시메모리는 L1(레이어1 캐시메모리)이고, 메모리그룹에
속한 CPU와 별개로 구성되어있는 캐시메모리는 L2캐시메모리, L3캐시메모리 라고 부른다.
L2, L3 캐시메모리는 메인 메모리에 있는 데이터를 캐시 메모에 불러와 놓고 CPU가 필요한 데이터를 캐시에서 먼저
찾도록 하여 시스템 성능을 향상시켜준다.( 레지스터와 비슷하지만 다른 개념 )
L2, L3 캐시메모리는 CPU와 별도의 공간이며, 메인 메모리와 CPU간의 속도차이를 극복하기 위한 것이다.
# CPU레지스터는 CPU안에서 연산을 처리하기 위하여 데이터를 저장하는 공간이다.
2. 주 기억장치
- 주 기억장치는 컴퓨터가 전원이 꺼지면 지워지지만 조금더 빠르게 조회할 수 있는 저장공간이다.
# 메인메모리 = 주기억장치 = RAM(Random Access Memory)
- RAM은 DRAM과 SRAM이 존재하는데 주기억장치로는 주로 DRAM을 의미한다.(SRAM은 캐시나 레지스트리)
- 컴퓨터의 CPU가 현재 처리중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리이다.
# 이러한 데이터를 유지시키기 위해선 HDD또는 SSD를 사용해야한다.
모든 프로그램은 컴퓨터에서 실행되기 위해 메모리를 일부를 사용한다. 프로그램을 저장한 것은 HDD/SSD이다.
SRAM( Static RAM ) / 정적 메모리
전원 공급이 되는 동안은 기록된 내용이 지원지지 않기 때문에 재충전이 필요 없음.
접근 속도가 빠르고 가격이 비싸다는 특징이 있으며 주로 캐시메모리나 레지스터로 사용이 된다.
DRAM( Dynamic RAM ) / 동적 메모리
전원이 계속 공급되더라도 주기적으로 재충전되어야 기억된 내용을 유지할 수 있다.
주로 대용량의 기억장치에 사용되며 가격이 저렴하다.
주로 RAM이라고 표현하는 것(주기억장치)은 거의 DRAM을 가리킨다.
3. 보조 기억장치
보조 기억장치는 컴퓨터 전원이 꺼져도 지워지지 않는 저장공간 이다.
사용자가 사용하고자 하는 데이터와 프로그램을 반영구적으로 저장을 해준다.
전원을 끄더라도 저장된 데이터나 정보가 날아가지 않는 비휘발성 메모리이다.
그렇기 때문에 우리가 설치하는 모든 프로그램이나 파일들은 이곳에 반영구적으로 저장이 된다.
3. CPU와 메모리의 동작
CPU / 입력장치 / 주 기억장치 / 캐시메모리 / 보조기억장치 / 데이터 / 명령어 / 출력장치
CPU => ALU(우뇌 연산장치) / CU(자뇌 제어담당) / 레지스터와 캐시메모리L1
1. 주기억장치가 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어 온다.
- 입력장치를 통해 명령어가 입력이 되면 CPU가 입력데이터를 주 기억장치에 넣어두고 보조 기억장치에서
필요한 프로그램과 저장 데이터를 가지고 온다.
2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를
다시 주기억 장치에 저장한다.
3. 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보내서 출력시킨다.
4. CPU내의 제어장치(CU)가 1~3번 과정에서 명령어가 순서대로 실행되도록 각 장치들을 제어한다.
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 5일차 TIL( 웹 서비스 ) (0) | 2024.04.19 |
---|---|
내일배움캠프 4일차 TIL( SQL ) (0) | 2024.04.18 |
내일배움캠프 3일차 TIL( Git - Branch/reset/revert/merge/rebase ) (0) | 2024.04.17 |
내일배움캠프 2일차 TIL( SQL ) (0) | 2024.04.16 |
내일배움캠프 1일차 TIL( Git & Git-Hub 기초 ) (0) | 2024.04.15 |