Download presentation
Presentation is loading. Please wait.
1
제7장: 메모리 시스템(3)
2
캐쉬 교체(Replacement) 알고리즘
새로운 내용을 저장하기 위하여 기존에 저장되었던 블럭을 교체 -> 적중률을 높이기 위하여 캐쉬 내의 어떤 블럭을 교체하는가? 직접 사상 방식에서는 저장되어질 캐쉬 내의 위치가 미리 정해져 있기 때문에 고려할 필요가 없음 1) LRU(Least Recently Used) 교체방식 가장 오랫동안 참조되지 않았던 블럭을 교체 시간적 지역성의 특성을 이용 가장 오래 전에 참조되었던 블럭은 미래에도 참조될 확률이 가장 적다는 가정 주 메모리의 모든 블럭들에 대하여 참조된 시간을 기록해야 하기 때문에 FIFO 방식보다 구현하기가 더 어려움 2-Way 세트 연관 사상 방식: 각 세트마다 두 개의 슬롯이 있으므로 하나의 비트를 통하여 LRU 비트로 사용 4-Way 혹은 8-Way 시트 연관 사상 방식 캐쉬의 경우에는 더 복잡한 하드웨어를 필요 컴퓨터 구조
3
2) FIFO(First In First Out) 교체 방식 가장 오래 전에 적재된 블럭을 교체
다른 방식들에 비하여 구현이 쉽다는 장점 적재된 순서에 따라 적재 순차 번호(loading-sequence-number)를 가짐 이 번호를 검색함으로써 가장 오래 전에 적재된 블럭을 쉽게 정할 수 있음 프로그램의 순환문과 같이 자주 사용되어지는 블럭을 가장 오래 전에 적재되었다는 이유로 교체해야 하는 문제점 3) LFU(Least Frequently Used) - 사용 빈도수가 가장 적게 사용된 블럭을 교체 4) 임의(Random) 교체 방식 현재 캐쉬 내의 블럭을 임의로(Random) 교체 임의로 선택되어 교체되어지므로 빠르게 블럭의 교체가 진행되는 장점 LRU 방식에 비해 약간 비효율적이지만 구현하기 더 쉽고 매우 잘 동작하는 특성 컴퓨터 구조
4
[예제 7-5] 2-Way 세트 연관 사상 캐쉬가 4 개의 블럭으로 이루어졌다고 한다.
즉, 캐쉬에는 두 개의 세트와 각 세트에는 2 개의 슬롯이 있다(위치 0와 위치 1) 이 때 다음의 메모리 주소 데이터를 액세스 하려고 할 때, 캐쉬의 내용 변화를 보여라. 또한 캐쉬 미스와 캐쉬 히트는 각각 몇 번 일어났는가? 단, 캐쉬 교체 방식으로 LRU를 사용한다고 가정한다. 4, 2, 1, 5, 0, 2, 0, 1 (풀이) 2-Way 세트 연관사상을 사용하므로 메모리 주소 중 짝수 주소는 세트 0에 홀수 주소는 세트 1로 사상되어 짐 또한 각 세트에는 2 개의 슬롯이 존재함 아래의 그림은 캐쉬 내의 값이 변화하는 것을 보여 줌 주소 4: 현재 캐쉬에는 아무 내용이 없으므로 캐쉬 미스가 발생 세트 0의 0 위치로 적재됨 2) 주소 2: 세트 0에는 주소 4만 존재하므로 캐쉬 미스가 발생 세트 0의 1의 위치로 적재됨. 이 때 LRU는 주소 4 컴퓨터 구조
5
3) 주소 1: 세트 1에는 아무 내용이 없으므로 캐쉬 미스가 발생한 세트 1의 0 위치에 적재
4) 주소 5: 세트 1에는 주소 1만 존재하므로 캐쉬 미스가 발생 세트 1의 1 위치에 적재. 이 때 LRU는 주소 1 5) 주소 0: 세트 0에 주소 2와 4가 존재하므로 캐쉬 미스가 발생 LRU가 주소 4이므로 주소 4는 삭제되고, 대신 세트 0의 0 위치로 적재됨 이 때 세트 0의 LRU는 주소 2 6) 주소 2: 세트 0에 주소 2가 존재하므로 캐쉬 히트 세트 0의 LRU는 주소 0 7) 주소 1: 세트 1에 주소 1이 존재하므로 캐쉬 히트 이 때 세트 1의 LRU는 주소 5 컴퓨터 구조
6
그림: LRU를 사용한 캐쉬 교체 방식 예제 컴퓨터 구조
7
캐쉬 쓰기정책(Write policy) 캐쉬의 내용이 바뀌면 주 메모리의 내용도 바뀌어야 함
프로그램이 실행되는 동안에 캐쉬의 내용이 바뀌었으나 그의 원래 데이터 값인 주 메모리의 내용이 바뀌지 않았을 경우, I/O 장치에서 주 메모리의 내용을 읽어 간다면 이는 잘못된 결과를 초래 쓰기정책(Write Policy): 캐쉬의 블럭 내의 데이터가 변경되었을 때 그 내용을 주 기억장치에 변경하는 시기와 방법을 결정하는 것 바로쓰기(Write through) 방식 나중쓰기(Write Back) 방식 컴퓨터 구조
8
캐시의 내용이 바뀔 때 마다 메모리의 값도 같이 바꿈 메모리와 캐쉬의 내용이 항상 일치
1) 바로쓰기(Write through) 캐시의 내용이 바뀔 때 마다 메모리의 값도 같이 바꿈 메모리와 캐쉬의 내용이 항상 일치 CPU의 동작과 DRAM의 액세스 시간의 커다란 차이로 인하여 데이터가 DRAM에 쓰여지기까지 CPU가 기다려야 하는 문제가 발생 주 메모리인 DRAM에 많은 메모리 트래픽이 발생하므로 컴퓨터의 전체적인 성능이 떨어지는 문제점 쓰기버퍼(write buffer)를 사용 그림: 쓰기버퍼와 캐쉬 바로쓰기 컴퓨터 구조
9
쓰기버퍼(write buffer) 마이크로프로세서와 DRAM 메모리 사이에 위치 CPU는 데이터를 캐쉬와 쓰기버퍼에 동시에 씀
시작하고, 쓰기버퍼 제어기(controller)가 쓰기버퍼로부터 DRAM으로 데이터 를 이동시킴 단순한 FIFO 형식의 버퍼로써 일반적으로 4 개 정도의 엔트리를 가짐 쓰기버퍼 포화(saturation): CPU로부터 쓰기버퍼로의 쓰는 속도가 제어기가 쓰기버퍼로부터 DRAM으로 이동시키는 속도보다 빠를 경우에는 쓰기버퍼 에서 데이터의 오버플로우가 발생하는 현상 버퍼 크기 확장/2차 캐쉬 사용 그림: 2차 캐쉬와 쓰기버퍼의 사용 컴퓨터 구조
10
나중 쓰기(Write back) 쓰기 중에는 캐쉬의 내용만을 바꾸고, 캐쉬의 전체 블록을 교체할 경우에만
주 메모리의 내용을 업데이트 - 캐쉬의 내용과 메모리의 내용이 다를 수 있는 문제점 - 메모리와 캐쉬의 내용 불일치 문제를 해결하기 위해 복잡한 회로 필요 컴퓨터 구조
11
캐쉬 성능 캐쉬의 성능: 평균 메모리 액세스 시간을 줄임으로써 향상되어짐
메모리 액세스 시간 = 히트 시간 + 미스율 x 미스 패널티(penalty) (캐쉬 성능을 높이는 방법) a) 캐쉬 미스율을 줄임 - 충돌을 줄이기 위하여 연관성을 높임 - 캐쉬의 크기를 늘임 - 하드웨어/컴파일러에 의해 미리 인출 b) 미스 패널티를 줄임 - 쓰기버퍼(write buffers)를 사용 - 비블럭킹(nonblocking) 캐쉬를 사용 - 2차 캐쉬를 사용 c) 히트 시간을 줄임 - 작고 간단한 캐쉬(small, simple caches)를 사용 - 파이프라인 동작(pipeline operation)을 수행 - 주소 변환을 피함 비블럭킹 캐쉬란 캐쉬 실패로 인한 지연 시간을 숨기고자 하는 것 Hit under miss : 실패가 처리되는 동안에 추가적인 캐쉬 히트를 가능하게 함으로써 캐쉬 미스가 발생하였을 경우 발생하는 지연을 다른 일을 함으로써 감춤 miss under miss: 여러 캐쉬 미스를 허용 함으로써 두 개의 다른 실패로 인한 지연 시간을 중첩시키는 것 컴퓨터 구조
12
캐시 미스의 3 가지 원인 1) 강제 미스(compulsory miss)
컴퓨터를 처음 시작하였을 때, 캐시에는 아무 내용이 저장되어 있지 않았기 때문에 일어나는 당연한 캐시 미스 강제 미스는 블럭의 크기를 크게 하면 줄어들 수 있음 2) 용량 미스(capacity miss): 모든 주 메모리의 내용이 캐시에 저장되지 못하기 때문에 일어나는 미스 용량 미스는 캐시의 크기를 크게 함으로 줄어들 수 있음 3) 충돌 미스(conflict miss): 직접 사상과 같이 캐시의 내용을 적재하거나 교체하는 경우에 일어나는 미스 충돌 미스는 연관성을 크게 하면 줄어들 수 있음 컴퓨터 구조
13
강제 미스나 용량 미스는 줄일 수 있으나 히트 시간이 증가 ▷ 블럭의 크기를 늘임
▷ 캐시의 크기를 크게 함 강제 미스나 용량 미스는 줄일 수 있으나 히트 시간이 증가 ▷ 블럭의 크기를 늘임 강제 미스나 용량 미스는 줄일 수 있으나, 블럭의 수가 줄기 때문에 충돌 미스가 늘어나며, 블럭의 크기가 커짐으로써 미스 패널티가 증가 ▷ 연관성을 늘임 충돌 미스는 줄어드나, 캐시 액세스 시간이 증가 [예제 7-6] 캐시 성능에 관한 문제 - 어떤 프로그램에서 명령어의 30%가 데이터 액세스 캐시 히트율은 0.95이고, 히트 시간은 1 클럭 사이클이고, 미스 패널티는 15 클럭 사이클 캐시 미스가 발생하면 원하는 데이터를 CPU로 가져오기 위하여 추가적으로 15 클럭 사이클이 필요 평균 메모리 액세스 시간을 구하라 컴퓨터 구조
14
평균 메모리 액세스 시간 = 히트 시간 + 미스율 x 미스 벌칙 = 1 사이클 + (0.05 x 15 사이클)
(풀이) 평균 메모리 액세스 시간 = 히트 시간 + 미스율 x 미스 벌칙 = 1 사이클 + (0.05 x 15 사이클) = 1.75 사이클 - 5%의 캐시 미스로 인하여 평균 메모리 액세스 시간은 1.75 배 증가 이 프로그램에 수행되어지는 명령어 수가 1000 개일 경우에 메모리 지연 시간을 구하면 다음과 같음 메모리 지연 시간 = 메모리 액세스 수 x 미스율 x 미스 벌칙 = (0.3 x 1000) x 0.05 x 15 사이클 = 225 사이클 따라서 캐시 미스가 없을 경우에는 프로그램 실행을 위하여 1000 사이클이 필요했지만, 5 %의 캐시 미스로 인하여 실행시간이 1.225배 증가했음 컴퓨터 구조
15
컴퓨터 구조
16
캐시의 미스율을 줄이는 방법 1) 주 메모리와 캐시 사이에 이동되는 블럭의 크기를 크게 함
한꺼번에 많은 데이터가 캐시로 이동할 수 있으므로 강제 미스가 줄어듦 이동되는 블럭의 크기가 크게 되면, 캐시에서 제거되는 데이터의 크기도 증가되기 때문에 캐쉬 오염(cache pollution)을 일으킬 수가 있음 불필요한 데이터가 캐시에 많이 적재될 수 있다. 블럭의 크기가 커지면 미스 패널티가 커질 수가 있음 더 큰 블럭을 적재하기 위하여서는 더 많은 사이클이 필요하기 때문 2) 연관성(associativity)를 늘임 연관성을 높이면 충돌 미스를 줄일 수 있음 연관성을 늘이면 캐시 히트임을 비교하는 시간의 증가 데이터 액세스 시간이 늘어나는 문제점 많은 캐시의 블럭을 비교하기 위하여 더 많은 로직(logic)이 필요 비교하는 시간의 증가로 인하여 액세스 시간이 증가 컴퓨터 구조
17
- 희생 캐시: 가장 최근에 캐시에서 버려진 캐시 블럭을 저장하는 작은 캐시
3) 희생(Victim) 캐시를 사용 - 희생 캐시: 가장 최근에 캐시에서 버려진 캐시 블럭을 저장하는 작은 캐시 보통 1~5 블럭 크기이며, 캐시 미스가 일어날 경우 메모리를 액세스 하는 대신에 우선적으로 희생 캐시를 검색 - 만약 원하는 데이터가 희생 캐시에 있으면, 다시 캐시로 그 블럭을 이동시킴 - 희생 캐시의 사용은 직접 사상 방식이 쓰여질 경우 매우 효과가 좋음 자주 캐시의 내용이 바뀌는 "핑퐁" 현상이 일어날 경우 교체되는 블록을 희생 캐시에 저장시킴으로 보다 빠른 액세스를 제공 그림: 희생 캐쉬의 사용 예 컴퓨터 구조
18
4) 선인출(Prefetch) 하드웨어의 사용 캐쉬 미스가 발생하였을 경우에, 해당 블럭과 이웃한 블럭을 함께 인출하는 방식
선인출된 블럭들은 직접 캐쉬로 적재되는 것이 아니라 선인출 버퍼 (prefetch buffer)라고 불리는 별도의 저장 장소로 적재됨 이 방식은 명령어 인출에서 매우 효율적이다. 실재로 알파 칩에서는 캐쉬 미스일 경우 2 개의 블럭을 인출한다. 5) Early Restart 와 Critical Word First 방식 사용 (Early Restart 방식) 블럭을 통하여 주메모리에서 캐쉬로 데이터가 적재될 때 원하는 단어 (requested word)가 캐쉬에 도착하자마자 CPU로 보내어, CPU가 빠르게 동작하도록 하는 방식 만약 하나의 블럭이 4 개의 단어로 이루어졌고, 원하는 단어가 두 번째 단어인 경우 첫 번째 단어가 캐쉬로 전송되어진 후에 두 번째 단어가 전송되어진다. 3 번째 단어가 캐쉬로 전달됨과 동시에 요청되었던 두 번째 단어를 미리 CPU로 전송 CPU가 기다리는 시간을 줄일 수 있기 때문에 미스 패널티(miss penalty) 가 줄어들 수 있음 컴퓨터 구조
19
캐쉬 미스가 발생하였을 경우 DRAM에서 캐쉬로 블럭이 전송되어질 때,
Critical Word First 방식 - 요청된 단어를 먼저 보내는 방식 캐쉬 미스가 발생하였을 경우 DRAM에서 캐쉬로 블럭이 전송되어질 때, 그 블럭의 순서대로 캐쉬로 적재되어지는 것이 아니라, 요청된 단어를 먼저 캐쉬로 전송하고, 나머지 단어들이 캐쉬로 적재되어지는 동안, 이 단어를 CPU로 적재함으로 CPU의 기다리는 시간을 줄임 위의 예에서 설펴 본 바와 같이 블럭의 두 번째 워드를 필요로 하는 경우에 첫 번째, 두 번째, 세 번째 순서로 전송하는 것이 아니라, 필요한 두 번째 워드를 먼저 보내는 방식 6) 다층(Multi-lebel) 캐쉬를 사용하는 방법 - 미스 패널티(miss penalty) 값이 갈수록 증가 미스 패널티를 줄이기 위하여 프로세서 캐쉬(1차 캐쉬)와 메모리 사이에 2차 캐쉬의 사용이 필요 1차 캐쉬로 마이크로프로세서 안에 가지며, 2차 캐쉬는 SRAM으로 주 메모리인 DRAM과 1차 캐쉬 사이에 가짐 컴퓨터 구조
20
1차 캐쉬와 2차 캐쉬를 가지는 시스템의 평균 메모리 액세스 시간
그림: 1차 캐쉬와 2차 캐쉬의 사용 예 1차 캐쉬와 2차 캐쉬를 가지는 시스템의 평균 메모리 액세스 시간 평균 메모리 액세스 시간 = (L1 히트 시간) + (L1 미스율) x (L1 미스 패널티) L1: 1차 캐쉬. L1 미스 패널티는 다음과 같이 구할 수 있음 L1 미스 패널티 = (L2 히트 시간) + (L2 미스율) x (L2 미스 패널티) L2는 2차 캐쉬 평균 메모리 액세스 시간 = (L1 히트 시간) + (L1 미스율) x ((L2 히트 시간) + (L2 미스율) x (L2 미스 패널티)) 컴퓨터 구조
21
다음과 같은 값을 가지는 2 계층 캐쉬 메모리 시스템의 평균 메모리 액세스 시간을 구하라. L1 히트 시간 = 1 사이클
[예제 7-7] 다음과 같은 값을 가지는 2 계층 캐쉬 메모리 시스템의 평균 메모리 액세스 시간을 구하라. L1 히트 시간 = 1 사이클 L1 미스율 = 5 % L2 히트 시간 = 4 사이클 L2 미스율 = 20 % L2 미스 패널티 = 100 사이클 (풀이) L1 미스 패널티 = * 100 = 24 따라서 평균 메모리 액세스 시간은 다음과 같음 평균 메모리 액세스 시간 = *24 = 2.2 사이클 컴퓨터 구조
22
위의 예제에서 2 차 캐쉬가 없을 경우에 평균 메모리 액세스 시간을 구하라. (풀이)
[예제 7-8] 위의 예제에서 2 차 캐쉬가 없을 경우에 평균 메모리 액세스 시간을 구하라. (풀이) 평균 메모리 액세스 시간 = * 100 = 6 사이클 앞의 두 예제에서 볼 수 있듯이 2 차 캐쉬를 사용함으로써 6/2.2 = 2.73 배의 속도 향상을 얻을 수 있음 컴퓨터 구조
23
- 명령어 캐쉬(Instruction Cache)와 데이터 캐쉬(Data Cache)로 분리됨
캐쉬의 유형 1) 분리 캐쉬 - 명령어 캐쉬(Instruction Cache)와 데이터 캐쉬(Data Cache)로 분리됨 - 명령어들은 실행되는 경우 쓰기 동작보다는 순서대로 액세스되어 실행됨 명령어의 액세스는 시간 지역성과 공간 지역성이 높기 때문에 이러한 지역성의 원리를 사용하여 액세스하는 장점을 살릴 수 있음 - 분리 캐쉬는 명령어와 데이터가 동시에 액세스 되어질 수 있다는 장점 2) 통합캐쉬 - 설계가 간단 표: 펜티엄 프로(Pentium Pro)와 PowerPC 프로세서의 1차 캐쉬 특성 컴퓨터 구조
24
자기디스크 - 컴퓨터 시스템의 외부 기억장치 중에서 가장 기본이 되는 메모리
자성 물질로 코팅된 플래스틱이나 혹은 금속으로 된 원형 평판(circular platter)로서, 데이터는 헤드(Head)라고 불리는 전도성 코일을 통하여 디스크에 저장 저장된 데이터를 읽거나 혹은 데이터를 디스크에 쓸 경우에는 평판이 헤드 밑에서 회전하고 헤드는 고정된 상태로 이루어짐 데이터의 읽기와 쓰기 동작은 헤드에 전류가 흐름으로 발생되는 자장 (magnetic field)에 의한 전기적인 성질을 이용 자기 디스크의 구성 * 트랙(track) * 섹터(sector) 컴퓨터 구조
25
디스크 액세스 시간 디스크에서 데이터를 읽거나 저장하는 과정
① 헤드를 원하는 데이터가 저장되어 있는(혹은 저장하려는) 트랙으로 이동 ② 저장되어 있는(혹은 저장하려는) 섹터가 헤드의 아래로 오도록 회전 ③ 데이터를 이동 탐색시간(seek time): 헤드를 원하는 데이터가 저장되어 있는(혹은 저장하려 는) 트랙으로 이동할 때 걸리는 시간 회전 지연시간(rotational delay): 저장되어 있는(혹은 저장하려는) 섹터가 헤드의 아래로 오도록 회전시키는데 걸리는 시간 데이터 전송시간(data transmission time): 데이터를 이동하는데 걸리는 시간 * 디스크 제어기(disk-controller)에서 소요되는 시간 디스크 액세스 시간 = 탐색시간 + 회전지연시간 + 데이터전송시간 + 기타시간 컴퓨터 구조
26
- 헤더가 원하는 트랙의 위치에 오는데 까지 10 ms - 데이터의 전송률은 10 MB/sec
[예제 7-9] - 헤더가 원하는 트랙의 위치에 오는데 까지 10 ms - 데이터의 전송률은 10 MB/sec 디스크: 6000 RPM의 속도로 움직이며, 헤더가 원하는 sector에 도달할 때까지 평균 1/2 회전 - 다른 모든 오버헤드는 무시 512KB 데이터를 디스크의 한 섹터로부터 읽거나 쓰는데 걸리는 평균 시간 을 구하라. (풀이) 6000 RPM -> 1회전하는데 10[ms]가 필요 1/2 회전을 위하여 5[ms]가 소요된다. 데이터 전송지연은 512 KB/10 MB/s = 0.05 [sec] 디스크 액세스 시간 = 탐색시간 + 회전지연시간 + 데이터전송시간 + 기타시간 = 10 [ms] + 5 [ms] + 50 [ms] = 65 [ms] 컴퓨터 구조
27
2) 디스크 헤더가 250번 째 트랙에 위치하고 있을 때, 980 번 째 트랙의 한 섹터를 요구할 때
(하드 디스크 예제) 표면당 트랙 수 = 1200 트랙당 섹터 수 = 50 섹터당 데이터 길이 = 512 바이트 트랙당 탐색시간 = 0.04 ms 회전축의 속도 = 3600 rpm 데이터 전송 속도 = 4 Mbytes/sec 1) 디스크의 표면당 저장 용량은 ? 2) 디스크 헤더가 250번 째 트랙에 위치하고 있을 때, 980 번 째 트랙의 한 섹터를 요구할 때 a) 탐색(seek) 시간은 ? b) 반대쪽에 있다면 회전 지연시간은 ? c) 한 섹터의 데이터를 전송하는 시간은 ? d) 총 디스크 액세스 시간은 ? 3) 위와 같은 디스크 표면이 양면(double-side)으로 구성된 평판 4개로 이루어진 디스크 드라이브인 경우에 한 실린더(cylinder) 당 저장 용량은? 컴퓨터 구조
28
RAID(Redundant Array of Inexpensive Disks)
프로세서의 속도와 상대적으로 느린 기계장치인 디스크 드라이브 사이의 속도 차이를 좁히기 위한 목적으로 제안됨 - 여러 개의 작으면서 독립적인 커다란 디스크의 배열(array)로서 마치 하나의 논리적인 고성능의 디스크로서 동작 성능/신뢰성 향상 디스크 인터리빙(Disk Interleaving) :데이터 블럭들을 여러 개의 디스크들에 분산 저장하는 기술 RAID 기술의 원리 1) 데이터의 나눔 (Data Stripping) * 여러 디스크를 동시에 액세스할 수 있게 되어 성능을 높임 * 데이터는 같은 크기의 여러 조각(segment)으로 나뉘어져서 여러 디스크로 분산 저장 문제점: MTTF 2) 중복성(Redundancy) * 일부의 데이터가 손실될 경우에 복구 1) 적은 수의 분리된 디스크에 중복된 데이터를 저장하는 방법 2) 모든 디스크에 중복 데이터를 균등하게 나누어서 저장하는 방법 컴퓨터 구조
29
(1) RAID 레벨 0 - 중복없이 데이터를 나눔 - RAID 0에서는 저장되어질 데이터가 배열 내의 모든 디스크에 분산저장
두 개의 I/O 장치에서 서로 다른 블럭의 데이터를 요구할 경우에, 요구된 블럭들이 다른 디스크에 저장되어 있을 가능성이 높음 - 두 개의 요구들이 병렬로 처리되어 I/O 처리 시간을 줄일 수 있음 데이터는 사용 가능한 디스크들에 스트라입(stripe)됨. 즉, 디스크는 여러 조각들(stripe)로 나누어지며, 이 조각들은 물리적 불럭, 섹터 혹은 다른 저장 단위가 될 수 있다. 이 조각들은 연속적인 배열의 디스크들에 라운드-로빈(round-robin) 방식 으로 저장이 경우 모든 데이터는 하나의 논리적인 디스크 상에 저장되어 있는 것처럼 보임 RAID 0에서 n 개의 디스크들로 구성되어진 배열에서 첫 번째 n개의 논리적 조각들은 n개의 디스크들의 첫 번째 조각에 위치하고 , 두 번째 조각은 각 디스크의 두 번째 조각에 위치함 컴퓨터 구조
30
▷ 가장 좋은 쓰기(write) 성능을 제공한다. - 중복된 데이터 업데이트가 없음
그림: RAID 레벨 0 RAID 0의 특성 ▷ 가장 좋은 쓰기(write) 성능을 제공한다. - 중복된 데이터 업데이트가 없음 ▷ 가장 좋은 공간 사용효율(space utilization)을 제공 ▷ 읽기 성능에 있어서는 최선의 방법이 아님 컴퓨터 구조
31
(2) RAID 레벨 1 - RAID 1에서는 단순히 모든 데이터들을 복사함으로써 중복성을 구현
- 디스크 반사(Disk Mirroring) 방식이라고도 부름 모든 데이터 디스크들에 해당하는 복사본의 반사 디스크들이 존재 RAID1은 RAID0와 마찬가지로 스트라이핑이 사용되었지만 이 경우에는 각 논리적 스트립은 두 개의 물리적 디스크로 사상되었기 때문에, 배열 내의 모든 디스크들은 동일한 데이터를 가지고 있는 반사 디스크를 가짐 그림: RAID 레벨 1의 구조 컴퓨터 구조
32
RAID 1의 특성 ▷ 모든 데이터 디스크는 반사 디스크를 가짐 ▷ 두 개의 중복된 디스크를 가지므로 가장 값비싼 방식
▷ 병렬로 읽기가 허용됨 이 경우 더 짧은 액세스 시간의 디스크로부터만 서비스 받을 수 있음 ▷ 데이터를 쓸 때에 두 개의 디스크가 사용되어지는데, 경우에 따라서 순차적으로 일어남. 이 경우 두 개의 디스크 중에 더 느린 디스크에 의해 쓰기 동작의 성능에 제한을 받음 ▷ 최대 전송률은 하나의 디스크 전송률과 같음 ▷ 오류에 대한 복구가 간단하다. 하나의 디스크에 오류가 발생하여도 다른 디스크로부터 데이터를 액세스할 수 있음 컴퓨터 구조
33
RAID 레벨 2 데이터 단어들의 비트를 여러 개의 데이터 디스크에 한 비트씩 분산 저장 시키며 에러 정정 코드를 포함
검사 디스크들은 해밍 코드(Hamming Code)에 의해 구해진 검사 비트들을 저장 하나의 비트 오류를 검사하기 위하여 데이터 디스크(D)와 검사 디스크(C)의 수는 다음과 같은 관계식을 가짐 - (장점) RAID 1에 비하여 적은 수의 디스크를 요구 - (단점) 여전히 비싸다는 문제점 컴퓨터 구조
34
RAID 2의 특성 ▷ 데이터 디스크에 비트 단위로 저장되어짐 ▷ 중복 구조를 위하여 해밍 코드가 사용되어짐
▷ 데이터 디스크의 수가 증가할수록 공간 사용률(space utilization)이 증가 ▷ 최대 전송률은 통합된 디스크의 대역폭과 같음. 읽기 요구가 많을 경우에 읽기 효율이 대단히 좋고, 적은 요구에서는 나쁨. ▷ 많은 오류가 발생하는 환경에서 사용할 경우에 매우 효과적 임 컴퓨터 구조
35
(4) RAID 레벨 3 - RAID 2와 비슷하나, RAID 3는 하나의 중복(패리티) 디스크만을 필요로 함
- 데이터 디스크들의 동일한 위치에 있는 비트들에 대한 패리티 비트가 패리티 디스크의 동일한 위치에 저장됨 - 만약 어떤 데이터 디스크에서 오류가 발생하면, 패리티 디스크와 다른 데이터 디스크에 있는 데이터들을 통하여 오류가 발생한 데이터를 복구할 수 있음 - 이 경우 오류가 발생한 디스크는 교체하고, 새로운 디스크에 복구된 데이터를 저장함. RAID 3에서 데이터 복구 과정 1) 그림에서 보는 바와 같이 4 개의 데이터 디스크에 저장되어 있는 비트들을 라고 하고, 패리티 디스크의 같은 위치에 있는 패리티 비트를 라고 하면 다음과 같은 관계식을 가짐 2) 만약 3 번째 비트가 오류가 발생하였으면, 그 비트는 다음과 같은 과정을 통하여 복구할 수 있음 컴퓨터 구조
36
만약 데이터 1110 가 각각의 데이터 디스크에 한 비트씩 저장되어 있을 경우 의 값은 1 임
- 이 경우 3 번째 비트에서 오류가 발생하였을 경우 다음과 같이 복구할 수 있음 그림: RAID 레벨 3의 구조 컴퓨터 구조
37
RAID 3의 특성 ▷ 데이터 디스크에 비트 단위로 저장되어짐
▷ 읽고 쓰는 과정에서 모든 디스크들이 참여함 ▷ 읽기 과정에서 병렬로 데이터 전송이 가능함 ▷ 디스크 액세스에 대하여 한 번에 한 개씩만 처리할 수 있음 컴퓨터 구조
38
(5) RAID 레벨 4 - 데이터의 저장을 비트 단위로 하지 않고 블럭 단위로 함
패리티 블럭을 계산하여 패리티 디스크에 저장 블럭 단위로 데이터를 저장함으로써, RAID2나 RAID 3에서 비트 단위로 저장하기 때문에 읽기 동작이나 쓰기 동작에서 모든 디스크들이 참여해야 하는 문제점이 해결될 수 있음 RAID 4 에서는 데이터가 블럭 단위로 저장되기 때문에 데이터에 대한 액세스 요구가 독립적으로 처리되어 질 수 있음 이 방식에서도 하나의 블럭의 내용이 변경되면, 패리티 블럭의 내용도 바뀌 어야 한다. 이 경우 새로운 패리티 블럭을 구하기 위하여 변경된 디스크 블록 이외에도 같은 위치에 있는 다른 블럭들을 사용해야 하는 문제점을 가짐 (예) 세 번째 블럭 B3의 내용이 변경이 되어 B3` 가 되었다고 가정하는 경우에 새로운 패리티 블럭을 구하는 법 컴퓨터 구조
39
위의 계산을 위하여 B1, B2, B4를 각자의 디스크로부터 읽어 와야 하고, 계산
되어진 새로운 패리티 블럭 P`를 패리티 디스크의 같은 위치에 저장해야 함 하나의 블럭 변화가 3 번의 읽기(위의 예에서 B1, B2, B4 )와 두 번의 쓰기 (B3`, P`)가 필요 - 디스크 쓰기 동작에 걸리는 시간이 매우 길어지게 되어 성능의 저하가 일어남 위에서의 문제점을 해결하고 빠른 쓰기 동작을 할 수 있는 방법 을 이용 - P`를 다시 계산하면 -> 어떤 블럭의 내용이 변경되었을 경우에, 두 번의 블럭 읽기와 두 번의 블럭 쓰기만 필요하게 된다. 또한 이러한 방식을 사용하면 데이터 디스크의 수와 상관없이 항상 동일한 수의 액세스가 필요하다는 장점을 가짐 컴퓨터 구조
40
▷ 모든 쓰기에 있어서 패리티 디스크의 액세스가 필요하므로 병목현상이 발생할 수 있음
그림: RAID 레벨 4의 구조 RAID 4의 특성 ▷ 디스크에 블럭 단위로 저장되어짐 ▷ 모든 쓰기에 있어서 패리티 디스크의 액세스가 필요하므로 병목현상이 발생할 수 있음 ▷ 블럭 크기의 데이터의 읽기는 오직 하나의 디스크만 액세스함으로 이루어 짐 컴퓨터 구조
41
(6) RAID 레벨 5 RAID 4와 비슷한 구조를 가지나, RAID 5에서는 패리티 블럭들이 모든
디스크에 분산되어 저장되어짐 따라서 RAID 4와 같이 블럭이 변경될 때 마다 항상 패리티 디스크를 액세스 할 필요가 없게됨 패리티 블럭의 배치는 각 데이터 디스크에 라운드 로빈 방식으로 이루어짐 (그림 참조) 블럭 B1, B2, B3, B4에 대한 패리티 블럭은 다섯 번째 블럭에 저장되고, 블럭 B5, B6, B7, B8에 대한 패리티 블럭은 네 번째 블럭에 저장되어짐 이와 같은 분산 저장 방식을 통하여, 패리티 갱신을 위한 디스크 액세스들이 분산되어 패리티 디스크에서의 병목 현상이 사라지고, 읽기 동작이 병렬로 이루어질 수 있음 RAID 5의 특성 ▷ 패리티 블럭들이 모든 디스크에 균등하게 분산되어짐 ▷ 쓰기 동작이 병렬로 이루어질 수 있음 ▷ 읽기 동작에서 높은 병렬처리가 이루어질 수 있음 컴퓨터 구조
42
RAID 레벨 6 그림: RAID 레벨 5의 구조 이론적인 레벨의 RAID 기술
데이터의 손실없이 2 개의 데이터 실패를 유지할 수 있음 컴퓨터 구조
43
표: 각 RAID 레벨의 비교 컴퓨터 구조
Similar presentations