본문 바로가기

CS/컴퓨터구조

[컴퓨터구조] External Memory(1)

현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다.


Magnetic Disk

 디스크는 substrate라고 불리는 자성이 없는 판 위에 자성을 가진 물질을 코팅한 원형 플래터를 의미한다. 흔히 우리가 HDD라고 부르는 것이 마그네틱 디스크이며, 과거에는 알루미늄이나 알루미늄 합금 판을 이용했으나 최근에는 substrate로 유리를 사용한다고 한다.

유리로 substrate을 구성하는 경우의 장점

  • 자화 물질을 판에 골고루 입혀서 디스크 신뢰성이 높아진다.
  • 표면에 발생하는 결함을 줄여 R/W 에러 감소
  • 헤더의 높이를 더 낮출 수 있어서 더 많은 데이터 삽입 가능 -> 가격 감소

간단한 동작 방식

 하드 디스크는 자성을 이용하여 데이터를 읽고 쓴다. 전자기 유도 현상에 의해 자기장이 변하면 전압이 발생하는데, 하드디스크는 이 신호를 비트 1로 생각한다. 자화 정렬 방식이 달라지면 1 아니면 0이 된다고 보면 된다.

  • READ: 헤드가 트랙 위를 지나가면 전자기 유도 현상에 의해 자성 물질들이 정렬된 방향에 따라 전압이 발생하는데, 전압이 발생하는 경우를 1 아닌 경우를 0으로 인식한다.
  • WRITE: 쓰기 헤드에는 코일이 감겨 있다. 이때 코일에 전류를 흘리면 코일 안쪽으로 지나가는 자기력선이 발생하여 헤드 주변의 자성 물질들을 자기력선 방향으로 정렬시킨다. 이를 통해 1또는 0의 데이터를 쓸 수 있다.

하드디스크의 간단한 구조. 섹터와 섹터 사이, 트랙과 트랙 사이를 구분하기 위한 gap이 있다.

 하드디스크는 데이터의 위치를 가리키는 헤더, 데이터가 저장되는 플래터로 구성된다.

  • 헤더: 현재 데이터의 위치를 가리키는 기기. READ/WRITE 동작을 수행할 수 있음.
    • 액츄에이터 암: 헤더를 움직이는 기기
  • 플래터: 데이터가 자성 기반으로 기록된 판
    • 섹터: 플래터를 각도나 반지름 등을 기준으로 하여 나눠둔 공간
    • 트랙: 한 플래터 내에서 동일 반지름 상에 있는 섹터들
    • 실린더: 다수의 플래터 내의 동일 반지름에 있는 트랙의 모음
  • 스핀들 모터: 플래터를 회전시키는 모터

섹터의 구조

섹터의 타입

 각 섹터에는 동일한 양의 데이터가 들어간다. 회전에 따른 섹터의 갯수가 일정한지에 따라 두가지로 나뉜다. 현재 대부분의 하드디스크 시스템은 용량의 이점을 누리기 위해 Multiple Zone Recording 방식을 이용한다.

  • Constant Angular Velocity: 헤더가 어디에 위치하든 동일 회전에 대해 동일한 수의 섹터를 읽는다. 중심에서 멀어질수록 섹터의 크기가 커지는 경향이 있다. 회전 각도 정보만 있으면 현재 가리키고 있는 위치를 알 수 있는 단순함을 가지고 있으나, 섹터의 크기와 관계 없이 동일한 양의 데이터를 보유한다는 점에서 용량 손해를 본다.
  • Multiple Zone Recording: 플래터를 여러개의 존으로 나누고, 각 섹터의 크기 및 밀도를 유사하게 만드는 방식이다. 섹터의 밀도가 유사하여 바깥 존으로 갈수록 섹터의 수가 늘어난다. 존에 따라 섹터의 개수가 달라 동일한 회전을 하더라도 데이터를 읽는 속도가 다르므로 읽기 속도의 보정을 위해 버퍼링이 요구될 수 있다. 

섹터의 구조

  하나의 섹터는 다양한 데이터로 이루어져 있다. ID 필드의 데이터들은 현재 섹터에 대한 정보를, 데이터 필드는 데이터를 담고 있다. 이때 전체 600bytes 중 실제 데이터와 관련된 data field을 제외한 크기는 총 85byte로, 전체의 14%정도를 차지하여 오버헤드가 상당함을 알 수 있다. 이러한 오버헤드를 줄이는 가장 좋은 방법은 데이터 필드의 크기를 늘리는 것이며 실제로도 데이터 필드의 크기를 늘리는 방식으로 발전한다고 한다.

