[컴퓨터구조] 기억장치

resilient

·

2021. 5. 3. 00:20

728x90
반응형

기억장치

메모리는 프로그램의 작업장

메모리의 역할

  • 프로그램 명령이나 데이터를 저장
  • 프로그램은 메모리에서 활동 중

→ 메인메모리가 클수록 동시에 많은 프로그램을 실행

  • 메모리는 프로그램의 작업장

→ 메모리가 없으면 프로그램이 동작할 수 없음

  • 메모리의 각 영역은 서로 침범하지 못하도록 시스템 스포트웨어의 프로그래머가 정함

→ 프로그래밍 언어로 작성된 텍스트 문서, 데이터 등

램 상주 프로그램

실행 후 종료 되 때 제거되는 다른 프로그램들과 달리 메모리에 전체나 일부가 남아 항상 대기

운영체제의 커널과 바이러스 백신이 대표적

다른 프로그램을 사용할 때 문제가 발생할 수도 있다.

메모리를 용도에 따라 분류

  • 주기억장치

→ 혹은 시스템 메모리 → 프로그램의 동작에 주로 사용

→ 현재 동작하는 프로그램들과 데이터를 저장

  • 보조기억장치

→2차 기억장치 자료의 저장에 주로 사용

→ 저가격 대용량이 요구되는 각종 드라이브가 대표적

n비트로 표현할 수 있는 2진수의 개수 → 2^n 개

10비트씩 늘어날 때마다 2진수로 표현할 수 있는 수의 범위는 약 1000배인 1024배씩 늘어남

IEEE 1541표준의 새로운 메모리 용량 표시

엔디언

메모리 주소와 같은 논리적으로 1차원적인 공간에 여러 개의 연속된 자료를 배열하는 방법

여러 단위로 구성된 자료를 저장할 때

  • 빅 엔디언 → 큰단위먼저 저장
  • 리틀 엔디언 → 작은 단위를 먼저 저장
  • 미들 엔디언 → 둘을 혼합

메모리는 보통 낮은 주소에서 시작해 높은 주소 쪽으로 저장, 또한 보통 한 주소에 한 바이트가 저장

여러 바이트로 이루어진 변수를 메모리에 저장할 때

빅 엔디언은 큰 단위의 바이트가 앞 번지에 오고

리틀 엔디언은 작은 단위의 바이트가 앞 번지로 온다.

메모리 계층 구조

읽기와 쓰기

엑세스 타임

액세스는 어떤 장소로 접근하는 동작을 의미한다.

→ 이미 저장된 내용을 읽기 위해 혹은 데이터를 새로 저장하기 위해 특정위치에 신호가 도달하는 동작

액세스 타임

CPU가 데이터의 저장 위치에 접근을 완료하거나 응답을 받기 시작하는 데 걸린 시간

기억장치나 입출력장치의 동작속도를 나타내는 척도

메모리나 I/O에 새로운 주소가 도달한 시점부터 데이터를 출력하거나, 기록하기 시작하는 데 걸린 시간

기억장치 혹은 메모리 계층구조

  • 여러 종류의 기억장치를 계층적인 구조로 사용

→ 가격, 용량, 속도 측면에서 다양한 계층을 구성

  • 적은 비용으로 기억장치 용량을 늘리고 전체 기억장치의 평균 액세스 속도를 높이는 방법
  • CPU에 가까울 수록 상위계층으로 분류

→ 상위계층으로 갈수록 액세스 타임이 빠른 소자들 배치, 빠른 소자들은 대개 가격은 높아지고 용량은 작아짐

→ CPU에서 먼 하위계층으로 갈수록 속도는 느려지고 가격대비 용량이 큰 장치들이 배치

가상메모리

프로그램이 실행되려면 동작에 필요한 최소한의 메모리가 작업공간으로 남아 있어야 한다.

주로 하드디스크의 일부를 확장된 램으로 가정해 부족한 메인메모리의 일부로 사용하는 것

→ 논리적 공간이라 물리적으로 연속적일 필요는 없음

부족한 메인메모리 크기를 이형적으로 늘리는방법

운영체제가 자동으로 관리

하드디스크 스와핑

하드디스크 스와핑 혹은 스왑

→ 메인메모리의 내용과 보조기억장치인 하드디스크의 내용을 상호 교환하는 것

스왑 파일은 가상메모리를 사용할 때 실제 메모리인 램에 대한 확장으로 하드디스크에 만들어지는 파일

파일 단위로 연속된 공간을 구성할 수 있어 적은 횟수의 읽기, 쓰기로 가상메모리를 관리

임시 파일들

스왑 파일처럼, 운영체제와 응용프로그램들은 하드디스크에 주기적으로 자기가 관리하는 데이터나 프로그램을 임시 파일로 저장

일부는 자동삭제 되지않고 공간차지

페이지와 페이징

페이지는 가상메모리 공간을 일정한 크기로 나누어 메인메모리와 하드디스크 사이에 한 번에 이동하는 단위

페이지 프레임은 가상의 기억공간을 다룰 수 있도록 할당되 메인메모리

