기본적으로 하드웨어와 시스템 소프트웨어(system software)로 구성된다. 또한 컴퓨터는 프로그램 코드들을 정해진 순서대로 실행(execute)하는데, 그 과정에서 필요한 데이터를 읽어서(read), 처리(processing)하고, 결과를 저장(store)한다. 이러한 기능들을 수행하는 컴퓨터 하드웨어는 서로 상호 연결되어 구성된다.
컴퓨터에서 각종 정보의 전송 통로를 제공해주고, 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체
1. 메인보드
2. CPU
프로세서(processor)라고 불리기도 하며, 사실상 컴퓨터의 특성과 성능에 가장 큰 영향을 미치는 구성요소이다. CPU가 한 번에 처리하는 데이터의 길이(비트 수)에 따라 8,16,64비트 컴퓨터로 분류되며, CPU의 내부 구조에 따라 하드웨어가 이해할 수 있는 언어 또한 달라지게 된다. 컴퓨터의 이론적인 처리속도는 CPU의 성능에 의해 결정된다.
3. 주기억장치(main memory)
메인보드 상에서 CPU 가까이에 위치하며, 반도체 기억장치 칩(semiconductor memory chip)들로 이루어져 고속의 읽기 및 쓰기가 가능하지만 저장 용량에 한계가 있고 영구 저장 능력이 없어 프로그램 실행 중에만 일시적으로 사용되는 기억장치이다.
4. 보조저장장치(auxiliary storage device)
하드 디스크(hard disk)나 SSD(solid-state drive)와 같이 영구 저장 능력을 가진 기억장치들을 말한다. 기계적인 장치가 포함되거나 쓰기 동작이 복잡한 반도체 칩들을 이용하기 때문에 속도가 느리다. 또한 CPU가 직접 액세스(읽기/쓰기) 하지 못하고 별도의 제어기를 통해서만 가능하다.
5. 입출력 장치(I/O device)
입력장치(input device)와 출력 장치(output device)를 통칭하는 용어로, 키보드와 모니터 및 프린터 외에도 다양한 장치들이 개발되어 있다. CPU와 직접 데이터를 교환할 수 없어 각 장치를 위한 별도의 제어기가 CPU로부터 명령을 받아서 장치의 동작을 제어하고 데이터를 이동시키는 역할을 수행한다.
주변장치(peripheral device)
이와 같이 CPU가 직접 액세스 하지 못하고 별도의 제어기를 통하여 액세스가 가능한 I/O 장치와 보조저장장치들을 주변장치(peripheral device)라고 부르기도 한다.
6. 확장 보드
7. 전원공급장치
8. 광 저장장치
CPU는 시스템 내의 다른 요소들과의 정보를 교환하기 위해 시스템 버스라는 통로를 이용한다.
시스템 버스(system bus)
주소버스(address bus)
주소 정보를 전송하기 위한 신호선들의 집합 여기서 발생한 주소 비트들의 수를 주소 버스의 폭(width)이라고 한다. 전체 주소선들의 갯수가 CPU와 접속될 수 있는 최대 기억장치 용량을 결정한다.
데이터버스(data bus)
데이터를 전송하기 위한 신호선들의 집합 데이터 버스의 폭은 한 번에 전송될 수 있는 데이터 비트의 수를 결정해준다.
제어버스(control bus)
시스템 요소들의 동작을 제어하기 위한 신홋너들의 집합 가장 기본적인 신호들로는 기억장치 읽기/쓰기(memory read/write) 신호와 I/O 읽기/쓰기(I/O read/write) 신호가 있다.
기억장치 쓰기 동작의 흐름도
1. CPU가 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내면서 쓰기 신호를 활성화(active)
2. 기억장치 쓰기 동작이 완료될 때까지 이 신호들은 그대로 유지
기억장치 읽기 동작의 흐름도
1. CPU가 데이터가 저장되어 있는 기억 장소의 주소를 주소 버스를 통하여 기억장치로 보내면서 읽기 신호를 활성화(active)
2. 기억장치로 부터 읽혀진 데이터가 데이터 버스상에 실림
3. CPU는 해당 데이터를 버스 인터페이스 회로를 통하여 읽음
Input 장치 흐름도
1. 장치로부터 입력이 이루어짐
2. 그에 대응되는 비트데이터가 장치 제어기로 전송되어 데이터 레지스터(data register)에 저장됨과 동시에 상태 레지스터(status register)의 In_RDY 비트가 1로 세트
3. CPU는 데이터 입력을 원하는 시점에 상태 레지스터를 읽어들여 In_RDY 확인
4. 세트 되어있다면 데이터 레지스터의 내용을 CPU로 읽어들임
Output 장치 흐름도
1. 장치 제어기 내의 상태 레지스터를 읽어 Out_RDY 비트 검사
2. 세트 되어있다면 출력할 데이터를 장치 제어기의 데이터 레지스터로 쓰고 시작 신호를 보냄
3. 제어기는 장치를 통해 데이터를 출력
보조저장장치 과정 흐름도
보조저장장치 또한 CPU에서의 직접 접근이 되지 않아 제어기를 통하여 위와 유사한 방법으로 접속된다. 보조저장장치의 경우 블록 단위로 전송이 이루어진다. 때문에 트랙 버퍼 혹은 그 이상의 용량인 디스크 버퍼를 가지고 있는 경우도 많이 있다.
정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 수행될 시간을 지정해주는 명령(command)들의 집합이다.
컴퓨터가 받아들이고 처리하는 정보의 종류는 프로그램 코드(program code)와 데이터(data)가 있다. 이러한 정보들은 모두 2진수(binary number)를 나타내는 비트(bit)들의 조합으로 표현된다.
컴퓨터 프로그램은 인간이 이해하기 쉬운 고급 언어(high-level language)를 이용하여 작성된다. 하지만 이러한 언어는 컴퓨터가 이해할 수 없어 컴파일러(compiler)라 부르는 소프트웨어에 의해 하드웨어가 이해할 수 있는 언어로 번역된다. 이 번역된 언어를 기계어(machine language) 혹은 기계 코드(machine code)라고 한다.
기계어의 경우 CPU 내부 구조에 따라 달라지게 된다. 이러한 언어상의 차이를 해결하기 위하여 고급 언어와 기계어 사이에는 각 CPU 고유의 중간 언어가 존재하는데 이를 어셈블리 언어(assembly language) 혹은 어셈블리 명령어(assembly instruction)라고 부르며 이러한 언어로 작성된 프로그램을 어셈블리 프로그램(assembly program)이라고 한다. 어셈블리 언어로 작성된 프로그램은 어셈블러(assembler)라는 소프트웨어가 기계어 프로그램으로 번역해준다.
고급 언어 프로그램이 기계어 프로그램으로 번역되는 과정
- 각각의 동작인 니모닉스(mnemonics)를 포함한 어셈블리 명령어(instruction)를 어셈블러(assembler)가 연산코드 필드(operation code field: 연산을 지정해주는 비트)와 오퍼랜드 필드(operand field: 적재될 데이터가 저장되어 있는 기억장치 주소)를 포함하고 있는 2진수인 기계어 프로그램으로 번역
- 명령어와 데이터 등의 계산에 사용될 데이터들이 기계어로 번역되어 순서대로 기억장치에 저장 이 때 CPU에 의해 한 번에 처리될 수 있는 데이터들의 그룹을 단어(word)라고 한다.