목록Dev. Study Note/Computer Architecture (7)
Priv's Blog
1. 장치 컨트롤러, 장치 드라이버 새로 산 프린터기를 컴퓨터에 연결했을 때 '장치 드라이버 마법사' 등의 프로그램이 자동으로 실행되는 모습을 보았을 것이다. 장치 컨트롤러, 장치 드라이버는 컴퓨터와 다양한 입출력장치들의 상호작용을 위해 필수적인 프로그램이다. 입출력장치는 종류가 굉장히 다양하고, 그 종류마다 속도, 데이터 전송 방식 등이 모두 제각각이다. 또한 외부 입출력장치들은 CPU, 메모리의 속도와 비교했을 때 압도적으로 속도가 느리다. 이를 '데이터 전송률이 낮다'라고 표현한다. 1.1) 장치 컨트롤러 장치 컨트롤러는 아래와 같은 역할을 담당하여 위에서 언급한 다양한 문제들을 해결해 줄 수 있다. CPU, 입출력장치 간의 통신 중계 오류 검출 데이터 버퍼링 장치 컨트롤러는 데이터 레지스터, 상태..
1. 보조기억장치 보조기억장치의 종류는 실로 다양하다. CD, SD카드, 플로피 디스크, HDD, SSD 등이 그것이다. 1.1) HDD HDD는 하드 디스크 드라이브의 약자이다. 자기적인 방식으로 데이터를 저장하기 때문에 자기 디스크라고도 부른다. 플래터: 자기적인 방식으로 데이터가 기록되는 둥근 원판. 스핀들: 플래터를 회전시키는 구성 요소. RPM으로 속도를 나타낸다. 헤드: 플래터에 데이터를 읽고 쓰는 구성 요소. 일종의 바늘처럼 동작한다. 디스크 암: 헤드를 원하는 위치로 배치해 주는 구성 요소. HDD는 CD, LP에 비해 상당히 많은 양의 데이터를 기록하고 읽어야 하기 때문에 여러 겹의 플래터로 구성되어 있다. 또한 플래터는 양면으로 구성된다. 플래터와 헤드는 겹겹이 쌓여 있는 구조로 이루어..
1. RAM RAM은 대표적인 주기억장치에 해당하는 메모리이다. DRAM, SRAM, SDRAM, DDR SDRAM 등이 있다. 1.1) RAM의 특징 RAM은 휘발성 저장 장치에 해당하기 때문에 전원이 꺼지면 저장된 데이터들이 모두 지워진다. 이 단점 때문에 비휘발성 저장 장치에 해당하는 HDD, SSD 등의 보조기억장치를 별도로 사용하는 것이다. RAM은 주기억장치이기 때문에 CPU가 직접 접근할 수 있다. 그래서 일반적으로는 RAM에 실행할 대상을, HDD/SSD에는 보관할 대상을 저장한다. CPU가 실행할 대상이 보조기억장치에 있다면, 보조기억장치의 데이터를 복사해 RAM으로 가져와 실행한다. 1.2) RAM의 용량 및 성능 RAM의 성능을 결정하는 가장 기본적인 정보가 용량이다. RAM의 용량이..
1. ALU와 제어장치 ALU는 CPU 내부에서 계산을 담당하고, 제어장치는 명령어를 읽고 해석하는 역할을 담당한다. 1.1) ALU ALU는 피연산자와 수행할 연산을 가지고 계산을 수행한다. ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다. 이렇게 받아들인 피연산자, 제어 신호를 가지고 ALU는 산술 연산, 논리 연산 등을 수행한다. ALU가 수행한 연산의 결과는 특정 숫자, 문자, 메모리 주소가 될 수도 있다. 이 값들은 일시적으로 레지스터에 저장된다. 이는 CPU가 메모리에 접근하는 속도보다 레지스터에 접근하는 속도가 압도적으로 빠르기 때문이다. ALU는 연산 결괏값과 함께 플래그를 내보낸다. 플래그는 연산 결과에 대한 추가적인 정보를 내..
1. 소스 코드, 명령어 컴퓨터는 명령어를 읽어 동작한다. 우리는 C++, C#과 같은 프로그래밍 언어를 사용해 컴퓨터에게 내릴 명령들을 작성한다. 우리가 작성한 명령들은 '소스 코드'라고 부르며, 컴퓨터는 이 소스 코드를 컴파일러를 통해 명령어(기계어)로 변환하여 명령을 수행한다. 1.1) 고급 언어, 저급 언어 고급 언어: 사람이 이해하기 쉽게 작성된 프로그래밍 언어를 칭한다. 저급 언어: 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어를 칭한다. 저급 언어보다 가독성이 높고 다루기가 쉽지만 저급 언어보다 상대적으로 속도가 느리다. 일반적으로 저급 언어는 기계어, 어셈블리어까지를 일컫는다. (C언어는 고급 언어에 해당) 저급 언어는 실행 속도가 고급 언어보다 상대적으로 빠르지만, 가독성이 낮고 다루기가..
1. 0과 1로 숫자를 표현하는 방법 컴퓨터는 0과 1로만 이루어진 데이터만 이해할 수 있다. 그렇다면 어떻게 컴퓨터는 3 + 10을 계산할 수 있을까? 1.1) 정보 단위 컴퓨터가 이해하는 가장 작은 정보의 단위를 비트(bit)라고 부른다. 유효한 값이 있으면 1, 유효한 값이 없으면 0이라고 생각하면 된다. 즉, 전구처럼 불이 꺼진 것과 켜진 것만 표현할 수 있으며, 이 표현의 최소 단위가 비트이다. 이때 2비트는 총 4가지의 상태를 표현할 수 있다. 즉, n개의 비트로 표현할 수 있는 상태 값은 2^n가지이다. 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트 등 다양한 정보 단위가 더 존재하며, 바이트를 제외한 나머지 단위들은 이전 단위를 1000개씩 묶어서 표현한 단위들이다. 워드(wor..
1. 컴퓨터 구조가 필요한 이유 프로그래머는 코드를 작성하는 일을 한다고 생각하기 쉽지만, 문제 상황을 빠르게 진단하고 해결책을 고민하기 위해서는 '컴퓨터 구조'에 대한 이해도 요구된다. 본인이 개발에 사용하는 컴퓨터에 이해가 뒷받침된다면 적합한 성능과 비용을 책정할 수도 있다. 물론, 클라우드 서버를 사용한다고 해도 예외는 아니다. 자신에게 필요한 개발 환경을 적합하게 구축하고, 이에 필요한 예산을 측정하고, 필요한 자원을 확보하는 능력은 프로그래머의 기본 소양이라 여기는 것이 좋다. 2. 컴퓨터 구조의 큰 그림 컴퓨터 구조의 지식은 '컴퓨터가 이해하는 정보'와 '컴퓨터의 4가지 핵심 부품'으로 나눠진다. 2.1) 컴퓨터가 이해하는 정보 모두가 알다시피 컴퓨터는 0, 1로 이루어진 정보만 이해할 수 있..