https://www.youtube.com/watch?v=m2NfFJEvssY&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=20
들어가며
대표적인 보조기억장치인 하드디스크와 플래시 메모리를 알아보자.
( 하드디스크, CD-ROM, USB, SD카드, SSD 등)
메모리 중에서도 RAM은 휘발성 저장장치이기에 전원을 뽑으면 저장된 내역을 잃게 된다.
그래서 전원공급이 되지 않더라도 저장내용을 유지할 수 있는 방법이 필요했고,
이를 보조기억장치를 사용하게 됐다.
하드디스크
➡️ 하드디스크는 자기적인 방식으로 데이터를 저장하는 보조기억장치이다.
자기적인 방식으로 데이터를 저장하기에 자기디스크의 일종으로 부르기도 한다.
◼︎ 자성물질의 코팅
자기적인 방식으로 데이터를 저장한다는 것은, 하드디스크가 자성을 이용해 데이터를 읽고 쓰는 메커니즘을 가지고 있단 뜻이다. 이 자기적 방식은 주로 하드디스크의 회전하는 디스크표면, 즉 플래터에 자성물질을 코팅하여 구현된다. 하드디스크의 플래터는 자성을 띠는 물질로 코팅돼 있고, 이 표면에 데이터를 저장한다. 이 자성물질은 미세한 자기 영역으로 나눠있고, 각각의 자기 영역은 1또는 0의 비트값을 나타내는 하나의 자기방향을 가진다.
◼︎ 쓰기작업
데이터를 저장할때, 하드디스크의 쓰기헤드는 플래터 표면에 있는 자성물질 위를 지나가며, 강력한 자기장을 이용해 물질의 자기방향을 변경한다. 이렇게 변경된 자기방향이 데이터의 비트(1 또는 0)를 나타낸다.
◼︎ 읽기작업
데이터를 읽을 때는, 하드디스크의 읽기 헤드가 플래터위를 지나가며 각 자기영역의 자기 방향을 감지한다. 헤드는 이 자기 방향의 변화를 전기 신호로 변환하여, 컴퓨터가 이해할 수 있는데이터로 변환한다.
하드디스크의 이런 자기적 저장방식은 오랜기간동안 보조기억장치로 널리 사용돼왔으며, 대용량데이터를 비교적 저렴한 비용으로 저장할 수 있는 장점이 있다. 그러나 이는 회전하는 기계적 부분이 있기에 SSD(Solid State Drive)와 같은 더 빠르고, 충격에 강한 반도체 기반 저장방식에 비해 속도가 느리고, 물리적 충격에 취약할 수 있다. 그럼에도, 대용량 데이터저장이 필요한 많은 환경에서 여전히 중요한 역할을 한다.
하드디스크 - 구성
👉 플래터와 스핀들 모터
플래터(동그란 원판)에는 수많은 N극과 S극으로 덮혀있는데(자기적 물질), 그곳에 데이터들이 저장된다.
플래터가 여러겹으로 이뤄져 있는데, 하드디스크는 많은 양의 데이터를 저장해야하기에
플래터를 여러개를 사용할 수 있고, 일반적으로 양면을 모두 사용한다.
스핀들이 플래터를 회전시켜주는데 회전의 단위가 RPM (Revolution Per Minute : 분당 회전수) 이다.
👉 헤드와 디스크 암
헤드는 플래터와 아주 미세한 차이로 떠있는 자기 물질을 읽는 구성요소이다.
플래터의 모든 면들마다 헤드가 다 붙어있어야
플래터의 면마다 덮혀있는 자기적 물질을 읽을 수 있기에
그림을 자세히 보면 플래터의 각 면마다 헤드가 달려있다.
헤드를 움직여주는 구성요소를 디스크 암이라고 하는데,
일반적을 모든 헤드가 디스크 암에 부착되어 함께 이동한다.
오른쪽 그림과 같이 헤드들이 다 따로 움직이는 것이 아니라 일반적으로 디스크암에 부착돼서 함께 움직인다.
하드디스크 - 저장단위
플래터에 데이터가 저장될 때 어떤 단위로서 저장될까?
➡️ 하드디스크는 크게 트랜과 섹터단위로 데이터를 저장한다.
섹터의 크기는 512 바이트 ~ 4096 바이트다.
► 트랙
플래터의 동심원, 그 바깥, 바깥의 바깥 모두 트랙이다.
플래터를 이루고 있는 동심원을 그리는 저장단위가 트랙이다.
► 섹터
그렇게 나눠진 트랙을 피자조각처럼 나눴을 때, 그 한 조각을 섹터라고 말한다.
하나이상의 섹터를 블록이라 부르기도 하는데, 이는 운영체제의 파일시스템 학습시 자세히 알아보자.
➡️ 플래터는 트랙과 섹터로 나뉘고 같은 트랙이 모여 실린더를 이룬다.
실린더 Cylinder 는 여러겹의 플래터가 사용될 때, (색칠한 부분)
여러겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위.
➡️ 보통 연속된 정보는 한 실린더에 기록된다.
만약 두개의 플랜더를 사용하는 하드디스크에서 4개의 섹터에 걸쳐 데이터를 저장해야 한다면,
첫번째 플래터 윗면/뒷면, 두번째 플래터 윗면/뒷면 과 같이 연속된 정보는 한 실린더에 기록된다.
이유가 뭘까?
헤드는 디스크 암에 부착돼서 다같이 움직인다.
근데 한 실린더에 기록을 하면, 헤드를 움직이지 않고도 곧바로 읽을 수가 있다.
하드디스크 - 데이터 접근 과정
하드디스크가 저장된 데이터에 접근하는 시간에 대해 알아보자.
하드디스크에 저장된 값을 CPU가 읽어들인다 했을 때, 보통 3종류의 시간으로 나뉜다.
다시 말해 하드디스크에 저장된 어떤 값을 읽거나 쓸때는 아래의 3가지 시간이 소요된다 !
❶ 탐색시간 seek time
접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
접근하려는 데이터(빨간부분)를 읽기 위해 해당 트랙으로 헤드를 옮겨야한다.
이때 헤드는 접근하려는 데이터가 존재하는 트랙이 아닌곳에 있기때문에
이 헤드를 현재 위치의 트랙에서 한칸 바깥 트랙으로 이동시켜야 한다.
이 이동시간을 탐색시간이라고 한다.
❷ 회전지연 rotational latency
헤드가 있는 곳으로 플래터를 회전시키는 시간
원하는 트랙으로 가져온 헤드가 있는 곳으로
플래터를 회전시켜 접근하려는 데이터에 헤드가 위치하도록 해야한다.
이 플래터를 회전시키는 시간을 회전지연이라고 부른다.
❸ 전송시간 transfer time
하드디스크와 컴퓨터 간에 데이터를 전송하는 시간
탐색시간은 읽기/쓰기 헤드가 데이터를 읽거나 쓰기위해
디스크 플래터 상의 올바른 트랜으로 이동하는데 걸리는 시간이다.
헤드가 올바른 트랙에 도달하면 다음단계로 넘어간다.
회전지연은 플래터가 회전하는 동안, 헤드가 올바른 트랙에 위치했다고 해도
실제 데이터가 헤드 아래를 지나갈때까지 기다려야 하는 시간이다.
즉, 올바른 섹터가 헤드 아래로 오도록 플래터의 회전을 기다리는 시간이다.
전송시간은 헤드가 데이터의 올바른 위치를 찾은 후,
실제로 데이터를 읽거나 쓰는데 걸리는 시간이다.
여기서 '전송' 은 디스크에서 데이터를 읽거 메모리로 보내거나,
반대로 메모리에서 디스크로 데이터를 쓰는 과정을 말한다.
✅전송시간이 필요한 이유
- 데이터의 양과 속도
: 전송시간은 전송해야 할 데이터의 양과 디스크의 전송속도에 따라 달라진다.
데이터가 많거나 디스크의 전송속도가 느리면 전송시간이 길어진다.
- 버스의 대역폭
: 하드디스크와 메인메모리 사이의 데이터전송은 시스템버스를 통해 이뤄진다.
이 버스의 대역폭이나 혼잡도가 전송시간에 영향을 줄 수 있다.
- 초기화와 오버헤드
: 데이터 전송을 시작하기 전에 통신채널을 설정하고,
데이터 블록을 읽거나 쓰기 위한 준비작업이 필요하다.
이런 초기화 작업도 전송시간에 포함된다.
즉, 헤드가 데이터 위치에 도달했다고 해서 즉시 데이터 전송이 완료되는 것이 아니라,
실제로 데이터를 읽고 쓰는데는 전송과정에서 데이터의 양, 전송속도, 시스템버스의 대역폭 등
관련된 여러요소들과 준비작업 등으로 인한 전송시간이 필요하다.
하드디스크 - 데이터 접근 과정에 필요한 시간들의 중요성
이 시간들이 생각보다 굉장히 큰 시간이라고 보면 된다.
지금까지 배웠던 컴퓨터의 동작시간에 비하면 굉장히 긴 시간이다.
그렇기 때문에 굉장히 중요한 시간변인이다.
아래의 표는 제프딘이라 하는 굉장히 유명한 프로그래머로,
이 분이 과거 만드셨던 발표자료의 일부를 발췌한 것이다.
(나노초는 10의 9승 분의 1초)
표를 보면 L1 캐시 참조시간이 매우 짧다. (CPU와 완전 가까우니까!)
그리고 '메모리 참조시간' 과 '메모리에서 1MB를 순차적으로 읽는시간' 을 비교해보면
압도적으로 '메모리에서 1MB를 순차적으로 읽는시간' 이 더 오래 걸린다.
* '메모리 참조시간' 과 '메모리에서 1MB를 순차적으로 읽는시간' 의 개념이해하기!
이 두가지 시간의 개념이 잘 이해가 가지 않아서 개념과 차이점을 알아보았다.
1. 메모리 참조시간 (Memory Access Time)
이는 메모리에 접근해서 데이터를 읽거나 쓰는데 걸리는 시간을 의미한다.
즉, CPU가 메모리에 데이터요청을 하고, 실제로 그 데이터를 CPU가 사용할 수 있게 되기까지 걸리는 시간이다.
이시간은 보통 단일데이터 블록(ex. 한개의 워드, 바이트) 에 대한 접근을 기준으로 측정된다.
2. 순차적 읽기 시간(Sequentual Read Time)
이는 메모리에서 연속된 데이터블록(ex. 1MB 파일)을 읽는데 걸리는 총 시간이다.
순차적 읽기는 데이터블록들이 메모리상에서 연속적 위치에 있을 때,
이들을 연속적으로 빠르게 읽어내는 과정을 말한다.
제프 딘의 발표 자료에서 언급한 "메모리 참조 시간"과
"메모리에서 1MB를 순차적으로 읽는 시간"의 차이는
실제 컴퓨터 시스템에서의 메모리 작업 속도를 반영한다.
7ns의 메모리 참조 시간은 단일 데이터에 대한 접근 시간을 나타내며,
250,000ns로 표현된 1MB 데이터를 순차적으로 읽는 시간은
더 많은 양의 데이터를 처리할 때 걸리는 시간을 나타낸다.
이 차이는 컴퓨터의 메모리 시스템이 작은양의 데이터에 대해서는 매우 빠르게 접근할 수 있지만, 큰 양의 데이터를 처리할 떄는 그 속도가 누적돼 상대적으로 느려진다는 것을 보여준다. 또한 이런 차이는 성능최적화나 시스템 설계를 할 때 고려해야할 중요한 요소이다. 메모리 접근패턴, 데이터의 양, 처리방식 등에 따라 성능에 큰 차이를 만들어 낼 수 있기 때문이다.
▪️ 단일 참조 🆚 대량 데이터 처리
7ns는 단일 메모리 위치에 대한 접근 시간. 이는 매우 빠르며, CPU가 메모리에서 하나의 데이터 항목을 가져오는 데 걸리는 시간이다. 반면, 1MB 데이터를 순차적으로 읽는 데는 훨씬 더 많은 수의 메모리 접근이 필요하고, 이는 총합산 시간이 250,000ns에 이르게 된다.
▪️ 데이터 양의 영향
1MB는 약 1,000,000 바이트에 해당하며, 이를 순차적으로 읽기위해선 단일 참조시간을 1,000,000 바이트만큼 곱해야 한다. 각 바이트를 읽는데 걸리는 시간이 작더라도 전체 데이터 양이 많기때문에 총 소요시간이 크게 증가한다.
▪️ 연속적인 접근의 이점
순차적인 읽기는 일반적으로 연속된 메모리 주소에 대한 접근이기 때문에, 특정 단위로 나눠서 빠르게 데이터를 읽을 수 있다. 그러나 이런 순차적 접근이라 할지라도 전체적으로 많은 양의 데이터를 처리한다면 상당한 시간이 소요된다.
그 아래 (하드)디스크 탐색시간을 보면 , 순차적 읽기시간보다 훨씬 큰 것을 알 수 있다.
여기서 또 하나 의미가 있는 수치를 살펴보자면 '한 패킷이 캘리포니아에서 네덜란드까지 왕복하는 시간' 과 '(하드)디스크에서 1MB를 순차적으로 읽는 시간' 의 비교이다. 이는 각각 네트워크 지연과 디스크 I/O 지연을 대표하는 예시이다. 이 두 지연시간을 비교할 때, 네트워크 지연은 전 세계를 아우르는 거리에 의존하는 반면, 디스크 I/O 지연은 상대적으로 작은 기계적 장치내부에서의 데이터 처리에 관한것이다.
이 표를 보면 하드디스크 I/O 작업이 메모리나 캐시작업보다 상대적으로 얼마나 느린지를 이해하기 위해 네트워크 지연을 예로 들고 있는데, 예를 들어 데이터가 대륙을 넘나드는 네트워크 지연시간과 비교했을 때 하드디스크의 지연시간이 비슷하거나 더 길다는 사실을 통해, 하드디스크 I/O가 상대적으로 얼마나 느린 작업인지 직관적으로 이해할 수 있다.
또 위의 표는 성능병목 현상을 시각화 해서 보여주는데, 데이터센터나 서버와 같은 고성능을 요구하는 환경에선, 각종 지연시간들이 시스템의 전체 성능에 큰 영향을 미친다. 메모리 참조시간이나 CPU 사이클과 같은 빠른 작업에 비해 하드디스크의 I/O 작업이나 네트워크 지연이 얼마나 큰 성능병목을 일으킬 수 있는지를 보여주어, 시스템 설계나 성능최적화에 있어 중요한 고려 사항임을 강조한다.
그리고 이러한 비교는 개발자나 시스템설계자에게 어떤 유형의 저장매체나 데이터 전송방식을 선택하는지에 따라 애플리케이션의 반응시간, 처리능력이 크게 달라질 수 있음을 보여준다. 예를 들어 빈번한 데이터 접근이 필요한 애플리케이션은 빠른 메모리나 캐시를 활용하는 것이 효과적이고, 대용량 데이터 처리가 중요한 경우 디스크 I/O 의 최적화가 중요할 수 있는 식이다.
▪️ 네트워크 지연(캘리포니아 - 네덜란드 왕복)
데이터 패킷이 네트워크를 통해 캘리포니아에서 네덜란드까지 왕복하는 시간은 물리적 거리와 네트워크의 속도에 의존한다. 이 거리는 수천킬로미터에 달하며, 데이터는 광섬유, 케이블, 라우터, 스위치 등을 거쳐 전송된다. 이 과정에서 발생하는 지연은 주로 신호가 이동하는 물리적 거리와 중간 네트워크 장비에 의한 처리지연에 기인한다.
▪️ 디스트 I/O 지연 (디스크에서 1MB 순차적 읽기)
하드디스크에서 1MB 데이터를 순차적으로 읽는 시간은 디스크의 회전속도, 탐색시간, 데이터 전송속도 등에 의해 결정된다. 이는 물리적으로 회전하는 플래터, 미세하게 움직이는 읽기/쓰기 헤드 등 기계적 요소에 의해 영향을 받으며 전자기적 저장방식으로 데이터를 처리한다.
위의 제프딘이 만든 표를 보며 기억해야 하는 핵심내용
➡️ 한 패킷이 캘리포니아에서 네덜란드까지 왕복하는 시간이 150,000,000 ns 인데, 하드디스크에서 1MB를 순차적으로 읽는 시간이 30,000,000ns 라는 건, 하드디스크 I/O 작업이 얼마나 느린 작업인지 체감 할 수 있다.
하드디스크 - 직접 눈으로 살펴보자
'CS 공부 > [강의] 혼공 컴퓨터구조 + 운영체제' 카테고리의 다른 글
[10/31] RAID 의 정의와 종류 (0) | 2023.10.31 |
---|---|
[10/6] 다양한 보조기억장치 (플래시 메모리) (0) | 2023.10.06 |
[9/21] 캐시 메모리 (0) | 2023.09.21 |
[9/10] 명령어 집합구조, CISC와 RISC (0) | 2023.09.11 |
[8/28] 명령어 병렬 처리 기법 (0) | 2023.08.28 |