컴퓨터 시스템

하드웨어, 소프트웨어 구성
  • 하드웨어(Hardware): 데이터를 처리하는 물리적인 기계 장치, 프로세서(중앙처리장치), 버스, 메모리(RAM) 등 다양한 주변 장치로 구성된다.
  • 소프트웨어(Software): 특별한 작업 지시를 위해 명령어로 작성한 프로그램
  • 운영체제(Operating System): 컴퓨터 하드웨어와 사용자 사이에서 위치하며 하드웨어, 소프트웨어 자원을 관리하는 프로그램

프로세서

운영체제와 가장 밀접한 하드웨어로 각 부분의 동작 제어 및 연산을 수행한다.
중앙처리장치(CPU)라 하며 레지스터(Register), 산술논리연산장치(ALU), 제어장치(CU) 등으로 구성된다.

  • 마이크로프로세서(Microprocessor): 주기억장치를 제외한 레지스터, 산술논리연산장치, 제어장치를 칩 하나로 구성, 개인용 컴퓨터(PC)에서 주로 이용한다.
  • 주기억장치(computer memory): 크게 RAM, ROM 으로 나뉘며 컴퓨터에서 수치, 명령, 자료 등을 기억하는 컴퓨터 하드웨어이다.

버스

프로세서를 포함한 각 장치간 또는 서브 시스템을 서로 연결하여 정보(데이터)를 주고 받을 수 있게 해주는 통로이다.
컴퓨터 내부 각 요소의 다양한 신호는 공동 통신 채널, 즉 버스를 통해 전달된다.

버스 위치에 따라 내부 버스와 외부 버스로 분류된다.
  • 내부 버스: 프로세서 내부에서 레지스터, 연산장치, 메모리와의 인터페이스 등을 연결하고 시스템 버스 인터페이스 회로를 통해 외부 버스와 연결된다.
  • 외부 버스: 프로세서와 메모리, 프로세서와 입출력장치, 입출력장치와 입출력장치를 연결한다. 시스템 버스라 부르며 각 시스템 버스는 버스 제어기라 불리는 제어 회로를 가진다.
  • 메모리 버스: 프로세서와 메모리, 캐시 메모리를 연결하여 데이터 교환 프로세스 입출력 버스 정도의 속도로 실행된다.
  • 주변 버스: 입출력 버스, 프로세서와 주변 장치를 연결하여 데이터를 전송한다.
버스의 기능에 따라 데이터 버스, 주소 버스, 제어 버스로 분류된다.
  • 데이터 버스: 컴퓨터 시스템에서 데이터, 명령어 등의 정보를 교환하는 전송로, 프로세서에서 메모리나 입출력장치로 데이터 출력 또는 반대로 데이터를 입력받을 때 사용하는 양방향 버스
  • 주소 버스: 하나의 시스템 장치에서 다른 장치로 주소 정보를 전송하기 위해 사용, 신호(주소)선의 수에 따라 최대 사용 가능한 메모리 용량이나 입출력장치 수를 결정한다.
  • 제어 버스: 프로세서가 저장장치와 입출력장치에 데이터를 전송할 때, 현재 수행중인 작업 종류나 상태를 다른 장치에 알릴 때 이용하는 단방향 버스이다.

레지스터

