컴퓨터의 구성
컴퓨터 시스템은 하드웨어, 소프트웨어로 구성된다.
하드 웨어는 컴퓨터를 구성하는 기계적 장치이고 소프트 웨어는 하드웨어의 동작을 지시하고 제어하는 명령어의 집합이다.
오늘은 하드웨어만 알아보자.
하드웨어는 중앙처리장치, 기억 장치, 입출력장치로 구성되며 각 장치는 시스템 버스로 연결 되어있다.
중앙처리장치
인간의 두뇌에 해당하는 장치로 CPU라고도 한다. 주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고 명령어의 수행순서를 제어한다.
중앙처리장치는 비교와 연산을 담당하는 산술논리연산장치와 명령어의 해석과 실행을 담당하는 제어 장치, 임시 데이터 기억장소인 레지스터로 구성된다.
산술논리연산장치 | 사칙연산, 논리연산과 같은 연산을 수행할 회로로 구성되어 있는 일종의 계산기임. CPU가 처리할 명령어를 실질적으로 연산하는 요소라고 보면 됨 |
제어장치 | 명령어를 해석해 제어 신호라는 전기 신호를 보내는 장치임. 제어 신호란 부품을 작동시키기 위한 신호를 말한다. CPU가 메모리를 향해 제어 신호를 보내면 메모리를 작동시킬 수 있고, 입출력장치를 향해 제어 진호를 보내면 입출력장치를 작동시킬 수 있음 |
*레지스터 | CPU 내부의 작은 임시저장 장치로 데이터와 명령어를 처리하는 과정의 중간값을 저장한다 |
*레지스터: 가장 중요한 구성 요소임. CPU가 처리하는 명령어는 반드시 레지스터에 저장되기 때문에 레지스터 값만 잘 관찰해도 프로그램이 어떻게 실행되는지 가장 낮은 단계에 파악할 수 있다.
기억장치
프로그램, 데이터, 연산의 중간 결과등을 저장하는 장치로 주기억장치와 보조기억장치로 구분된다.
주기억장치
메인 메모리(주기억장치) 역할을 하는 하드웨어는 RAM과 ROM이 있는데 실행중인 프로그램에 필요한 데이터를 일시적으로 저장한다.
중요한 것은 실행중인 프로그램을 저장한다는 것이다. 프로그램이 실행되려면 그 프로그램을 이루는 데이터와 명령어가 메모리에 저장되어있어야한다.
CPU가 메모리에 접근할 때 컴퓨터가 빠르게 작동하기 위해서는 메모리 속 데이터와 명령어가 중구난방으로 저장되어 있지 않아야한다. 그래서 사용되는 개념이 주소임.
램은 전원 공급이 중단되면 저장된 정보가 모두 지워지는 휘발성 메모리로 정보를 기록하고 해독하는 장치이다. 정보의 저장 위치에 관계없이 일정한 시간 내에 읽거나 쓸 수 있는 임의 접근 기억장치이다. 램은 제조 기술에 따라 DRAM과 SRAM으로 구분된다.
DRAM
주기억장치로 사용되며 가격이 저렴하고 전력 소모가 적으며 동작 속도가 빠르고 집적도가 높다. 따라서 대용량 메모리로 쓰기에 적합하여 주기억장치로 사용된다.
SRAM
전원이 공급되는 동안 정보가 계속 유지된다. DRAM에 비해 회로가 짧고 전력 소모가 많으며 가격 또한 비싸다. 하지만 동작 속도가 빨라 주로 캐시메모리에 사용된다.
캐시메모리는 중앙처리장치와 주기억장치 사이에 존재하면서 성능저하를 막아준다.
캐시메모리는 주기억장치의 내용 전체가 아니라 일부만 저장한다. 중앙처리장치는 주기억장치로부터 프로그램이나 데이터를 가져올 때 우선적으로 원하는 정보가 캐시 메모리에 존재하는지 검사한다. 원하는 정보가 캐시메모리에 존재하면 바로 읽어오고, 존재하지 않으면 주기억장치에서 캐시메모리로 저장한 후 읽어온다.
ROM
롬은 저장된 프로그램과 데이터를 읽기만 하는 기억장치이다. 전원이 공급되지 않아도 저장된 정보를 영구적으로 보존할 수 있는 비휘발성 메모리이다. 시스템 동작 중 변하지않는 프로그램이나 데이터를 저장하는 데 주로 사용된다.
보조기억장치
보조기억장치는 한정된 기억 용량을 보충하기 위해 사용된다. 주기억장치에 비해 속도는 느리지만 많은 자료를 영구적으로 보관할 수 있다.
보조기억장치도 비휘발성 저장장치이다. 자기테이프, 하드디스트, 광디스크(CD-ROM,DVD,블루레이),플래시 메모리(SSD,USB메모리),플로피 디스크와 같은 저장장치가 보조 기억장치의 일종이다. 요즘에 자주 사용되는 보조기억장치는 하드디스크 드라이브,플래시 메모리 기반 SSD이다.
입출력 장치
입력장치는 문자, 그림, 소리 등의 자료를 컴퓨터 내부러 입력하는 장치이다. 출력장치는 컴퓨터 내부에서 처리한 정보를 인간이 인지할 수 있는 다양한 형태로 변환하여 외부로 표현하는 장치이다. 이러한 입출력장치를 통틀어 주변장치라고 한다.
입력장치로는 마우스 키보드 등이있고 출력장치는 스피커, 모니터, 프린트 등이 있다.
메인 보드와 버스
앞에서 설명한 핵심 부품들은 공중에 떠 있지 않는다. 부품들을 고정하고 연결하는 기관에 연결되어 있는데 이 기판을 메인 보드 혹은 마더 보드라고 부른다.
메인 보드에 연결된 부품들은 각자 역할을 적절히 수행하기 위해 서로 정보를 주고 받는다. 이때 각 컴퓨터 부품들이 정보를 주고받는 통로를 버스라고한다. 핵심 부품들을 연결하는 시스템 버스가 가장 중요하다.
시스템 버스
시스템 버스는 42페이지 그림과 같이 하드웨어 구성 요소를 물리적으로 연결하며, 각 구성 요소가 다른 구성요소로 데이터를 보낼 수 있도록 통로를 제공한다. 용도에 따라 데이터 버스, 주소버스, 제어버스로 구별한다.
데이터 버스
중앙처리장치와 기타(기억장치, 입출력장치등) 사이에서 데이터를 전달하는 통로이다. 기억장치와 입출력장치의 명령어와 데이터를 중앙처리장치로 보내거나, 중앙처리장치의 연산결과를 기억장치와 입출력장치로 보내므로 양방향 버스이다.
주소버스
데이터를 정확히 실어 나르려면 기억장치 주소를 지정해 주어야 한다. 주소버스는 중앙처리장치가 주기억장치나 입출력장치로 기억장치 주소를 전달하는 통로이므로 단방향 버스이다. 주소 선의 수는 시스템의 기억장치 용량을 결정하는데 수가 많을수록 접근할 수 있는 기억용량이 커진다
제어 버스
주소 버스와 데이터 버스는 모든 장치에 공유되므로 이것을 제어할 수단이 필요하다. 제어 버스는 중앙처리 장치가 기억장치나 입출력장치에 제어 신호를 전달하는 통로이다. 제어버스는 읽기 동작과 쓰기 동작을 모두 수행하므로 양방향 버스이다.
저장장치의 계층 구조
위로 올라갈 수록 데이터를 읽고 쓰는 접근 속도가 빨라지지만 기억용량이 줄어들고 비트당 저장 비용이 늘어난다.
1. CPU와 가까운 저장장치는 빠르고, 멀리 있는 저장장치는 느리다.
2. 속도가 빠른 저장장치는 용량이 작고, 가격이 비싸다.
컴퓨터가 이해하는 정보
CPU는 기본적으로 0과 1만 이해한다. 여기서 0과 1을 나타내는 가장 작은 정보의 단위를 비트라고한다. N비트는 2ᴺ개의 정보를 표현할 수 있다.
바이트는 문자를 나타내는 최소 단위로, 8비트가 모여 1바이트가 된다. 보통 영문자나 숫자, 특수문자는 1바이트로 표현하고, 한글이나 한자는 2바이트로 표현한다.
워드는 명령어나 연산을 처리하는 기본 단위로, 기억장치에 한 번 접근하여 얻을 수 있는 데이터의 양을 나타낸다. 만약 CPU가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트가 되고 , 한번에 32비트를 처리할 수 있다면 32비트가 되는것이다.
데이터 0과 1로 숫자 표현하기
CPU는 컴퓨터 내부에서 2진법을 사용해 2 이상, 0 이하의 수를 이해한다. 우리가 일상적으로 사용하는 10지법 숫자 9를 넘어가는 시점에 자리 올림을 해 0부터 9까지 10개의 숫자만으로 모든 수를 표현하듯, 컴퓨터가 사용하는 2진법 또한 숫자 1을 넘어가는 시점에 자리올림해 0과 1, 2개의 숫자만으로 모든 수를 표현한다. 2진수로 표현된 숫자 뒤에 아래첨자로 (2)를 붙이거나 2진수 앞에 0b를 붙인다
16진법
2진법에는 단점이 있다. 표현하는 숫자의 길이가 너무 길어진다는 점이다. 그래서 컴퓨터가 이해하는 정보를 표현할 때는 2진수와 더불어 16진수도 함께 사용한다. 16진수를 나타내는 16진법은 숫자 15를 넘어가는 시점에 자리올림을 하는 숫자 표현 방식이다. 16진법 체계에서는 10진수 10, 11, 12, 13, 14, 15 를 각각 ABCDEF로 표기한다.
부동소수점
const a = 0.1
const b = 0.2
const c = 0.3
if(a + b === c){
console.log("Equal")
}else{
console.log("NotEqual")
}
소스 코드 결과는 당연히 Equal이라 생각 할 수 있지만 실제 결과는 NotEqual 이다.
컴퓨터 내부에서는 소수점을 나타내기 위해 대표적으로 부동소수점 표현방식을 이용하는데. 이 방식의 정밀도에 한계가 있기 때문이다.
부동소수점은 소수점이 고정되어 있지 않은 소수 표현 방식으로 필요에 따라 소수점의 위치가 이동할 수 있고 유동적이라는 의미에서 부동 소수점이라는 이름이 붙었다.
10진수 123.123이라는 수를 m * 10^n의 꼴로 나타내면 1.23123 * 10^2으로 표현할 수도 있고 1231.23 * 10^-1으로 표현할 수도 있다.
여기서 제곱으로 표현된 2와 -1을 지수, 1.23123, 1231.23을 기수라고 한다.
2진수에서도 소수를 유사하게 m * 2^n의 꼴로 나타낸다. 2의 지수가 양수일 떄는 2소수점을 왼쪽으로 이동한 횟수, 2의 지수가 음수일때는 소수점을 오른쪽으로 이동한 횟수라고 생각해도 된다.
'cs' 카테고리의 다른 글
컴퓨터구조(3,4,5) (0) | 2025.02.05 |
---|
댓글