DMA (직접 메모리 접근) - 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능이다.
과정: Device Driver를 통해 특정 주소번지에 해당 데이터를 옮겨달라 명령내림 -> 명령을 받은 Device Driver는 Disk Controller에게 명령 전달 -> 하지만 다량의 데이터 처리에 있어 부담될시 Disk Controller는 DMA Controller에게 도움 요청 (CPU를 거치지 않고 곧바로 메모리에 접근 가능토록) -> DMA Controller는 CPU에게 요청을 전달 후 CPU의 수락이 떨어지면 Disk Controller는 바로 다이렉트로 데이터를 옮길 수 있음.
• ROM(Read Only Memory) vs RAM(Random Access Memory)
-> ROM은 재사용 불가 (일회용) , 내장된 데이터는 소멸되지 않음.
즉 전력공급이 끊겨도 데이터가 살아있음. (따라서 BIOS/Bootloader에 사용됨)
-> RAM은 데이터 썼다 지웠다 반복 가능 , 전기공급 끊기면 내장된 데이터 모두 소실
• SRAM vs DRAM
S: Static , D: Dynamic
Dynamic RAM은 저장돼있는 데이터에 관해 전기공급이 이루어질 때 데이터 존재가 유지가돼야 하지만 소자 특성상 '리프레시'를 해주지 않으면 데이터가 뭉개짐(1의 데이터가 내려가고 0의 데이터가 올라오는..) 따라서 조그마한 소자에 전기를 지속적으로 공급필요.
-> 리프레시 과정중엔 접근이 불가해서 메인메모리나 SDD에 활용됨 (속도는 느리고 가격은 저렴)
Static RAM은 최초 데이터가 적재되면 리프레시 없이 기본적인 전기공급만 충족이 되면 데이터가 어그러지지 않음. 따라서 캐시나 레지스터에 사용됨
메모리 계층 구조 존재 이유
CPU가 접근 가능한 메모리
1) CPU 내 레지스터 메모리
2) CPU와 메인메모리 사이에 존재하는 캐시
3) 메인 메모리
Cache management policy
1) Write- through
-> CPU가 데이터를 사용하면 캐시에 저장되게 되는데, 데이터가 캐시 됨과 동시에 주기억장치 또는 디스크로 기입되는 방식을 지원하는 구조의 캐시이다. 즉, 캐시와 메모리 둘다에 업데이트 하는 방식.
장점 : 캐시와 메모리에 업데이트를 같이 하여, 데이터 일관성을 유지 가능.
단점 : 속도가 느린 주기억장치 또는 보조기억장치에 데이터를 기록시 CPU의 대기시간으로 인한 비효율성 발생.
데이터 로스가 발생하면 안되는 상황에서는 Write Through 추천.
2) Write-back
-> CPU 데이터 사용시 데이터는 먼저 캐시로 기록되는데 캐시 내에 일시적으로 저장된 후에 블록 단위에 캐시로부터 해제되는 때(캐시안에 있는 내용을 버릴시) 에만 주기억장치 또는 보조기억장치에 기록되는 방식. 즉, 데이터를 쓸 때 메모리에는 쓰지 않고 캐시에만 업데이트를 하다가 필요할 때에만 주기억장치나 보조기억장치에 기록하는 방법.
장점: write-throgh 보다 속도측면에서 우수하다.
단점: 캐시에 업데이트 후 바로 메모리에 옮기지 않으므로 저장되는 정보의 상이성 발생 가능.
출처 : https://news.skhynix.co.kr/post/magic-controller
일반적인 운영체제의 파일 시스템을 기반으로 하는 프로그램들은 디스크를 섹터 기반으로 인식하지만, SSD는 페이지와 블록을 기반으로 저장 단위 구현
섹터를 기반으로 인식하는 프로그램은 SSD에 데이터를 직접 기록할 수 없음.
섹터 기반의 프로그램이 SSD를 인식할 수 있도록 도와주는 무언가가 필요한데, 이것을 FTL (Flash Translation Layer), 즉, 플래시 변환 계층이라고함.
FTL은 SSD의 컨트롤러 내에서 동작하며 가상의 논리적 섹터를 생성하여, 섹터 기반의 프로그램들이 이를 통해 실제 SSD의 물리적 페이지에 데이터를 기록하도록 도와줌.
FTL이 논리적 섹터를 물리적 페이지에 저장하기 위해서는 논리적 주소를 물리적 주소 값으로 변환해야 하는데, 이에 대한 정보는 Mapping table을 참조하여 변환.