본문 바로가기
컴퓨터 공학/컴퓨터 구조

컴퓨터 구조(Computer Science)란? (하드웨어의 CPU, 기억장치, 입출력장치)

by devnyang 2024. 3. 17.
반응형

컴퓨터구조

 

컴퓨터 과학에서 컴퓨터 시스템의 기능(functionality), 조직(organization), 구현(implementaion)에 대한 법칙과 방법을 통칭하며 컴퓨터가 동작하는 방식을 기반으로, 프로그래밍이 동작하는 것이다.

 

* 폰노이만 구조

- 최초의 프로그램이 내장된 컴퓨터 방식으로, 하드웨어적으로 전선을 다시 배치할 필요 없이 소프트웨어만 교체해 다른 연산을 수행할 수 있다.

 

즉, 먼저 연산의 수행과 관련된 명령어와 연산에 필요하거나 결과로 나온 데이터를 저장장치(메모리)에 보관하고 순차적으로 메모리에 저장된 내용을 꺼내 지시대로 연산 수행하는 방식이다. 오늘날의 모든 컴퓨터는 이 방식을 따른다.


컴퓨터 시스템

 

하드웨어(Hardware)와 소프트웨어(Software)로 구성되어 있다.

 

- 하드웨어(Hardware) : 소프트웨어를 저장하고 실행하는 데 필요한 물리적 장치로, 입력, 출력 스토리지, 외부 구성요소로 구성된다. CPU(중앙처리장치), Memory(주기억장치), Storage(보조기억장치(SSD,HDD)), Network, 모니터, 키보드 등이 이에 속한다.

 

*Storage는 1차 스토리지와 2차 스토리지로 나누기도 하고 스토리지(혹은 하드디스크)와 메모리로 나누기도 한다.

 

 

- 소프트웨어(Software) : 사용자가 하드웨어와 상호 작용하여 특정 작업을 수행할 수 있도록 하는 명령모음으로, 시스템 소프트웨어와 응용 소프트웨어로 구분된다. 운영체제(리눅스, 윈도우, 맥 등), 응용프로그램이 이에 속한다.


하드웨어

 

우선, 컴퓨터 구조 중 하드웨어부터 자세히 살펴보면 컴퓨터 하드웨어는 CPU, 주기억장치(메모리), 보조기억장치(HDD, SSD 등), 입력장치와 출력장치로 구성되어 있다. 그리고 이 장치들은 자료교환을 위해 버스라는 공용통로를 두고 연결되어 있다.

 

하드웨어의 구조
하드웨어의 구조

CPU

메모리에 저장된 명령어를 읽어들이고 해석하고 실행한다. 모든 컴퓨팅 장치의 두뇌 역할을 한다. 메모리에서 명령을 가져와서 필요한 작업을 수행하고 출력을 다시 메모리로 보내며, 운영 체제 및 애플리케이션을 실행하는 데 필요한 모든 컴퓨팅 작업을 처리한다. CU, ALU, 레지스터들로 구성되어 있다.

(* 단기기억 담당 = RAM           장기기억 담당 = SDD, HDD        사고를 담당하는 대뇌피질 = CPU )

 

- CU(제어장치, Control Unit) : 명령을 해석하고 명령의 실행을 위한 제어신호를 발생시킨다. (저장된 값을 읽고 싶을 땐 메모리 읽기, 저장하고 싶을 땐 메모리 쓰기)

- ALU(Arienthematic Logic Unit) : 산술, 논리 연산 장치로, CU의 신호에 따라 실질적인 산술(+, -, *, /), 논리 연산(if문,...)이 일어나게 된다.

- 레지스터 : CPU 내부에 소량으로 있는 고속의 임시기억장치

 

*레지스터

명령처리에 필수적인 레지스터(MAR, MBR, PC, IR, ACC) / 범용레지스터(R1, R2)

 

- MAR(Memory Address Register) : 메모리의 주소 저장.

 

