현재 우리가 사용하고 있는 컴퓨터는 IBM사에서 1981년 처음 판매한 IBM PC와 거의 유사한 형태를 가지고 있습니다. 30년이 지난 시점에도 기본적인 컴퓨터의 구조는 계속 이어져 오고 있습니다. 마치 자동차가 처음 등장한 이래 큰 변화를 가지지 않은 것과 마찬가지 입니다. 한가지 다른 점은 30년전과 비교해 훨씬 작고 가벼우며, 성능은 100만배 더 뛰어난 특징을 가지게 되었습니다.
폰 노이만 아키텍처란?
컴퓨터의 단순한 아키텍처는 프로세서, 주기억장치, 보조기억장치, IO 장치들, 그리고 이것들을 연결해 정보를 전달하는 버스로 구성됩니다. PC와 태블릿, 스마트폰 모두 이와 유사한 형태의 아키텍쳐를 가지고 있습니다. 차이점은 스마트폰에는 전화기능을 위한 통신모듈과 GPS 수신기 등의 추가 디바이스가 장착된다는 점 뿐입니다.
사실 위와 같은 프로세서와 명령어를 저장하기 위한 메모리, 입력/출력 장치가 달리고 이를 연결하는 버스가 모든 장치들을 통과하는 형태의 아키텍쳐는 1940년 부터이어지는 컴퓨터의 표준입니다. 흔히 폰 노이만 아키텍처라고 부릅니다. 1946년 이 구조를 기술한 존 폰 노이만의 이름을 딴 것입니다.
프로세서란(Processor)?
프로세서는 산술연산을 하며, 데이터를 이동시키며, 컴퓨터 작업을 제어하는 두뇌의 역할을 담당합니다. 프로세서가 처리가능한 연산은 덧셈, 뺄셈, 추가 등으로 몇개 안되지만 초당 수십억회의 연산이 가능해 상상을 초월한 성능을 보여줍니다.
컴퓨터를 구매할 때 흔히 2.2GHz 듀얼 코어 인텔 Core i7 등으로 표기되어 있는 프로세서 성능을 접하게 됩니다. 프로세서 안에는 코어(Core)라는 독립적인 연산장치가 여러개 달릴 수 있는데, 통틀어 프로세서라고 표현합니다. 최근 인텔 11세대 프로세서는 8코어를 지원합니다.
2.2GHz 부분은 프로세서가 1초에 처리가능한 연산의 횟수를 의미합니다. 프로세서가 연산을 처리하는 단위는 클록(clock)을 사용합니다. 독일의 공학자인 하인리히 헤르츠의 이름을 따서 1초에 한번 뛰는 것을 1Hz라고 표현합니다. 참고로 하인리히 헤르츠는 1888년 전자기파를 만드는 방법을 개발해 라디오와 무선 시스템의 기틀을 잡았습니다. 현재 방송국들은 주파수를 102.3MHz 와 같이 백만 Hz 단위로 방송을 제공하고 있습니다.
현재의 컴퓨터들은 대부분 수십억 단위의 헤르츠를 지원합니다. 즉, 우리가 사용하는 일반적인 PC에 장착된 프로세서가 2.2GHz라는 것은 1초당 22억번의 연산이 가능하다는 의미입니다. 참고로 메가(M)는 10의 6승이며, 기가(G)는 10의 9승입니다. 인간의 심장박동수가 하루에 약 10만번 뛴다는 것을 생각하면 우리의 프로세서의 각 코어들은 70년동안 뛸 심장박동수를 단 1초만에 뛰는 것입니다.
주기억장치(Primary Memory)?
프로세서가 연산을 처리하기 위해서는 연산자와 데이터가 필요합니다. 주기억장치는 프로세서가 현재 작업중인 데이터와 명령어를 저장하고 있습니다. 또한 메모리에는 다른 명령어를 적재해서 프로세서가 다른 연산을 할 수 있도록 합니다. 덕분에 우리는 글을 쓰면서 노래도 듣고, 인터넷 서핑도 동시에 할 수 있게 됩니다. 현재 활성화된 프로그램의 명령어들은 모두 주기억장치에 저장됩니다.
보통 주기억장치를 RAM(Random Access Memory)라고 하는데 프로세서가 메모리에 접근할 때 저장된 위치와는 별개로 접근 속도가 거의 동일하기 때문입니다. 예를 들어 예전에 사용하던 LP판이나 비디오테잎은 데이터에 접근하기 위해 빨기감기나 뒤로감기를 해야하지만 RAM은 동일한 속도로 데이터에 접근이 가능합니다.
RAM에 저장된 데이터는 휘발성입니다. 전원이 꺼지면 데이터는 사리집니다. 주기억장치는 프로세서와 근접한 저장장치이므로 용량이 크면 클 수록 더 많은 프로그램들을 한번에 처리할 수 있게 됩니다. 주기억장치 메모리 용량이 작으면 비활성화된 프로그램들의 일부를 옮겨서 새로운 작업을 위한 공간을 마련해야 하므로 시간이 소요됩니다.
주기억장치는 보통 4GB~8GB로 제공됩니다. 개발자 혹은 전문 디자이너들은 동시에 많은 데이터와 연산을 필요로 하는 프로그램을 작동시키므로 16GB이상의 메모리를 장착한 PC를 사용합니다.
보조기억장치(HDD vs SDD)?
주기억장치는 데이터 휘발성이며 용량도 제한적이라는 단점이 있습니다. 이 때문에 전원이 꺼져도 데이터를 유지할 수 있는 보조기억장치가 사용됩니다. 보조기억장치에는 크게 SSD(Solid State Drive)와 HDD(Hard Disk Drive)가 있습니다.
보조기억장치에 저장된 데이터와 연산자들은 비휘발성으로 장기간 보관이 가능합니다. 프로그램이 실행되어 필요할 때 주기억장치로 일시적으로 옮겨져 프로그램을 실행하게 됩니다.
HDD는 회전하는 금속 표면에 있는 자성 물질의 미세한 영역이 자성을 띄는 방향을 설정해 정보를 저장합니다. 데이터는 동심원을 따라 나있는 트랙에 저장되고, 트랙 간 이동하는 센서를 이용해 데이터를 읽어옵니다. 디스크 표면은 1분에 5400회 정도 회전해서 데이터를 가져옵니다.
금속 표면의 특정 트랙에 접근하기 위해서는 약 1/100초가 소요됩니다. 접근 후 데이터를 전송하는 속도는 100MB/s입니다.
최근에 나오는 PC들은 대부분 SSD를 보조기억장치로 사용합니다. SSD는 디스크 드라이브와 같이 회전장치가 아닌 플래시 메모리(Flash Memory)를 사용합니다. 플래시 메모리는 개별 조자에 전하를 유지하는 회로에 정보가 전하 상태로 저장됩니다. 즉, 비휘발성 입니다.
HDD나 SSD 모두 하드웨어적으로 자성에 의해 데이터를 저장하거나 전하에 의해 데이터를 저장하지만, 우리가 PC에서 파일 탐색기를 사용했을 때는 이를 조직화된 구성으로 사용자에게 표시해줍니다.
버스(Bus)?
PC에는 마우스, 키보드, 이더넷, 프린터 등 다양한 입출력장치가 연결됩니다. 모든 구성요소들은 버스라는 여러개의 전선으로 연결되어 있습니다. 프로세서와 주기억장치를 연결하는 데이터버스는 짧고 빠르지만 가격이 비쌉니다. 또 어떤 버스는 외부로 드러나있게 되는데, 간편하게 데이터를 연결하고, 외부 장치를 연결할 수 있는 USB(Universal Serial Bus, 범용 직렬 버스)가 대표적인 예시입니다.
PC와 유사하게 스마트폰도 폰 노이만 구조를 그대로 차용하고 있습니다. 차이점은 PC보다 더 많은 외부 입출력장치들이 달려있다는 점과 USB micro 5pin 혹은 USB-C 타입이 차용된다는 점 정도 입니다. 또한 배터리 효율을 위해 플래시 메모리가 달리는 점등이 다르지만 기본적인 구조는 PC와 동일합니다.
PC의 각 요소들을 연결하는 버스에는 크게 3가지 버스가 있습니다. ① 데이터를 전송하는 데이터 버스(Data Bus), ② 연산자를 전달하는 제어 버스(Control Bus), ③ 데이터와 연산자의 주소를 전달하는 주소 버스(Addresss Bus)가 있습니다.
'Programming' 카테고리의 다른 글
[Docker] 도커(Docker) 사용법 (0) | 2022.07.27 |
---|---|
[Hardware] L1, L2, L3 캐시 메모리(Cache Memory)란? (0) | 2022.07.27 |
[WebSocket] 웹 소켓(Web Socket) 이란? (0) | 2022.07.18 |
[Node.js] PNG to webp Converter 구현하기 (0) | 2022.06.19 |
[Security] CSRF란? (0) | 2022.06.14 |
댓글