페이징, 페이지 교체

→ 메인메모리와 하드디스크 사이의 페이지 교환 동작

페이지 교체

빈 페이지 프레임에 새로운 페이지를 할당

빈 공간이 없으면 기존에 저장된 페이지 하나를 꺼내 HDD에 저장하고 필요한 페이지를 바꾸어 넣음

가상주소와 물리주소

물리메모리

→ 가상메모리에 대응하는 용어로 실제 메모리

가상주소

→ 가상메모리를 관리하는 주소 → 물리주소로 변환해서 사용해야 함

물리주소

→ 실제 메모리 주소 → 오프셋값을 이용해 가상주소의 비트 수 줄임

페이지 테이블

현재 관리되는 가상메모리의 모든 페이지와 메인메모리의 페이지 프레임과의 매핑 관계를 저장

페이지 테이블 등록정보

각 항의 내용은 <가상메모리의 페이지 번호가 메인메모리의 페이지 프레임 번호에 1:1로 매핑>된 정보

다른 가상메모리 페이지처럼 HDD에 함께 저장

가상주소에서 물리주소로의 변환

가상주소 형식 → 페이지번호 + 오프셋 값

페이지 테이블 → 페이지번호 + 프레임 번호

물리주소 형식 → 프레임 번호 + 오프셋 값

메인메모리 크기를 충분히 늘리면

  • HDD 액세스 횟수나 가상메모리의 크기가 줄어 시스템 성능은 크게 향상
  • 가상 메모리 사용은 권장할만하지 못함
  • 성능이 높은 CPU일수록 메모리 늘리면 효과 큼

스레싱

전체 시스템 성능이 저하되어 작업의 진전이 아주 느리거나 아예 없는 상태

가상 메모리 페이징 동작이 과도하게 일어나는 상태

메모리나 기타 시스템 자원이 고갈되어 필요한 연산을 수행하기에 너무 부족한 상태

캐시메모리

주로 메인메모리의 액세스 타임을 줄이기 위해 CPU와 메인메모리 사이에 사용하는 빠른 속도의 메모리

CPU 캐시 혹은 줄여 보통 캐시라고 함

프로그램이 현재 사용 중인 내용의 근방을 저장

주로 액세스 타임이 빠른 SRAM 사용

L1, L2, L3 캐시

캐시로 메모리 계층 간 속도 차이를 완충시켜 전체 기억장치의 평균 액세스 타임을 줄임

CPU에 가까운 순서대로 n차 캐시 라고 한다

L1로 갈수록 속도 증가, 크기 축소

L1 → L2 → L3 → 메인메모리 → 하드디스크

하위 계층에 대한 액세스 횟수가 늘어날수록 평균 속도가 느려져 전체 기억장치의 성능은 저하

캐시의 성능 개선

같은 CPU 코어에서 캐시가 클수록 성능에 유리

  • 캐시의 위치에 따라 액세스 속도 성능 차이
  • 같은 CPU 코어로 프로세서 성능을 개선하는 방법

→ CPU 코어 클럭증가, 내장 캐시의 성능 개선, 멀티코어 구조

  • 내장 캐시의 연결 속도 개선 → 비트 수와 클럭 올림

코어와 언코어

온다이칩 → 캐시가 CPU코어와 같은 반도체 회로기판위에 있다는 뜻.

온칩→ 같은 칩 안에 있다는 뜻

멀티코어 프로세서에서 코어의 개념

  • 독립적으로 명령을 실행하는데 필요한 부분
  • ALU, 레지스터, 부동소수점 처리장치, 독립적인 명령어 실행 장치, 단독으로 사용하는 L1, L2 캐시

언코어 → 내장된 장치 중 코어가 아닌 부분

  • 각 코어가 공통으로 공유해 사용할 수 있는 부분
  • 명령어 인출과 해독장치, L3 공유 캐시와 칩 내부에 내장된 메모리 컨트롤러, 버스 컨트롤러, 그래픽처리장치는 코어 개념에서 제외

L1 캐시 → 명령 캐시와 데이터 캐시 분리

L1 데이터 캐시 → 동시에 읽고 쓰기가 가능하도록 데이터 출입구를 두개로 분리한 듀얼포트 SRAM 사용

L2,L3 캐시 → 명령과 데이터가 공유

L2캐시는 프로세서 칩 내부의 다른 공유 장치들과의 버스 인터페이스 속도를 높이기 위해 사용

L3 캐시는 멀티코어 간의 다중 작업이나 하나의 작업을 나눠서 처리할 때 일관성 유지

디스크 캐시

HDD, ODD 등 디스크의 액세스 타미을 줄이기 위해 CPU와 디스크 장치 사이에 사용하는 캐시메모리

운영체제에 의해 주로 메인메모리의 일부를 할당

메모리의 이중독립버스

CPU와 메인 메모리 사이의 외부 시스템버스

CPU 코어와 캐시 사이의 내부 캐시버스

전면버스 → 주로 CPU와 외부 메인메모리를 연결하는 시스템 버스

