컴퓨터가 이해하는 정보
컴퓨터는 0과 1로 표현된 정보만 이해하며 그 정보에는 크게 데이터(data), 명령어(instruction)이 있다.
- 데이터는 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보를 말하며
- 명령어는 데이터를 움직이고 컴퓨터를 작동시키는 정보이다.
컴퓨터 구조의 핵심 부품
아두이노, 라즈베리 파이, 스마트폰, 노트북 등 세상에는 여러 컴퓨터가 있고, 크기와 용도도 제각각이다. 하지만 외관과 용도를 제외하면 핵심 부품은 크게 다르지 않다.
- 중앙처리장치(CPU; Central Processing Unit)
- 주기억장치(main memory), 이하 메모리
- 보조기억장치(secondary storage)
- 입출력장치(input/output(I/O) device)
주기억장치(main memory)
메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다.
컴퓨터가 빠르게 작동하기 위해서는 명령어와 데이터가 정렬이 되어 있어야 한다. 그래서 빠르고 효율적인 접근을 위해 주소(address)라는 개념이 사용된다.
프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 하고, 메모리는 실행되고 있는 프로그램의 명령어를 저장하며, 메모리에 저장된 값의 위치는 주소로 알 수 있다.
CPU
CPU는 사람의 두뇌라 볼 수 있다. CPU에 저장된 명령어를 읽고 해석하고, 실행하는 부품이다.
CPU의 내부 구성에는 중요한 세가지가 있는데, 산술논리연산장치(ALU; Arithmetic Logic Unit), 레지스터(register), 제어장치(CU; Control Unit)이다.
- ALU
ALU는 쉽게 말해 계산기이다. 컴퓨터 내부에서 수행되는 대부분의 계산은 ALU가 한다.
- 레지스터
레지스터는 CPU 내부의 작은 임시 저장 장치이다. 프로그램을 실행하는 데 필요한 값들을 임시로 저장한다.
여러 개의 레지스터가 존재 할 수 있고 각기 다른 이름과 역할이 있다.
- 제어장치
제어장치는 제어 신호(control signal)를 내보내고 명령어를 해석한다.
CPU가 메모리에 저장된 값을 읽을 때는 메모리 읽기, 값을 저장할 때는 메모리 쓰기의 제어신호를 보낸다.
보조기억장치
메모리는 두가지 단점이 있는데 가격이 비싸며 용량이 작으며, 전원이 꺼지면 메모리는 저장된 내용이 없어진다. 그 말은 우리가 워드를 치다가 컴퓨터를 강제로 꺼버리면 없어지는 것이 실행중인 프로그램은 메모리에 저장되기 때문이다. 그래서 용량이 크고 저장된 내용을 잃지 않는 메모리를 보조할 저장 장치가 필요했는데, 이 저장 장치가 보조기억장치이다.
입출력장치
입출력장치는 마이크, 스피커, 마우스, 키보드등 컴퓨터 외부에 연결되어 컴퓨터와 정보를 교환하는 장치를 말한다. 자세한 것은 다음에 포스팅할 예정이다.
메인보드와 시스템 버스
지금까지 설명한 컴퓨터의 부품들은 모두 메인보드(main board)라는 판에 연결된다. 마더보드(mother board)라고도 부르며 부품을 부착할 수 있는 소켓들이 있다.
메인보드에 연결된 부품들은 서로 정보를 주고받을 수 있는데, 이는 메인보드 내부에 버스(bus)라는 통로가 있기 떄문이다.여러 버스 가운데 핵심 부품들을 연결하는 버스는 시스템버스(system bus)이다.
- 시스템 버스(system bus)의 종류
- 주소 버스(address bus) = 주소를 주고 받는 통로
- 데이터 버스(data bus) = 명령어와 데이터를 주고받는 통로
- 제어 버스(control bus) = 제어신호를 주고받는 통로
정리를 해보자.
메모리상태이다.
Address 1000 = Address 1002 add Address 1003 (명령어)
Address 1001 = Save add result (명령어)
Address 1002 = 20 (데이터)
Address 1003 = 30 (데이터)
- 주소 1000(주소 버스)에 저장된 명령어를 읽기(데이터 버스) 위해 제어장치에서 '메모리 읽기' 제어 신호(제어 버스)를 보낸다.
- 1000번지(주소 버스)에 저장된 명령어(데이터 버스)를 레지스터에 저장한다.
- 제어장치가 레지스터에 있는 명령어를 해석(1002번지와 1003번지를 더하라)한다.
- 제어장치는 1002번지, 1003번지 데이터가 필요하다고 해석하여 두 주소(주소 버스)에 '메모리 읽기' 제어 신호(제어 버스)를 보낸다.
- 메모리는 1002번지, 1003번지 데이터(데이터 버스)를 레지스터에 건네주며 각각 다른 레지스터에 저장 된다.
- ALU는 읽어 들인 데이터로 연산을 수행 한 후 레지스터에 저장한다.(값 = 50) 이때 1000번지의 명령어의 실행이 끝난다.
- 주소 1001에(주소 버스) 저장된 명령어를 읽기(데이터 버스) 위해 제어장치에서 '메모리 읽기' 제어 신호(제어 버스)를 보낸다.
- 1001번지(주소 버스)에 저장된 명령어를 레지스터에 저장(데이터 버스)한다.
- 제어장치가 레지스터에 있는 명령어를 해석(연산결과를 저장하라)한다.
- 제어장치는 연산 결과를 저장하기 위해 레지스터에 있는 값(50)(데이터 버스)을 '메모리 쓰기' 제어신호(제어 버스)를 보내 메모리의 1005번지(주소 버스)에 저장한다.
한마디로 데이터를 읽고 난 후 값을 저장시키려면 메모리에 저장되어있는 명령어를 읽고 데이터가 세가지 버스들을 통해 서로 어우러 진다. CPU의 제어장치는 제어버스를 통해 제어신호를 보낼 수 있으며, 메모리의 주소를 읽으려면 주소 버스를 이용하고, 레지스터에 값을 저장시키려면 데이터버스를 통해 값을 이동 시킨다. 또, 제어신호를 통해 명령어를 읽고 난 후 연산과 메모리에 저장이 필요하다면 ALU에서 연산을 하며 레지스터에 저장한 후 저장 된 값을 읽고 레지스터에 저장시키며 주소버스를 이용해 저장할 주소를 찾고, 데이터버스를 통해 데이터를 이동시킨 후 저장한다.
'Computer Science > Computer Structure' 카테고리의 다른 글
컴퓨터 구조를 알아야 하는 이유 (0) | 2023.06.16 |
---|