디스크의 물리적 특성들

  • Head Motion: 헤드의 움직임
    • Fixed Head: 각 트랙마다 헤드를 가지고 있어 헤드는 고정되어 있고 플래터만 회전하여 데이터를 찾는다. 헤드의 움직임이 없으므로 속도가 빠르다는 장점이 있으나, 헤드가 움직이는 방식에 비해 가격이 높은 편이고 고장날 확률도 같이 올라가므로 현재 거의 사용되지 않는다.
    • Movable Head: 헤드 하나가 움직이면서 위치를 찾는 방식. 가격이 저렴하다.
  • Disk portability: 디스크 매체를, 정확히는 디스크 플래터 판을 이동시킬 수 있는지 다룬다.
    • Nonremovable disk: 디스크 판 단위로 이동시킬 수 없다. 현대의 하드디스크는 더 많은 데이터를 싣기 위해 헤더와 플래터 사이의 거리가 매우 가깝게 설계되어 있으며, 외부 오염에 노출되면 사용이 불가능하므로 제작 당시에 밀봉된다. 따라서 플래터를 따로 분리하려고 하드디스크 덮개를 제거하면 모든 데이터가 쓸모 없어진다.
    • Removable disk: 디스크 판 단위로 이동시킬 수 있다. 오랜 과거의 하드디스크는 헤드의 위치를 이동하여 플래터를 빼거나 낄 수 있었다고 한다. 
  •  Sides: 플래터의 양 면에 대한 사용 여부(Single Sided/Double Sided)
  • Platters: 플래터 판의 개수(Single Platter/Multiple Platter)
  • Head Mechanism: 헤드가 동작하는 방식
    • Contact: 헤드와 매체가 닿는다.
    • Fixed Gap: 헤드와 매체가 고정된 틈을 가진다.
    • Aerodynamic Gap: 하드디스크를 동작하면 유체역학적인 방식에 의해 헤드와 플래터 사이의 틈이 정해진다.

디스크의 I/O 전송 시간

 디스크가 I/O을 하는데 필요한 시간들은 다음과 같다.

  1. Wait for Device: 디바이스를 위해 대기하는 시간
  2. Wait for Channel: 채널을 사용할 수 있을 때까지 대기하는 시간
  3. Seek: 헤더가 움직여 원하는 트랙으로 이동할 때까지 걸리는 시간
  4. Rotational Delay: 스핀들 모터가 돌아 원하는 섹터로 이동할 때까지 걸리는 시간
  5. Data Transfer: 현재 위치에서 데이터를 읽어들이는데 걸리는 시간

Access Time 은 Seek Time + Rotational Latency로 정의된다.

High Performance Disk System

이름 설명
Reducing Inter-Track Gap 트랙 사이의 gap을 줄임으로써 원하는 트랙으로 이동할 때 걸리는 Seek Time을 줄인다. 이를 위해서는 플래터를 좀 더 촘촘하게 사용할 필요가 있으므로 헤드와 플래터 사이의 거리가 더 가까워져야 한다.
Higher Rotational Speed 스핀들 모터의 회전 속도를 높여 Rotational Latency을 줄인다.
Multi-Channel 
between disk and memory
디스크와 메모리 사이의 채널 수를 늘려 여유 채널을 찾기 위한 대기시간(wait for channel)을 줄인다.
Disk Array(like RAID) 디스크를 여러개 사용하여 데이터를 분산해 넣는 방식이다. 읽을 때 여러 디스크가 동시에 동작하면서 Parallel Transfer 또는 Parallel I/O을 수행할 수 있다.

Parallel Transfer: 크기가 큰 파일을 다수의 디스크에 분산하여 저장해두고, 다수의 디스크로부터 동시에 데이터를 읽어온다.
  ex) 인간 게놈 데이터 등 규모가 매우 큰 타입의 정보

Parallel I/O: 파일 사이즈가 작고, 양이 많은 경우 각 디스크에 파일들을 분산하여 저장한 우 다수의 파일에 대한 I/O을 동시에 처리한다.
  ex) 은행 개인 정보