후면버스 → 주로 CPU 내부에 내장된 캐시와 CPU 코어 사이를 연결해주는 캐시버스

캐시 적중 → CPU가 원하는 내용을 캐시에서 발견한 상태

캐시 실패 → 원하는 내용이 캐시에 없는 상태

캐시 적정률

캐시 실패율

평균 액세스 타임

캐시가 적용된 메모리 계층구조 사례

컴퓨터 시스템에서의 지역성

CPU가 기억장치의 특정 부분에 위치한 프로그램이나 데이터를 빈번히, 집중적으로 액세스하는 현상

데이터의 분산 정도로 캐시 적중률에 가장 큰 영향

  • 시간적 지연성

CPU에서 한번 참조한 프로그램이나 데이터는 조만간 다시 참조될 가능성이 높음

  • 공간적 지연성

한번 참조된 데이터 주변에는 인접한 데이터는 같이 참조될 가능성이 높음 → 인접 저장된 배열 데이터

직접매핑 캐시

직접매핑 캐시는 메인메모리의 데이터 블록이 지정된 캐시 라인 에만 들어감

  • CPU가 발생시킨 메인메모리 주소가 지정된 캐시라인에 포함된 블록 내의 워드로 매핑
  • 인덱스 필드 : 캐시 라인을 선택
  • 태그 필드 : 캐시 라인에 들어갈 메인메모리 블록 선택
  • 블록 오프셋 필드 : 블록에 포함된 워드를 선택

캐시 적정여부검사

  • 인덱스 필드로 캐시 라인을 먼저 선택
  • 선택된 캐시 라인의 태그를 조사해 메인메모리 주소의 태그 필드와 일치하는지 검사
  • 적중하면
    • 블록 오프셋 필드 값을 이용해 해당 캐시 라인의 워드 중 하나를 골라 읽거나씀
  • 실패하면
    • 메인메모리에서 원하는 주소의 데이터를 읽거나 쓰고
    • 새로 사용된 메인메모리의 해당 블록을 지정된 캐시 라인에 넣어주고 태그 비트를 고침

세트연관 캐시

태그 - 세트 - 블록오프셋

세트연관 캐시 방식의 종류

  • 2방향 (2-way)세트연관 캐시
    • 각 세트가 2개의 캐시라인을 갖는경우
  • n-방향(n-way) 세트연관 캐시
    • 각 세트가 n개의 캐시라인을 갖는경우

연관도

  • 세트를 구성하는 way 수 n
    • 세트수 = 캐시 라인수 % way 수
  • 캐시 전체가 하나의 세트가 되면
  • 연관도가 커지면 하드웨어가 복잡해짐

캐시 매핑 방식 비교

  • Fully-Associateive 캐시 → 캐시 라인 선택이 자유롭다
    • 장점 : 반복적인 서브루틴이나 배열 등 연속적인 블록이 적재될 때 지역성이 좋아져 적중률이 매우 높아진다.
    • 단점 : 등록정보가 많아지면 태그를 비교하는 하드웨어를 설계하는 노력이 많이 들고 복잡해진다.
  • Diresct-mapped 캐시 → 오직 한군데 캐시 라인으로 간다.
    • 장점 : 선택의 여지가 없어 교체정책이 필요 없다.
    • 단점 : 한 캐시 라인을 공유하는 불록 중에서 반복적으로 교체할 일이 생기면 적중률이 크게 떨어진다.
  • Set-associative 캐시 → 위의 두방식의 장단점을 결합
    • 단점 : way 수가 늘어날 수록 하드웨어가 점점 복잡

MMU와 TLB

가상메모리를 메인메모리에 매핑하는 방법

  1. 프로그램에 의해 발생하는 가상주소를 메인메모리에 있는 물리주소로 변환하는 과정이 필요
    • 프로세서 칩에 내장된 MMU 장치가 TLB에 저장된 내용으로 이를 수행
  2. MMU
    • 메모리 관리 장치의 약자로, 물리주소 변환과 메모리 보호가 주요 역할
    • 메모리 접근권한을 제어해 메모리를 보호하고 캐시 관리, 버스 중재 등의 역할도 수행
  3. TLB→ 최근에 일어난 가상메모리주소와 물리 주소의 변환 테이블을 저장하는 일종의 주소 변환 캐시
    • 페이지 테이블에 대한 일종의 캐시 역할을 한다
      • 운영체제가 저장해둔 페이지 테이블의 일부를 검색속도가 빠른 CPU내부로 복사해온것
      • 페이지테이블 이용을 생략해 여러 메모리 내용을 읽고 물리주소를 계산하던 주소변환 시간을 줄일 목적
반응형

'CS & Network > 운영체제(OS) & 컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] 메모리2  (0) 2021.05.06
[컴퓨터구조] 메모리  (0) 2021.05.05
[컴퓨터구조] 파이프라인  (0) 2021.05.01
[컴퓨터구조] 정리_3  (0) 2021.04.29
[컴퓨터구조] 정리_2  (0) 2021.04.28