컴퓨터 성능 향상 기술

꿀떡냠·2024년 5월 8일

들어가기

  • CPU와 메모리, 주변 장치의 작업속도는 각기 다르다.
  • 메인보드 내 메모리와 주변장치는 시스템 버스(FSB)로 연결되어 있다.
  • CPU 내 레지스터, 산술논리 연산장치, 제어장치는 CPU 내부 버스(BSB)로 연결되어있다.
  • 메모리 속도는 시스템 버스의 속도와 같고 CPU 속도는 CPU 내부 버스속도와 같다.
  • CPU 내부버스 속도가 시스템 버스 속도보다 빠르기 때문에 다른 하드웨어 장치들이 CPU 속도를 따라가지 못한다.
  • 장치간의 속도차이를 개선하고 시스템의 작업 속도를 올리기 위해 개발된 운영체제 관련 기술을 살펴 보자

버퍼

개념

  • 버퍼는 두 장치의 속도 차이를 완화하는 역할을 한다.
  • 일정량의 데이터를 모아서 옮기면서 속도 차이를 완화하는 장치를 버퍼라 한다.
    • 입출력 장치에서 데이터를 가져오는 경우 데이터를 읽을 때마다 하나씩 전송하면 작업량에 비해 실제 전송되는 양은 매우 적다.
    • 일정량의 데이터를 모아 한꺼번에 전송하면 적은 작업량으로도 많은 데이터를 옮길 수 있다.
  • 버퍼 용량이 크다는 것은 한 번에 많은 양의 데이터를 옮길 수 있다는 의미이다.

    하드웨어 안전 제거
    버퍼를 사용하면 버퍼가 채워질 때까지 저장장치 간의 데이터 전송이 지연된다.
    저장된 것 처럼 보여도 실제로는 저장이 안되는 데이터가 있을 수 있다.
    따라서 USB와 같은 외부 저장장치를 사용하는 경우 바로 장치를 제거하면 버퍼에 남아있는 데이터가 유실될 가능성이 있다. 이때 하드웨어 안전 제거 기능을 통해 버퍼에 남아있는 데이터를 저장장치로 보내 안전하게 제거할 수 있도록 한다.

스풀

  • CPU와 입출력 장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼이다.
  • 대표적인 예는 프린터에 사용하는 스풀러 이다.
  • 워드로 작성한 글을 프린터로 출력 하는 경우
    - 워드 프로그램이 프린터까지 출력을 처리 해야한다면, 출력이 완료될때까지 새로운 문서작업을 할 수 없다. 스풀러에 출력작업을 위한 데이터를 저장한다면 출력 요청과 상관없이 워드 프로그램은 새로운 작업을 진행할 수 있다.

캐시

  • 메모리의 데이터를 미리 가져와 저장해 두는 임시 저장소이다. (CPU와 메모리간의 속도차이 개선)

  • 캐시는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓는다. (미리 가져오기)

  • CPU 안에있는 캐시는 CPU 시스템 버스를 이용하기 때문에 메모리에서 데이터를 직접 가지고 오는것보다 빠르다.

  • CPU는 메모리에 접근하기 전에 캐시를 방문하여 원하는 데이터가 있는지 확인한다.

  • 캐시에 원하는 데이터가 있는 경우를 캐시 히트(cache hit)라고 하며 데이터를 바로 사용한다.

  • 캐시에 원하는 데이터가 없는 경우를 캐스 미스(cache miss)라고 하며 시스템 버스를 통해 메모리로 가서 데이터를 가져온다.

  • 일반적인 컴퓨터의 캐시 적중률은 약 90%이다.

  • 캐시 적중률을 높이는 방법

    • 캐시의 크기를 늘린다 -> 가격이 비싸기 때문에 한계가 있다.
    • 현재 위치에 가까운 데이터가 멀리 있는 데이터보다 사용될 확률이 높다는 지역성이론을 가지고 근처에 있는 데이터를 가져온다.
  • 캐시에 있는 데이터가 변경 될 때 메모리에 반영하는 방법

    • 즉시 쓰기(write through)

      • 캐시에 있는 데이터가 변경되면 즉시 메모리에 반영하는 방식
      • 캐시와 메모리가 항상 동일한 값을 유지한다.
      • 빈번한 데이터 전송으로 성능이 느려진다.
    • 지연 쓰기(write back)

      • 카피백(copy back) : 캐시에 있는 데이터가 변경되면 그 내용을 모아서 주기적으로 반영하는 방식
      • 데이터 전송 횟수가 줄어들어 시스템 성능 향상된다.
      • 메모리와 데이터 사이의 불일치가 발생할 수있다.
  • 레벨별 캐시의 구조

    • 일반 캐시 : 명령어와 데이터를 구분 없이 모든 자료를 가져온다
    • 특수 캐시 : 명령어와 데이터를 구분하여 가져온다.

저장장치의 계층 구조

  • 저장장치의 계층 구조는 속도가 빠르고 값이 비싼 저장장치를 CPU와 가까운 쪽에 두고, 값이 싸고 용량이 큰 저장장치를 반대쪽에 배치하여 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법이다.
  • CPU 속도가 메모리 속도보다 빠르므로, CPU와 가까운곳에 레지스터와 캐시를 배치하여 CPU가 작업을 빨리 진행할 수 있도록 돕는다.
  • 저장장치의 계층 구조는 사용자가 저렴한 가격으로 용량은 하드디스크처럼 사용하고 작업 속도는 레지스터처럼 빠르게 만들어준다.

인터럽트

  • 인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다.
  • 인터럽트의 동작 과정
    1. CPU가 입출력 관리자에게 입출력 명령을 보낸다.
    1. 입출력 관리자는 명령받은 데이터를 메모리에 가져다 놓거나 메모리에 있는 데이터를 저장장치로 옮긴다.
    2. 데이터 전송이 완료되면 입출력 관리자는 CPU에 완료 신호를 보낸다.

직접 메모리 접근

  • 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능을 말한다.

메모리 맵 입출력

  • 메모리의 일정 공간을 입출력에 할당하는 기법을 말한다.
  • CPU가 사용하는 메모리 공간과 직접 메모리 접근을 통해 들어오고 나가는 데이터를 위한 공간을 분리하는 것이다.

사이클 훔치기

  • CPU와 직접 메모리 접근이 동시에 메모리에 접근하려는 경우 직접 메모리 접근이 우선순위를 가진다.
  • CPU 입장에서 메모리 접근이 사이클(순서)를 훔쳐간 것이 되기 때문에 이를 사이클 훔치기라고 한다.
profile
백엔드 개발자로 살아남기

0개의 댓글