컴퓨터 시스템 구성
전 포스팅에서 컴퓨터 시스템 주요 3요소로 CPU, Memory, I/O devices을 설명했었습니다.
2022.07.15 - [Study/computer system] - 컴퓨터의 기본구조
컴퓨터의 기본구조
본 포스팅은 패스트캠퍼스 강의를 들으면서 공부한 내용을 정리하기 위해 작성되었습니다. # 컴퓨터 시스템의 기본 구성 컴퓨터 시스템은 크게 하드웨어와 시스템 소프트웨어로 구성되어 있습
sonzwon.tistory.com
컴퓨터 주요 구성요소들이 어떻게 서로 접속되고 상호작용하는 지를 보고 컴퓨터 시스템을 구성하는 방법과 동작원리에 대해 알아보겠습니다
# 시스템 구성
system bus는 CPU와 다른 구성요소들간의 정보교환 통로입니다. system bus의 하위버스로 control bus, address bus, data bus가 있습니다.
- control bus : 제어신호 전달 버스
- address bus : 주소공간을 보내기 위한 버스(*주소공간 : 메모리 주소나 I/O unit의 포트번호)
- data bus : 데이터를 보내기 위한 버스
그림에서 버스와 구성요소들이 통신하는 방향을 보면 대부분 양방향인데 address bus와 CPU를 보면 CPU에서는 나가기만 합니다. 그 이유는 주소라는 것은 CPU에 의해서 발생이 되어서 기억 장치 혹은 I/O devices로 전송되는 정보이기 떄문입니다.
# CPU와 system bus간의 접속
- address bus : 주소선의 갯수 = CPU와 접속될 수 있는 기억장치의 최대 용량을 결정합니다
ex) 주소버스 16비트 = 2^6 =64개의 주소지정할 수 있습니다
- data bus : 데이터 버스의 신호선 갯수 = CPU가 한번에 저장할 수 있는 비트의 수를 결정합니다.
ex) 데이터버스 32비트 = 한번에 32비트씩 전송 가능
- control bus : 제어 선의 수는 컴퓨터마다 차이가 있습니다.
# CPU와 기억장치의 접속
CPU와 기억장치의 접속을 도식화한 그림있니다. 두 장치가 접속하는 통로인 주소버스와 데이터 버스는 신호선들의 집합으로 이루어져있어 굵게 표시되어 있고, 읽기 쓰기 신호는 1비트라서 얇게 표시되어 있습니다.
# 기억 장치의 엑세스 동작
- 기억장치 쓰기(memory write)
기억장치에 쓰기를 실행했을 때, CPU는 데이터를 저장할 기억장치 주소를 주소버스로 보내고 저장할 데이터를 동시에 데이터버스로 보내고 쓰기 신호를 활성화합니다. 기억장치 쓰기는 CPU가 기억장치로 주소와 데이터를 보내는 순간 부터 저장이 완료될 때까지 시간이 소요됩니다.
- 기억장치 읽기(memory read)
기억장치에 읽기를 실행했을 때, CPU는 기억장치 주소를 주소버스로 보내고 읽기 신호를 활성화한 다음 일정시간이 지나고 기억 장치로 부터 읽혀진 데이터가 데이터버스에 실리고 CPU는 그 데이터를 버스를 통해 읽게됩니다. 기억장치 읽기는 주소를 해독하고 기억장치 내부에서 데이터를 인출하는데에 시간이 소요됩니다.
# CPU와 I/O devices의 접속
CPU와 I/O devices의 접속은 CPU와 기억장치간의 접속과 약간 차이가 있습니다. CPU와 I/O간의 접속을 위해 데이터버스를 이용하긴 하지만, I/O devices들은 종류도 다양하고 데이터형식, 제어방식, 속도 등이 차이가 있기 때문에 system bus에서 바로 연결이 불가능합니다. 그렇기 때문에 I/O 제어기를 이용합니다.
I/O 제어기는 CPU로 부터 입출력 명령을 받아서 해당 I/O장치를 제어하고 데이터 이동하여 명령을 수행하는 역할을 수행합니다. 종류로는 두가지가 있습니다
- 상태 레지스터 : I/O 장치의 현재 상태를 나타내는 bit를 저장하는 레지스터
- 데이터 레지스터 : CPU와 I/O장치간의 이동되는 데이터를 일시적으로 저장하는 레지스터
# 컴퓨터 시스템의 전체 구성
컴퓨터 시스템의 전체 구성에서 시스템의 기능을 보면,
프로그램 실행은 CPU가 주기억장치로 부터 코드를 읽고 실행하는 것입니다.
저장은 실행 결과로 얻어진 데이터들을 주기억장치에 저장하는 것입니다.
이동은 디스크 혹은 CD-ROM에 저장된 데이터 블록을 주기억 장치로 가지고 오는 것입니다.
입력은 키보드, 마우스 등 입력장치를 통해서 보내는 명령이나 데이터를 읽어 들이는 것이며, 출력은 CPU가 처리한 결과 값 또는 기억 장치가 가지고 있는 내용들을 모니터, 프린터 등 출력장치로 내보내는 것입니다
제어는 프로그램이 순서대로 실행되도록 필요에 따라 실행 순서 변경하는 것을 조정하고 각종 제어 신호들을 발생시키는 것입니다.