컴퓨터
컴퓨터는 정보(information)를 처리하는 기계라고 한다.
정보는 뭘까? 정보의 최소 단위는 두 가지 상태(0, 1)을 나타내는 bit이다. 이 bit가 모인 이진 데이터가 정보이다. 그렇다면 정보를 어떻게 처리할까? 정보를 처리는 비트의 상태 변환(0에서 1로, 1에서 0으로)과 같다. 정보를 처리하려면 비트의 상태 변환을 할 수 있는 물리적인 장치가 필요하고 이 장치가 논리 회로가 된다.
논리 회로
논리 게이트는 불 대수를(Boolean algebra) 구현한 물리적인 장치다. NOT, AND, OR, XOR, NAND, NOR 게이트가 있다. 불 대수는 수의 범위가 오직 0 또는 1인 수의 논리적 계산을 수학적으로 표현한 것이다. 현대 수학의 수가 실수와 허수로 이루어져 매우 복잡하다면 불 대수의 수는 오직 0 아니면 1이며 AND, OR, NOT이라는 세 가지 기본연산만 존재할 뿐이다. 원하는 대로 정보를 처리하려면 논리 게이트 하나로는 부족하다. 논리 게이트를 여러 개 구성할 필요가 있다. 이것이 논리 회로가 된다. 논리 회로는 0과 1로 이루어진 논리 값을 일정한 논리 연산(불 대수)에 의해 1개의 논리 출력을 얻는 회로를 말한다.
그럼 0과 1을 어떻게 표현할까? 0과 1을 디지털 신호, 즉 전압으로 표현한다. 시스템마다 전압 범위가 다르겠지만 낮은 전압은 모두 0(LOW), 높은 전압은 모두 1(HIGH)로 표현한다. 논리 회로는 불연속적인 값만을 다루기 때문에 디지털 논리 회로라고도 부른다. 논리 회로를 하나의 작은 칩에 구현한 것을 집적 회로(IC)라 한다. IC는 메모리 반도체와 비메모리 반도체로 구분되는데 메모리 반도체(DRAM, SRAM, ROM, 플래시 메모리 ··)는 정보를 저장하는 집적 회로이며 비메모리 반도체(CPU, GPU, PMIC, DDI)는 정보 계산, 변환 등의 특정한 목적을 수행하는 집적 회로이다.
정리하면 정보 처리는 디지털 논리 회로로 수행하며 논리 회로의 입력과 출력은 0 또는 1이기 때문에 정보는 bit(0 또는 1)로 표현된다.
컴퓨터의 정보 처리
컴퓨터 시스템에서 정보를 처리하는 곳은 CPU의 산술/연산 장치(ALU)이다. 산술/연산 장치의 논리 회로가 어떻게 구성되어있는지 파악한다면 컴퓨터가 어떻게 정보를 처리하는지 알 수 있다.
위 그림은 ALU의 블럭 다이어그램이다. ALU의 주 목적은 메모리에 저장되어 있는 2진 데이터를 받아들이고, 제어 장치의 명령에 따라 이 데이터에 산술과 논리 연산을 실행하는 것이다. ALU는 산술과 논리 연산을 수행하는 논리 회로와 최소 2개의 플립플롭 레지스터를 포함하는데 누산기와 B 레지스터가 그것이다. 산술/논리 연산을 수행하는 논리 회로는 입력으로 B 레지스터와 누산기의 2진 데이터를 받아 제어 장치의 제어 비트에 따라 정해진 연산을 수행하고 그 결과를 누산기에 저장한다.
아래는 4비트 산술/논리 연산을 수행하는 74LS382/74HC382 ALU의 블럭 다이어그램이다.
ALU는 덧셈으로 모든 산술 연산을 수행한다. ALU 논리 회로에 전가산기(FA) 또는 반가산기(HA)로 구현한 가산기가 존재하며 가산기를 통해 두 비트열의 덧셈(A + B)이 가능하다. 뺼셈(A - B)을 한다는 것은 B를 2의 보수로 만들어 더해주는 것과 같으므로 덧셈으로 구현할 수 있다. 곱셈(A X B)을 한다는 것은 A를 B번 더하는 것과 같으므로 덧셈으로 구현할 수 있다. 나눗셈(A / B)을 한다는 것은 A를 B번 빼는 것과 같으므로 덧셈으로 구현할 수 있다. 때문에 가산기와 논리 연산을 수행할 수 있는 회로를 설계할 수 있다면 우리도 간단한 ALU를 설계할 수 있다.
위 ALU는 오직 정수 연산만 수행할 수 있다. 그럼 실수는 어떻게 처리할까? 정수 연산만이 가능한 ALU에서 소프트웨어적으로 실수 연산을 할 수 있지만 속도가 느리다. 때문에 현대 컴퓨터에서는 실수를 부동소수점으로 표현하고 부동소수점 처리를 위한 전용 논리 회로(FPU)를 만들어 ALU에 포함시켰다. 즉 정수 연산은 기존의 ALU가, 실수 연산은 FPU가 수행한다.
정보 저장
플립플롭이라는 회로를 통해 1비트의 정보를 보관, 유지할 수 있다. 그리고 이 플립플롭이 집단을 이뤄 메모리를 구성한다. 컴퓨터 시스템에서 대표적인 메모리는 주기억장치(RAM, ROM)로 CPU가 처리할 명령어와 데이터가 저장되어 있다. 주기억장치는 버스(제어 버스, 데이터 버스, 주소 버스)로 CPU와 통신한다.
컴퓨터는 만능인가?
컴퓨터는 산술/논리 연산이 가능하며 메모리에 있는 특정 명령어를 실행시킬 수 있으므로 함수, if, for와 같은 제어문도 수행 가능하다. 이로 인해 삼각함수, 미분·적분 등의 복잡한 계산은 물론 영상 재생, 문서 편집, 웹 브라우저 등의 응용 프로그램도 수행할 수 있다.
현대의 대부분의 컴퓨터는 범용 컴퓨터(general - purpose computer)이다. NOT, AND, OR 게이트만으로 모든 계산을 할 수 있고 각 게이트는 NAND 게이트로 바꿀 수 있으므로 NAND 게이트만으로도 모든 계산을 할 수 있다. 이렇듯 컴퓨터로 모든 계산이 가능하고 이 컴퓨터를 어떤 목적으로 쓸지는 소프트웨어에게 달려있다.
그렇다면 컴퓨터는 모든 문제를 해결 할 수 있을까? 컴퓨터는 튜링 머신으로 계산가능한 모든 문제를 풀 수 있지만 정지 문제(Halting Problem) 같은 튜링 머신으로 풀 수 없는 문제는 풀 수 없다.
컴퓨터의 창시자
- 앨런 튜링 : 튜링 머신을 개발함으로써 컴퓨터의 기반을 제시
- 폰노이만 : 범용 컴퓨터를 처음으로 만듬
폰 노이만 아키텍처
전통적인(classical) 컴퓨터의 아키텍처는 폰 노이만 아키텍처(Von Neumann Architecture)를 기반으로 한다. 폰 노이만 아키텍처를 아래와 같다.
폰 노이만 아키텍처는 내장형 프로그램(Stored Program) 방식이다. 이 방식 전에는 하드웨어 프로그램 방식으로 에니악 컴퓨터처럼 프로그램을 바꿀려면 논리 회로를 직접 바꿔야 했다. 하지만 내장형 프로그램 방식은 프로그램만 바꾸면 되니 매우 편리하며 다양한 목적으로 사용이 가능해져 범용성이 향상되었다.
폰 노이만 아키텍처는 중앙처리장치(CPU), 메모리, 프로그램 세 가지 요소로 구성된다. CPU와 메모리는 서로 분리되어 있고 둘을 연결하는 버스를 통해 명령어와 데이터의 읽고 쓰기가 가능하다. CPU가 메모리로부터 명령어를 가져오는 fetch, 명령어를 해석하는 decode, 명령어를 실행하는 execute, 처리 결과를 메모리에 저장하는 store 순서의 사이클로 프로그램을 실행한다. 또한 폰 노이만 아키텍처는 내장 메모리 순차 처리 방식을 기반으로 하기에 한 번에 하나의 명령어를 실행한다.
폰 노이만 아키텍처는 두 가지 단점이 있다. 첫 번째로 폰 노이만 병목 현상(Von-Neumann Bottleneck)이다. CPU가 아무리 빠르게 명령어를 실행해도 명령어와 데이터를 메모리로부터 읽는 속도와 처리 결과를 메모리에 쓰는 속도, 다시 말해 메모리 접근 속도가 느리다면 프로그램 실행 속도는 느려질 수 밖에 없다. 즉 아직 메모리로부터 명령어 또는 데이터가 도착하지 않아 CPU가 대기하는 현상을 폰 노이만 병목 현상이라한다. CPU와 기억 장치의 성능 차이가 심할 경우 전체 시스템의 성능 저하를 야기할 수 있는 것이다. 폰 노이만 병목 현상을 해결하기 위해 하버드 구조, 메모리 계층 구조, NUMA 등이 나왔으며 이들의 목표는 CPU가 최대한 대기 없이 명령어를 실행하는 것이다. 두 번째로 병렬 처리에 비효율적이다. 폰 노이만 아키텍처, 즉 CPU는 순차적으로 한 번에 하나의 명령어를 실행하기에 순차 처리 작업을 수행하는데 탁월하다. 하지만 병렬로 처리할 수 있는 작업도 순차적으로 수행한다면 효율이 좋지 못하다. 이를 해결하기 위해 한번에 여러 명령어를 실행할 수 있는 멀티 프로세서 시스템이 나왔으며 다수의 프로세서 또는 멀티 코어 프로세서로 병렬 처리 작업도 수행할 수 있게 되었다.
'Computer Science > OS' 카테고리의 다른 글
[OS - 4] IPC (0) | 2022.11.21 |
---|---|
[OS - 3] 프로세스 (0) | 2022.11.15 |
[OS - 2] 운영체제 개요 (2) (0) | 2022.11.09 |
컴파일 VS 인터프릿 (0) | 2022.08.11 |
환경 변수 (0) | 2022.08.09 |