- MBR(Memory Buffer Register) : 메모리로부터 읽어왔거나 메모리에 기록할 데이터를 저장. (= MDR)

 

- PC(Program Counter) : 다음번에 실행할 명령어의 위치(주소) 저장. 한번 읽힐 때마다 값이 1씩 증가한다.(특별한 일이 없다면 순차적으로 다음 메모리에 접근.)

 

- IR(Instruction Register) : 현재 실행중인 명령어 보관

 

- ACC(누산기, Accumulator) : ALU에서의 연산의 결과값을 일시적으로 보관.

 


Memory(메모리)

프로그램과 프로그램 수행에 필요한 데이터를 저장한다. 주기억장치(내부 기억장치)와 보조기억 장치(외부 기억장치)로 나뉘어진다. 

 

- 주기억장치(내부 기억장치, Computer Memory, Primary Memory)

컴퓨터 내부에서 현재 CPU가 처리하고 있는 내용을 저장하고 있는 기억장치(현재 프로그램의 명령어와 데이터를 저장)로, 비교적 용량이 작고, 처리속도가 빠르다. CPU의 명령에 의해 기억된 장소에 직접 접근하여 읽고 쓸 수 있다. 특정 프로그램을 실행하면, 컴퓨터는 보조기억장치에 저장된 데이터를 주기억장치로 불러와 CPU가 해당 데이터를 처리하는 과정으로 실행된다. 

 

1. ROM(Read Only Memory)

전원이 끊겨도 기록된 데이터들이 소멸되지 않는 비휘발성 메모리로, 데이터를 저장한 후 반영구적으로 사용할 수 있다. 오직 기억된 데이터를 읽기만 가능하며, 변화시키면 안되는 BIOS(컴퓨터의 부팅을 위한) 같은 주요 데이터가 저장된다. 그러나 오늘날에는 지우고 새로 쓸 수 있는 ROM도 존재하나, RAM과 달리 일부만 값을 수정하며 보관하는 방식으로 동작하지 않는다.(PROM(1번 다시 쓰기가능),EPROM(무한),EEPROM(무한))

 

2. RAM(Random Access Memory)

ROM과 달리 읽고 쓰기가 가능하며, 응용 프로그램, 운영체제 등을 불러와 CPU가 작업할 수 있도록 하는 기억장치이다. 데이터를 읽는 속도와 기록하는 속도가 같고 프로그램을 로딩하거나 데이터를 임시 저장하는 것에 사용된다. 전원이 끊어지면 데이터가 전부 지워진다.(휘발성 메모리). 그렇기 때문에 실행하고 있는 파일을 보조기억장치에 수시로 저장한다.

 

- DRAM(동적 램, Dynamic RAM) : 캐퍼시티(축전지)로 구성. SRAM에 비해 상대적으로 느리지만 저렴하다.

- SRAM(정적 램, Static RAM) : 플립플롭 회로로 구성되어 매우 빠르다. 그러나 가격이 비싸 보통 DRAM의 느린 속도를 보완하기위한 캐시 등에 사용된다.

 

 

3. 기타메모리

 

- 캐시 메모리(Cache Memory)

고속의 처리 장치인 CPU와 주기억장치 사이의 속도 차이를 완화시키기 위해 고속 버퍼(임시)메모리로, CPU와 주기억장치 사이에 존재한다.

 

- 가상 메모리(Virtual Memory)

보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 메모리 기법으로, 주기억장치보다 큰 프로그램을 불러와 실행해야 할 때 유용하다.

 

- 버퍼 메모리(Buffer Memory)

