컴퓨터는 프로그램 코드들을 정해진 순서대로 실행(execute)하는데, 그 과정에서 필요한 데이터를 읽어서(read), 처리(processing)하고, 결과를 저장(store)합니다.
메모리
메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품입니다. 프로그램이 실행되면 해당 프로그램을 구성하는 명령어와 데이터가 메모리에 올라오는 것이죠.
메모리에는 저장된 명령어, 데이터의 위치는 주소를 통해 알 수 있습니다.
CPU
CPU는 프로세서(processor)라고 불리기도 하며, 메모리에 저장된 명령어를 읽어 들이고, 읽어들인 명령어를 해석하고, 실행하는 부품입니다. '프로그램의 실행'과 '데이터 처리'라는 중추적인 기능의 수행을 담당합니다. CPU의 역할과 작동 원리를 이해하기 위해서는 CPU 내부 구성 요소를 알아야합니다.
1. ALU(산술논리연산장치)
계산기입니다. 컴퓨터 내부에서 수행되는 대부분의 계산을 담당합니다.
2. 레지스터
CPU 내부의 작은 임시 저장 장치입니다. 프로그램을 실행하는데 필요한 값들을 임시로 저장합니다. CPU 안에는 여러 개의 레지스터가 존재하고 각기 다른 이름과 역할을 가집니다.
3. 제어 장치
제어 신호라는 전기 신호를 내보내고 해석하는 장치입니다. 메모리에 저장된 값을 읽고 싶을 때 메모리를 향해 '메모리 읽기'라는 제어 신호를, 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 '메모리 쓰기'라는 제어 신호를 보냅니다.
보조기억장치
앞서 메모리는 가격이 비싸 저장 용량이 적고, 전원이 꺼지면 저장된 내용을 잃는다는 치명적인 약점이 있습니다. 이에 메모리보다 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않는 메모리를 보조할 저장 장치가 필요하게 되었습니다.
보조기억장치란 하드 디스크나 SSD와 같이 영구 저장 능력을 가진 기억장치들을 말하며, 저장 밀도가 높고 비트당 가격이 저렴하다는 장점이 있습니다. 하지만 기계적인 장치가 포함되거나 쓰기 동작이 복잡한 반도체 칩들을 이용하기 때문에 속도가 느리고, 보조저장장치들은 CPU가 직접 엑세스(read/write)하지 못하고 별도의 제어기를 통해서만 가능합니다.
메모리는 현재 실행중인 프로그램을 저장한다면, 보조기억장치는 보관할 프로그램을 저장한다고 생각해도 좋습니다.
입출력장치(I/O Device)
입력 장치와 출력 장치를 통칭하는 용어로서, 키보드와 디스플레이 모니터 및 프린터 외 다양한 장치들이 있습니다. 이들은 CPU와 직접 데이터를 교환할 수 없으며, 각 장치를 위한 별도의 제어기가 CPU로부터 명령을 받아서 장치의 동작을 제어하고 데이터를 이동시키는 일을 수행합니다.
메인보드와 시스템 버스
앞선 컴퓨터의 핵심 부품들은 모드 메인 보드라는 판에 연결됩니다. 메인 보드에 연결된 부품들은 서로 정보를 주고 받을 수 있는데, 이는 메인 보드 내부에 버스라는 통로가 있기 때문입니다. 컴퓨터 내부에는 다양한 종류의 버스가 있지만, 이중에서 앞선 네 가지 핵심 부품을 연결하는 가장 중요한 버스는 시스템 버스입니다.
시스템 버스는 주소 버스, 데이터 버스, 제어 버스로 구성되어 있습니다. 주소 버스는 주소를 주고 받는 통로, 데이터 버스는 명령어와 데이터를 주고 받는 통로, 제어 버스는 제어 신호를 주고 받는 통로입니다.
만약 CPU가 메모리의 특정 명령어를 읽어 들이기 위해 제어 장치에서 '메모리 읽기'라는 제어 신호를 내보냅니다. 하지만 CPU가 메모리를 읽을 땐 제어 신호만 보내지 않습니다.
① 제어 버스: '메모리 읽기' 제어 신호 전송. 가장 기본적인 제어 신호로는 기억장치 읽기/쓰기(memory read/write), I/O 읽기/쓰기(I/O read/write) 신호가 있습니다.
② 주소 버스: 읽고자 하는 주소를 전송.
③ 데이터 버스: 기억장치 혹은 I/O 장치와의 사이에 데이터를 전송. 데이터 버스의 폭은 한 번에 전송될 수 있는 데이터 비트의 수를 결정합니다.(e.g. 데이터 버스가 32bit인 시스템 → CPU가 기억장치로부터 한번에 32bit씩 읽어올 수 있다)
주소는 CPU에 의해 발생되어 기억장치와 I/O 장치로 보내지는 정보이므로, 주소 버스는 단방향성입니다. 반면에 데이터 버스는 읽기와 쓰기 동작을 모두 지원해야하므로 양방향 전송이 가능해야합니다.
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
RAID (0) | 2023.03.27 |
---|---|
입출력 장치 (0) | 2023.03.26 |
CPU - 명령어 사이클과 인터럽트 (0) | 2023.03.20 |
CPU - 구성 요소와 기능 (0) | 2023.03.18 |
명령어와 주소 지정 방식 (0) | 2023.03.13 |