책/CSAPP

CSAPP 6.1

에린_1 2024. 2. 9. 00:10
728x90

6. 메모리 계층구조

  • 메모리 시스템은 여러가지 용량, 비용, 접근 시간을 갖는 저장장치들의 계층구조다.
  • CPU 레지스터들은 가장 자주 이용하는 데이터를 보관한다. 작고 빠른 캐시 메모리는 CPU부근에서 비교적 느린 메인메모리에 저장된 데이터와 인스트럭션들의 부분집합에 대한 준비장소로 사용된다. 메인메모리는 크고 느린 디스크들에 저장된 데이터를 준비하는데 사용되고, 다시 이 디스크들은 네트워크로 연결된 다른 머신들의 디스크나 테이프에 저장된 데이터를 위한 준비장소로 사용된다.
  • 메모리 계층구조는 잘 작성된 프로그램이 어느 특정 수준의 저장장치를 다음 하위 수준의 저장장치보다 좀 더 자주 접근하는 경향을 갖기 때문에 작동하다. 그래서 다음 수준에 있는 저장장치는 더 느릴 수 있으며, 비트당 크기도 더 크고 값도 더 싸다. 전체적인 효과는 계층의 바닥 근처의 값싼 저장장치만큼 값이 싸지만, 계층의 꼭대기 부근의 빠른 저장장치의 성능으로 프로그램에 데이터를 제공하는 큰 메모리 풀Pool이다.
  • 좋은 지역성을 갖는 프로그램들은 동일한 집합의 데이터 원소들에 계속해서 접근하려는 경향이 있거나, 근처의 데이터 집합 접근하려한다.

6.1 저장장치 기술

6.1.1 랜덤 - 접근 메모리

  • 랜덤 - 접근 메모리(RAM)는 두 종류를 가진다. - 정적, 동적. 정적 램 SRAM은 동적 램 DRAM보다 더 빠르고 훨씬 더 비싸다. SRAM은 캐시 메모리로 사용되며 CPU칩 내부 또는 외부에 장착된다. DRAM은 메인 메모리와 그래픽 시스템의 프레임 버퍼로도 사용된다.

정적RAM

  • SRAM은 각 비트를 이중안정(bistable) 메모리 셀(cell)에 저장한다. 각 셀은 여섯 개의 트랜지스터 회로로 구현된다. 이 회로는 두 개의 전압 구성 또는 상태로 무한히 머물러 있을 수 있는 특성을 가지며, 이 두 가지 상태외의 다른 상태들은 모두 불안정해지게 된다. - 여기에서 시작해서 이 회로는 안정한 상태 중의 하나로 빠르게 이동하게 된다. 이러한 메모리 셀은 역진자와 유사하다.
  • 진자는 왼쪽으로 완전히 기울거나 오른쪽으로 완전히 기울어 질 때 안정화된다. 다른 위치에서 이 진자는 한쪽으로 기울어지게 된다. 원리적으로 진자는 수직 방향으로도 무한히 균형을 유지할 수 있지만, 이 상태는 준 안정상태다 - 최소한의 외력이 가해져도 넘어지게 되고, 일단 넘어지면 결코 수직 위치로는 되돌아가지 않는다.
  • 이중안정 본성으로 인해 SRAM 메모리 셀은 자신의 값을 전원이 공급되는 한 무한히 유지하게 된다. 심지어 이 회로는 전기적 잡음 같은 외력이 전압을 흔들 때도 외력이 없어지면 안정한 값으로 돌아갈 것이다.

동적RAM

  • DRAM은 각 비트를 전하로 캐패시터에 저장한다. 캐패시터는 매우 작다. 각 셀은 캐패시터 하나와 접근 트랜지스터 하나로 구성된다. 그러나 SRAM과는 달리, DRAM 셀은 외란에 대해서 매우 민감하다. 캐패시터 전압이 달라지면 다시 회복할 수 없다. 햇볕에 노출되면 캐패시터 전압이 변한다.
  • 여러가지 원인의 누수전류(leakage current)는 DRAM 셀이 10에서 100mm초 사이에 전하를 상실하게 한다. 다행스럽게도 나노초 클럭 사이클 시간으로 동작하는 컴퓨터에 대해서 이 유지시간은 꽤 긴 것이다. 메모리 시스템은 주기적으로 메모리의 모든 비트를 읽었다가 다시 써주는 방식으로 리프레시(refresh)해야 한다. 일부 시스템은 또한 오류정정코드를 사용하는데 컴퓨터 워드들은 추가적인 비트들을 사용해서 회로가 워드내에 모드 단일 오류를 감지하고 정정 할 수 있다.

일반 DRAM

  • DRAM 칩내의 셀들은 슈퍼셀들로 나누어지며, 각각은 w DRAM 셀들로 이루어진다. d * w DRAM은 총 dw 비트의 정보를 저장한다. 슈퍼셀들은 row와 column로 이루어진 직사각형의 배열로 구성되어있다.
  • 정보는 pin이라고 부르는 외부 커넥터를 통해 칩의 안과 밖을 흘러다닌다.
  • 핀들의 집합 - 1바이트 칩 내부 또는 외부로 전송할 수 있는 8개의 데이터 핀들과 두 비트 행과 열 슈퍼셀을 연결하는 두 개의 addr 핀으로 구성, 제어정보를 전달한다.
  • 각각의 DRAM칩은 w비트를 일정시간에 DRAM칩으로, 그리고 칩으로부터 전송할 수 있는 메모리 컨트롤러로 알려진 회로에 연결된다. 슈퍼셀(i,j)의 내용을 읽으려면 메모리 컨트롤러는 행 주소 i를 DRAM에 보내고 다음에 열 주소 j를 보낸다. DRAM은 슈퍼셀(i,j)의 내용을 컨트롤러로 보내주는 것으로 응답하게 된다. 행주소 i는 RAS(row access strobe)요청이라고 부른다. 열 주소 j는 CAS(column access strobe)요청이라고 부른다. RAS와 CAS 요청이 같은 DRAM 주소 핀을 공유한다.
  • 이차원 배열 구조의 단점은 주소가 두 단계로 보내져야 하며, 이로 인해 접근시간 access time이 증가한다는 점이다.