두 개의 장치가 데이터를 주고받을 떄 두 장치 간의 속도 차이를 해결하기 위해 중간에 데이터를 임시로 저장해 두는 공간(키보드 버터, 프린터 버터 등)이다.(캐시메모리도 일종의 버퍼에 속한다.

 

- 연관 메모리(Associative Memory)

주소를 참조하여 데이터를 읽어오는 방식이 아닌 저장된 내용의 일부를 이용하여 기억장치에 접근하여 데이터를 읽어온다.(Hash와 비슷) 가상 메모리나 캐시 메모리의 주소변환 테이블에서 사용된다. 구성요소로는 검색자료(데이터), 키(마스크) 레지스터, 매치 레지스터(일치 지시기)가 있다.

 

- 플래시 메모리(Flash Memory)

EEPROM의 일종으로 비휘발성 메모리이며, SSD에 많이 쓰인다.

 

 

- 보조기억장치

주기억장치의 용량 부족을 보완하기 위해 쓰는 외부 기억장치로, 주기억장치보다 속도가 느리다. 휘발성의 띠지 않아 드라이브에 저장된 정보는 컴퓨터의 전원을 끄더라도 유지된다. 대표적으로 HDD와 SSD가 있다.

 

1. HDD(Hard Disk Driver)

물리적인 디스크를 고속으로 회전시켜 데이터를 저장하는 장치로, 회전으로 인해 소음이 발생할 수 있고 디스크에 물리적으로 저장하기 때문에 충격에 약하다. 부피가 크로 결정적으로 외부 환경에 영향을 많이 받는다.

가장 대중적인 보조기억장치였으나, 크기가 작고 속도가 향상된 SSD가 나오면서 최근엔 많이 소멸됐다.

 

2. SSD(Solid State Driver)

플래시 메모리를 사용하고 반도체 기반의 정보를 저장하는 기억장치이다. HDD의 느린 속도와 소음 등의 단점을 해결하기 위해 개발된 장치로, 물리적으로 데이터를 저장하지 않고 전기적으로 데이터를 저장한다. 때문에 HDD에 비해 속도가 월등히 빠르고 소음도 발생하지 않으나 가격이 높다.

 


입출력장치(IO Devices)

컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치.

 

- 입력장치 : 마우스, 키보드, 터치패드 등

- 출력장치 : 모니터, 프린터, 스피커 등

 


버스(Bus)

메인보드(mainboard = 마더보드(mother board)) 내부에 있는 통로이다. CPU, Memory, IO Devices를 연결해주는 장치로, 메인보드에 연결된 부품들끼리 데이터를 송수신해준다. 이 중, 컴퓨터의 4가지 핵심 부품을 연결하는 가장 중요한 버스는 시스템 버스이다.

 

 

*시스템버스

주소버스, 데이터 버스, 제어 버스로 구성되어 있다.

 

- 주소 버스(address bus) : 주소를 주고받는 통로.

- 데이터 버스(data bus) : 명령어와 데이터를 주고받는 통로.

- 제어 버스(control bus) : 제어 신호를 주고받는 통로.

 

ex) 명령어 읽기 : CPU가 제어버스로 메모리 읽기 신호를 내보낸다. -> 주소버스로 읽고자 하는 주소를 내보낸다. ->메모리는 데이터 버스로 CPU가 요청한 주소에 있는 내용을 보낸다.

 

      값 저장 : CPU가 데이터 버스로 메모리에 저장할 값을 내보낸다. -> 주소버스로 저장할 주소를 내보낸다. -> 제어 버스를 통해 메모리 쓰기 제어 신호를 내보낸다.

 

 

 

But, CPU, 메모리, 입출력 장치들이 모두 이 버스를 통해 자료교환을 진행하는데, 한번에 하나의 장치만 버스에 접근이 가능하다. 폰노이만 구조에선 주기억장치로 DRAM을 사용하는데 이것이 CPU의 동작속도보다 느리기 때문에 속도차이로 인해 CPU가 메모리의 응답까지 기다리게된다.(병목 현상)

 

따라서, 이런 현상을 완화하고자 하버드 구조가 생긴다.

하버드 구조 : 명령어와 데이터를 나눠서 보관해서, 제어신호, 명령어, 데이터 각각을 위한 전용버스를 구성한다.

(--> 명령을 읽으면서 동시에 데이터를 저장하는게 가능해졌다.)

 

 

반응형