Computer Science/System

저장 장치 구조(Storage Structure)

TwinParadox 2017. 12. 4. 00:34
728x90

모든 메모리는 바이트의 배열을 제공하며, 각 바이트는 주소값을 가지고 있다. 이 특정 메모리 주소에 대해서 일련의 적재(load)와 저장(store) 명령을 통해 상호작용이 일어난다. 적재 명령은 주 메모리에서 CPU 내부의 레지스터로 1 byte 혹은 1 word를 옮기고, 저장 명령은 레지스터에서 주 메모리(RAM;Random Access Memory;주로 DRAM)로 내용을 옮기는 것을 뜻한다. 명시적인 적재/저장 외에 CPU는 실행을 위해서 자동적으로 주 메모리로부터 명령을 적재하기도 한다.


폰 노이만 구조 시스템에서 실행되는 전형적인 명령-실행 사이클에서는, 먼저 메모리에서 명령을 가져와 그 명령을 명령 레지스터(Instruction Register;IR)에 저장하고 명령을 해독한다. 이 상황에서 메모리로부터 피연산자를 가져와 내부 레지스터에 저장할 수도 있다. 메모리 장치에서 인지할 수 있는 값은 메모리 주소값으로, 메모리는 명령 카운터(Instruction Counter), 색인(Indexing), 간접 주소(Indirection), 리터럴 주소(Literal Addresses) 등의 주소가 어떻게 생성되었는지는, 무엇인지 파악하지 못하므로 이 메모리 주소가 생성된 방법은 중요하지 않고 메모리의 주소에만 신경을 쓰게 된다.


주 메모리에 이런 정보들을 다 담고 사용한다면 아주 이상적인 컴퓨터겠으나, 안타깝게도 주 메모리는 모든 것들을 전량 기록하고 전력이 차단되면 해당 값들을 다 사라지는 휘발성이라는 한계를 가지고 있다. 이런 한계를 극복하려면 다른 저장장치의 힘을 불러야 하는데 이를 보조 저장 장치라고 하며 우리가 주로 이야기하는 SSD, HDD다.


SSD, HDD에서는 메모리에 적재되는 시점까지 거의 대부분의 프로그램들이 저장되며, 그러한 프로그램들 역시 각각이 저장해야 하는 정보들을 해당 장치에 저장한다. 용량이 주 메모리에 비해 압도적으로 많고, 영구히 보존된다는 특성 때문에 보조 저장 장치의 관리에 소홀해질 수 있으나 컴퓨터 시스템의 관점에서는 옳지 못한 행위라고 볼 수 있다.


아래 그림은 저장 장치들을 성능, 가격에 따라 계층화시킨 그림이다.







위 계층 그림을 보고 이런 의문이 들 수도 있다. 우리가 아는 저장 장치라면 종류가 저렇게 많아도 시스템의 성능 향상을 위해서라면 우월한 성능의 저장 장치로만 시스템을 구성하면 지금보다 완벽한 컴퓨터 시스템을 사용할 수 있을 것 같은데 왜 역할을 정해져 있을까? 글과 관련은 없지만 또, 말이 안 맞을 수도 있지만, '네트워크 구성 시 왜 모든 장비를 OSI 7계층 장비인 게이트웨이로만 네트워크를 구성하지 않고, 하위 장비들을 사용하는가?'라는 질문의 답을 어느정도 아는 사람이라면 쉽게 유추할 수 있을 것이다.


잠시 생각해보자. 저장 장치의 크기나 접근성, 설계 방식 등을 고려하지 않고 모든 컴퓨터 시스템의 저장 장치가 HDD나 자기 테이프(Magnetic Tape)라면? 과연 지금과 같은 크기와 성능의 컴퓨터가 우리들의 집에 한 대 혹은 두 대, 그리고 지금과 같은 두께의 스마트폰이 우리들의 손에 쥐어져 있을 수 있을까?

반대로 모든 저장 장치를 레지스터로 구성한다면? 성능은 지금보다 개선되었겠지만 가격은 무시할 수 없고(당장 자기 디스크인 HDD와 반도체 디스크인 SSD의 가격 차이가 용량 당 가격이 10배 이상 차이난다는 것을 생각해보자.) 고려해야 할 것들이 또 다른 방식으로 생기는 꼴이 된다.


결과적으로 보면, CPU와 바로 밀접하게 작업을 처리할 저장 장치는 매우 좋은 성능의 메모리를 필요한 만큼만, 그렇지 않고 영구적 저장 등 방대한 양의 데이터 처리 작업이 수행되는 저장 장치는 값싸고 여유롭게 구성하는 것이 가장 이상적이라는 이야기다. 이들 저장 장치가 가지고 있는 한계(속도, 휘발성, 가격 등)를 파악하고 그것들에 따라 이들 저장 장치들을 적재적소에 배치한 결과 지금의 컴퓨터 시스템이 구성된 것이다. 

728x90