일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 파이썬
- TiL
- 네트워크
- BFS
- 크래프톤 정글
- 핀토스
- kraftonjungle
- 오블완
- C
- 티스토리챌린지
- 알고리즘수업-너비우선탐색2
- 다익스트라
- 알고리즘
- 백준
- User Stack
- 연결리스트
- anonymous page
- 4기
- 이벤트 함수 실행 순서
- Unity
- 전쟁-전투
- pintos
- 크래프톤정글
- 크래프톤정글4기
- 크래프톤 정글 4기
- 추상클래스와인터페이스
- c#
- project3
- 유니티
- KRAFTON JUNGLE
Archives
- Today
- Total
말감로그
CSAPP 6-1 RAM/ROM 본문
728x90
6. 메모리 계층 구조
- 메모리 시스템은 여러가지 용량, 비용, 접근 시간을 갖는 저장장치들의 계층구조이다.
- CPU 레지스터들은 가장 자주 이용하는 데이터를 보관한다. 작고 빠른 캐시 메모리는 CPU 부근에서 비교적 느린 메인메모리에 저장된 데이터와 인스트럭션들의 부분집합에 대한 준비장소로 사용된다. 메인 메모리는 크고 느린 디스크들에 저장된 데이터를 준비하는데 사용되고, 다시 이 디스크들은 네트워크로 연결된 다른 머신들의 디스크나 테이프에 저장된 데이터를 위한 준비장소로 사용된다.
- 메모리 계층구조는 잘 작성된 프로그램이 어느 특정 수준의 저장장치를 다음 하위 수준의 저장장치보다 좀 더 자주 접근하는 경향을 갖기 때문에 작동한다. 그래서 다음 수준에 있는 저장장치는 더 느릴 수 있으며, 비트당 크기도 더 크고 값도 더 싸다.
- 좋은 지역성을 갖는 프로그램들은 동일한 집합의 데이터 원소들에 계속해서 접근하려는 경향이 있거나, 근처의 데이터 집합 접근하려 한다. 좋은 지역성을 갖는 프로그램들은 나쁜 지역성을 갖는 프로그램들보다 좀 더 상위 메모리 계층에서 더 많은 데이터에 접근하려고 하는 경향이 있으며, 더 빨리 돌게 된다.
6.1 저장장치 기술
6.1.1 랜덤-접근 메모리
- 랜덤-접근 메모리(RAM)은 두 종류를 가진다 - 정적, 동적
- 정적 램(SRAM)은 동적 램(DRAM)보다 더 빠르고 훨씬 더 비싸다. 캐시 메모리로 사용되며 CPU칩 내부 또는 외부에 장착된다.
- 동적 램(DRAM)은 메인메모리와 그래픽 시스템의 프레임 버퍼로도 사용된다.
정적RAM
- SRAM은 각 비트를 이중안정 메모리 셀에 저장한다. 각 셀은 여섯 개의 트렌지스터 회로로 구현된다. 이 회로는 두 개의 전압 구성 또는 상태로 무한히 머물러 있을 수 있는 특성을 가지며, 이 두 가지 상태/외의 다른 상태들은 모두 불안정해지게 된다. 이러한 메모리 셀은 역진자와 유사하다.
- 진자는 왼쪽으로 완전히 기울거나 오른쪽으로 완전히 기울어질 때 안정화된다. 원리적으로 진자는 수직 방향으로도 무한히 균형을 유지할 수 있지만, 이 상태는 준안정상태다. - 최소한의 외력이 가해져도 넘어지게 되고, 일단 넘어지면 결코 수직 위치로 되돌아가지 않는다.
- 이중안정 본성으로 인해 SRAM 메모리 셀은 자신의 값을 전원이 공급되는 한 무한히 유지하게 된다. 심지어 이 회로는 전기적 잡음 같은 외력이 전압을 흔들 때도 외력이 없어지면 안정한 값으로 돌아갈 것이다.
SRAM은 DRAM에 비해 속도가 빠르고, 새로 고침이 필요 없으므로 전력 소모가 적다.
하지만, 하나의 비트를 저장하기 위해 여러 개의 트랜지스터가 필요하므로,
DRAM보다 비용이 높고, 동일한 용량을 가진 메모리를 만들기 위해서는 더 많은 공간이 필요하다는 단점이 있다. -> 주로 캐시 메모리와 같이 속도가 중요한 곳에 사용
동적RAM
- DRAM은 각 비트를 전하로 캐패시터에 저장한다. - 이 캐패시터는 매우 작다.
- DRAM 저장장치는 집적도를 매우 높일 수 있다. -각 셀은 캐패시터 하나와 접근 트랜지스터 하나로 구성된다.
- SRAM과는 달리, DRAM 셀은 외란에 대해서 매우 민감하다. 캐패시터 전압이 달라지면 다시 회복할 수 없다. (디지털 카메라와 캠코더의 센서는 실직적으로 DRAM 셀의 배열이다.)
- 메모리 시스템은 주기적으로 메모리의 모든 비트를 읽었다가 다시 써주는 방식으로 리프레시해야 한다.
- -> 캐패시터가 자연스럽게 방전되기 때문
DRAM은 SRAM에 비해 구조가 단순하고 비용이 저렴해 대용량 메모리를 구현하는데 주로 사용된다.
다만, 정보를 유지하기 위해 지속적인 전력 공급과 새로 고침이 필요하므로 속도가 느리고, 전력 소모가 크다는 단점.
Enhanced DRAM
DRAM 메모리의 종류
- FPM DRAM(Fast Page Mode DRAM) : 이전 DRAM 기술에 비해 약간 더 빠른 성능을 제공. 그러나 현대 컴퓨터에는 거의 사용하지 않는다.
- SDRAM(Synchronous DRAM) : 기존 DRAM이 비동기식으로 작동했다면, SDRAM은 시스템 버스의 클럭과 동기화되어 작동한다. 이로 인해 메모리 접근 시간을 줄일 수 있다.
- EDO DRAM(Extended Data Output DRAM) : FPM DRAM의 발전형으로, 데이터 출력 속도를 빠르게 할 수 있다. 이 또한 현대 컴퓨터에는 거의 사용하지 않는다.
- DDR SDRAM(Double Data Rate Synchronous DRAM) : SDRAM의 발전 형태로, 한 클럭 사이클마다 데이터를 두 번 전송하므로 기존 SDRAM보다 빠르다. DDR SDRAM은 세대가 지날수록 속도가 빨라지는데, DDR, DDR2, DDR3, DDR4 등 여러 세대가 있다.
- VRAM(Video RAM) : 주로 그래픽 카드에서 사용되는 특수한 형태의 RAM. CPU가 아닌 GPU에 의해 처리된다. 동시에 두 개의 데이터를 읽고 쓸 수 있는 '듀얼 포팅' 기능을 가지고 있다.
비휘발성 메모리
- DRAM과 SRAM은 전원이 꺼지면 정보도 잃어버리기 때문에 휘발성이다.
- 반면에, 비휘발성 메모리는 이들의 전원이 꺼져도 정보를 유지한다. 이들을 ROM(Read-only memory)라고 한다.
- ROM은 컴퓨터나 다른 전자 기기의 기본적인 시스템 동작을 제어하는 펌웨어를 저장하는 데 주로 사용된다.
- (컴퓨터에서는 BIOS(Basic Input Output System) 정보가 ROM에 저장되어 있다.)
- BIOS: 사용자가 컴퓨터를 켜면 시작되는 프로그램으로 주변 장치와 컴퓨터 운영 체제 사이의 데이터의 흐름을 관리한다.
ROM 종류
- PROM(Pragrammable ROM) : 사용자가 한 번만 기록할 수 있는 ROM이다. 각 메모리 셀에 높은 전류를 흘리면 한 번에 끊어질 수 있는 일종의 퓨즈를 가지고 있다.
- EPROM(Erasable Programmable ROM) : 특수한 방법을 사용해 데이터를 지울 수 있는 ROM이다. 빛이 저장장치 셀에 도달할 수 있는 투명한 수정 윈도우를 가지고 있는데 이 창을 통해서 자외선을 비추면 0으로 지울 수 있다.
- EEPROM(Electrically Erasable Programmable ROM) : 전기적인 방법으로 데이터를 지우고 다시 기록할 수 있는 ROM이다.
- Flash Memory : EEPROM의 한 형태로, 블록 단위로 데이터를 지우고 다시 기록할 수 있다. USB메모리 스틱, SD카드, SSD 등에 사용된다.
메인 메모리 접근하기
- 데이터는 '버스'라고 하는 공유된 전기회로를 통해서 프로세서와 DRAM 메인메모리 간에 앞뒤로 교환한다.
- CPU와 메모리 간의 매 전송은 버스 트랜잭션이라고 부르는 일련의 단계들을 통해서 이뤄진다.
- 읽기 트랜잭션은 데이터를 메인메모리에서 CPU로 이동시키고, 쓰기 트랜잭션은 CPU에서 메인메모리로 이동시킨다.
- 버스는 주소, 데이터, 제어신호를 포함하는 병렬 선들의 집합이다. 특정 버스 설계에 따라 데이터와 주소 신호들은 같은 전선들을 공유할 수 있거나, 서로 다른 전선들을 사용할 수 있다. 또한 두 개 이상의 장치들은 같은 버스를 공유할 수 있다. 제어라인들 트랜잭션들을 동기화하고 현재 어떤 종류의 트랜잭션이 수행되고 있는지 알려주는 신호들을 전송해준다.
- CPU를 I/O 브릿지로 연결하는 시스템 버스와 I/O 메인메모리를 연결하는 메모리 버스로 구성.
- I/O 브릿지는 시스템 버스의 전기적 신호를 메모리 버스의 전기적 신호로 변환한다. 또한 시스템 버스와 메모리 버스를 디스크나 그래픽카드 같은 입출력장치들이 공유하는 I/O 버스로 연결한다.
그래픽카드, 모니터, 마우스, 키보드, 디스크 같은 입출력장치들은 입출력 버스로 CPU와 메인메모리에 연결된다.
CPU에 특화된 메모리 버스와 시스템 버스와는 달리, PCI 같은 입출력 버스는 하부 CPU에 독립적으로 설계된다.
* PCI : 컴퓨터 메인보드에 주변 장치를 장착하는 데 쓰이는 컴퓨터 버스의 일종
728x90
'이론 > CASPP' 카테고리의 다른 글
CSAPP 6장 HDD, SDD (0) | 2024.02.15 |
---|