메모리 모듈

  • DRAM 칩은 메인 시스템보드의 확장 슬롯에 꽂을 수 있는 메모리 모듈 형태로 패키징된다.
  • 메모리 주소 A에서 64비트 워드를 가져오려면, 메모리 컨트롤러는 A를 슈퍼셀 주소로 변환하고 이것을 메모리 모듈로 보낸다. 그러면 메모리 모듈은 i, j를 각 DRAM에 보낸다. 여기에 대한 응답으로 각 DRAM은 자신의 (i, j) 슈퍼셀의 8비트 내용을 출력한다. 모듈 내의 회로는 이 출력들을 모아서 64비트 워드로 구성하고, 이것을 메모리 컨트롤러에게 돌려준다.
  • 메인 메모리는 복수의 메모리 모듈을 메모리 컨트롤러에 연결하여 연동 될 수 있다. 이 경우, 컨트롤로가 주소 A를 받을 때 컨트롤러는 A를 가지고 있는 모듈 k를 선택해서 A를(i, j) 형으로 변환하고 (i, j)를 모듈 k로 보낸다.

Enhanced DRAM

DRAM 메모리의 종류

  • Fast Page Mode DRAM , FPM DRAM : 재래식 DRAM은 슈퍼셀의 행 전체를 자신의 내부 행 버퍼에 복사하며, 이중 한 바이트만 사용하고 나머지는 모두 버린다. FPM DRAM은 행 버퍼로부터 직접적으로 같은 행에 연속적으로 접근할 수 있게 지원 받도록 개선한 것이다.
  • Extended data out DRAM , EDO DRAM : FPM DRAM을 개선한 형태로 각각의 CAS 신호가 보다 촘촘한 간격으로 발생할 수 있도록 했다.
  • Synchronous DRAM, SDRAM : 재래식 FPM, EDO DRAM은 메모리 컨트롤러와 통신할 때 명시적인 explicit 제어신호들을 사용한다는 면에서 비동기형이다. SDRAM은 이 제어신호의 상당 부분을 메모리 컨트롤러를 구동하는 동일한 외부 클럭 신호의 상승 에지로 대체한다.
  • Double Data-Rate Synchronous DRAM, DDR SDRAM : 두 개의 클럭 에지 모두를 제어신호로 사용해서 DRAM의 속도를 두 배로 올려 SDRAM을 개선한 것이다.
  • VideoRAM VRAM : 그래픽 시스템의 프레임 버퍼로 사용된다.

비휘발성 메모리

  • DRAM과 SRAM은 전원이 꺼지면 정보도 잃어버리기 때문에 휘발성이다. 반면에, 비휘발성 메모리는 이들의 전원이 꺼져도 정보를 유지한다. 역사적인 이유로 이들은 모두 Read Only Memory, ROM이라고 부른다. ROM은 이들이 재기록reprogram 될 수 있는 횟수와 이들을 재기록하는 방법으로 구별된다. ROM 디바이스에 저장된 프로그램들은 종종 펌웨어 firmware라고 부른다. 컴퓨터 시스템의 전원이 공급되면 ROM에 저장된 펌웨어를 실행 시킨다. 일부 시스템들은 펌웨어에 PC의 BIOS(Basic Input/Output System) 같은 적은 수의 기본 입출력 함수를 제공한다.

메인 메모리 접근하기

  • 데이터는 버스라고 하는 공유된 전기회로를 통해서 프로세서와 DRAM 메모리간에 앞뒤로 교환된다. CPU와 메모리간의 매 전송은 버스 트랜잭션이라고 부르는 일련의 단계들을 통해 이뤄진다. 읽기 트랜잭션은 데이터를 메인 메모리에서 CPU로 이동 시키고, 쓰기 트랜잭션은 CPU에서 메인 메모리로 이동시킨다.
  • 버스는 주소, 데이터, 제어신호를 포함하는 병렬 선들의 집합이다. 특정 버스 설계에 따라 데이터와 주소 신호들은 같은 전선들을 공유할 수 있거나, 서로 다른 전선들을 사용할 수 있다. 또한 두 개 이상의 장치들은 같은 버스를 공유 할 수 있다. 제어라인들 트랜잭션들을 동기화하고 현재 어떤 종류의 트랜잭션이 수행되고 있는지 알려주는 신호들을 전송해준다.
  • I/O 브릿지는 시스템 버스의 전기적 신호를 메모리 버스의 전기적 신호로 변환한다.
728x90

' > CSAPP' 카테고리의 다른 글

CSAPP 8  (3) 2024.02.12
CSAPP 6.1.2 - 6  (2) 2024.02.11
CSAPP 9.9, 9.11  (0) 2024.02.07
CSAPP 8.1.2 - 8.1.3, 8.5 - 8.5.4  (0) 2024.02.04
CSAPP 8.1, 8.1.1  (0) 2024.02.04