1
2
3
4
5
프로세서에 위차한 고속 메모리로 프로세서가 바로 사용할 수 있는 데이터를 저장한다.
특수한 값 하나를 저장하는 기억공간으로 사용된다.
컴퓨터의 구조에 따라 크기 및 종류가 다양하다.
용도에 따라 전용 레지스터와 범용 레지스터, 저장되는 정보의 종류에 따라 데이터 레지스터, 주소 레지스터, 상태 레지스터로 분류된다.
사용자가 저장한 정보의 변경 여부에 따라 사용자 가시 레지스터와 사용자 불가시 레지스터로 분류된다.
  • 사용자 가시 레지스터: 운영체제와 사용자 프로그램을 통해 접근가능한 데이터와 주소, 일부 조건코드를 보관

  • 조건코드: 관련된 연산결과로 발생하며, 프로그램적으로 접근하는 제로, 자리넘침, 자리올림, 양수비트 등

  • 데이터 레지스터: 함수 연산에 필요한 데이터 저장 / 수치, 문자 등을 저장하므로 산술이나 논리연산에 이용되며, 연산결과로 플래그 값을 저장

  • 주소 레지스터: 주소나 유효주소를 계산하는데 필요한 주소의 일부분을 저장 / 주소 레지스터에 저장된 값(수치 데이터)을 이용해 산술연산 가능

  • 기준 주소 레지스터: 프로그램 실행 시 사용하는 기준 주소값을 저장한다. 기준 주소는 프로그램 하나나 일부처럼 서로 관련 있는 정보를 저장하며, 연속된 저장공간을 지정하는데 참조할 수 있는 주소

  • 인덱스 레지스터: 유효 주소를 계산하는데 사용되는 주소정보를 저장한다.

  • 스택 포인터 레지스터: 메모리에 프로세서 스택을 구현하는데 사용한다. 많은 프로세서와 주소 레지스터가 데이터 스택 포인터와 큐 포인터로 사용된다. 보통 반환 주소, 프로세서 상태 정보, 서브 루틴의 임시변수를 저장한다.

  • 사용자 불가시 레지스터: 프로세서의 제어와 상태관리 / 프로그램 카운터(PC) / 명령 레지스터(IR) / 프로그램 상태 레지스터(PSR) / 메모리 주소 레지스터(MAR)

메모리

1
2
메모리 계층구조는 1950-1960년 메인 메모리의 높은 가격으로 인해 제안된 방법으로, 다양한 레벨의 메모리를 연결하여 비용, 속도, 용량, 접근 시간등을 상호보완 한 것이다.
메인 메모리를 중심으로 아래로 자기 디스크, 광학 디스크, 자기 테이프가 있으며, 위로 캐시, 레지스터가 있다.
  • 자기 디스크: 대용량이다.
  • 광학 디스크: 이동이 편리하다.
  • 자기 테이프: 파일을 저장하기 위해 속도가 느리다.
  • 캐시 메모리: 메인 메모리와 프로세서의 속도차를 보완한다.
  • 레지스터: 프로세서가 사용할 자료를 보관하며 가장 빠르다.
지역성

실행 중인 프로세서가 실행기간 동안 메모리 정보를 균일하게 접근하지 않고 블록 중 일부만 집중적으로 참조하는 현상

발생 이유

프로그램은 명령어를 순차적으로 실행하는 경향이 있으므로 명령어는 특정지역 메모리에 인접해 있다.
프로그램은 순환(단일 순환, 중첩된 순환) 잔복이지만 메모리 참조 영역은 일부 영역에 국한되어 있다.
대부분의 컴파일러는 메모리에 인접한 블록, 즉 배열로 저장하므로 프로그램 배열 원소를 순차적으로 자주 접근하게 되어 지역적인 배열 접근 경향을 보인다.
고유 주소를 가진 워드나 바이트로 구성된 대규모의 배열로, 주소를 읽거나 기록함으로써 상호 작용한다는 특성을 가진다.

메인 메모리 역할
  • 프로세서: 메인 메모리로부터 처리할 데이터를 가져오거나 처리한 결과를 메인 메모리에 저장한다.
  • 입출력 장치: 메인 메모리에서 데이터를 받거나 저장한다.
  • 컴파일: 원시 프로그램을 기계 명령어로 변환하는 처리 과정으로 이때 컴파일러가 논리적 주소를 물리적 주소로 변환
가상 매모리
1
2
3
메인 메모리의 유효 크기를 늘리는 기법
보조기억장치에 프로그램이나 데이터를 저장했다 필요 시 다시 메인 메모리로 이동시키는 기술 (Swap, 스왑)
가상 메모리의 특징을 활용하기 위해 실행 중인 프로세스가 참조하는 주소와 메인 메모리에서 사용하는 주소를 분리해야 한다.
캐시 메모리
1
2
처리 속도가 빠른 프로세서와 상대적으로 느린 메인 메모리 사이에서 데이터나 정보를 저장하는 고속 버퍼
메인 메모리에서 일정 블록의 데이터를 가져와 워드 단위로 프로세서에 전달하여 정보를 빠르게 제공하고, 데이터가 이동할 수 있는 통로(대역폭)을 확대하여 프로세서와 메인 메모리의 블록 크기와 같다.