Disk Cache(NVRAM) 비휘발성 특성을 가진 RAM을 캐시로 사용하여 디스크 데이터를 최적화하는 방식.

 캐시와 메모리는 둘 다 휘발성이므로 파워가 나가 데이터를 잃더라도 함께 잃기 때문에 큰 상관이 없지만, 디스크와 캐시는 성질이 달라 파워가 나갔을 때 디스크에는 오래된 데이터가 위치하게 된다. 이 문제를 해결하기 위해 비휘발성 RAM을 요구한다.

 디스크 I/O 작업은 locality가 그리 크지 않아 디스크 캐시를 두더라도 hit ratio가 35~40% 정도이므로 성능 향상이 크지 않아 중요도가 메모리 캐시에 비해 낮은 편이다.
LFS
(Log Structured File System)
 디스크에 데이터를 쓰거나 수정할 때 내용을 직접 변경하는 대신, 다수 파일에 대한 변경 내역을 담고 있는 로그 세그먼트를 새로운 위치에 저장하는 방식이다. 로그 세그먼트에는 여러 파일들의 변경된 내역이 저장된다. 실제로 내용을 변경하는 대신에 변경된 사항을 로그로 저장한다는 개념으로 이해하면 된다.

 사용자가 내용을 수정하면 수정된 내용들은 메모리의 로그 세그먼트 상에 모이다가 일정 이상의 크기가 되면 디스크 상에 연속적으로 작성된다. 파일을 읽을 때는 이러한 로그 정보들을 전부 모아 모든 변화가 반영된 데이터를 만들어 메모리 상에 올리게 되므로, 맨 처음 디스크에서 메모리로 읽는 시점에는 시간 지연이 있을 수 있다. 메모리에 데이터를 로드한 이후에는 시스템에서 메모리 상의 데이터를 참조할 것이기 때문이다.

 내용을 업데이트하면 파일의 업데이트 내역 모두를 가리키는 inode라는 데이터가 업데이트 된 데이터와 함께 로그 세그먼트 상에 존재하게 된다. 이때 기존 업데이트 내역과 함께 있던 inode는 예전 값을 가리키기 때문에 필요 없게 된다. 이런 예전 값들은 주기적인 garbage collection을 통해 처리한다.

LFS는 Disk Cache 이용을 통해 상대적으로 Write 비율이 증가한 상황에서 디스크에 데이터를 빠르게 쓸 수 있는 시스템을 고안한 것으로, 디스크 상의 데이터에게 이동하여 수정하는 대신 비어 있는 공간에 데이터를 쓰기 때문에 헤드의 위치는 항상 비어있는 공간으로 고정되는데, 헤드가 움직이지 않으므로 속도가 빨라지는 효과가 있다. 다만 디스크 캐시의 hit ratio가 높다는 전제가 잘 맞지 않아 엄청난 성능 효과가 있는 것은 아니고, 현실에서는 플래시 메모리에 데이터를 쓸 때 더 많이 사용된다고 한다.

LFS에 대한 정보는 다음 글들을 참고하자.

High Capacity Disk

 플래터에 내용을 쓸 때 열이나 전자파 같은 에너지를 가하면 디스크 매체의 자성이 커져 더 작은 크기에 많은 정보를 담을 수 있다고 한다. HAMR(Heat Assisted Magnetic Recording)이나 MAMR(Microwave Assisted Magnetic Recording) 같은 것이 그 예시이다. 이런 종류를 EAMR(Energy -)라고 통칭한다.

 플래터 내의 트랙을 겹쳐서 전체적인 용량을 늘리는 SMR(Shingled Magnetic Recording)도 있다고 한다. 기존 하드디스크는 각 트랙 사이에 gap이 존재하여 트랙과 트랙 사이를 구분한다. SMR에서는 이러한 gap 조차도 없애 트랙과 트랙을 겹친다. 이때 데이터를 쓰는 경우 인접 트랙의 내용도 덮어쓰게 되므로 상당히 복잡한 쓰기 프로세스를 가진다. 트랙 자체가 많아지므로 용량이 늘어나는 효과가 있으나, 데이터를 덮어 쓰는 상황에서는 유효성 문제나 성능 저하가 생길 수도 있다.

 

기존 방식(좌)와 SMR(우)의 트랙 구조 차이. SMR은 트랙과 트랙이 겹쳐진 형태를 띈다.

'CS > 컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] I/O  (0) 2022.11.03
[컴퓨터구조] External Memory(2)  (0) 2022.10.31
[컴퓨터구조] Internal Memory(2)  (1) 2022.10.18
[컴퓨터구조] Internal Memory(1)  (0) 2022.10.12
[컴퓨터구조] 캐시(3)  (0) 2022.10.10