CS/컴퓨터 구조론

컴퓨터 구조론 5장 [기억장치-DDR SDRAM]

devrabbit22 2025. 4. 2. 17:00
  • CPU 반도체 기술의 발달과 내부 구조의 개선을 통해 속도가 계속 높아지지만, 기억장치의 속도는 그 상승률을 따라기지 못하고 있다. 
  • 주기억장치로 사용되어 온 DRAM은 집적도가 높아져 칩 당 용량은 증가하고 있지만, 액세스 속도는 CPU에 비하여 현저히 떨어지고 있다. 
  • 특히, 동영상 처리나 음성/영상 압축 등과 같은 대규모 데이터가 연속적으로 CPU와 주기억장치 사이에 전송되어야 하는 최근의 컴퓨터 응용 환경 속에서, 주기억장치 속도로 인한 성능 병목(performance bottleneck)은 반드시 해결되어야 할 문제이다.

이 문제점을 극복하기 위해 개발된 여러가지 기술

  • 가장 먼저 출현한 성공적인 제품 : 전통적인 DRAM 칩 내부 조직의 개선과 함께 CPU와의 데이터 전송 방식을 변경한 SDRAM이다. 

SDRAM(synchronous DRAM)

동기식 DRAM(synchronous DRAM)

  • 액세스 및 데이터 전송 동작이 시스템 클록 신호에 동기화되어 수행되는 DRAM이다.
  • 동기식 DRAM는 DRAM의 액세스 속도 한계를 극복하기 위하여 개발된 반도체 기억장치이다. SDRAM은 동기식 데이터 전송을 수행하는 DRAM을 말한다.
  • 여기서 동기식이란 클록 신호에 맞추어 데이터를 전송한다는 것을 의미한다.
  • DRAM에서는 필요한 정보와 제어 신호가 들어오는 즉시 액세스 동작을 수행하여 응답한다.
  • 쓰기 동작에서는 전송된 데이터를 즉시 해당 기억장소에 저장하며, 읽기 동작에서는 인출 동작을 수행한 다음에 즉시 데이터를 버스를 통해 전송한다. 
  • DRAM에서는 이러한 기억장치 액세스 동작들이 연속적으로 발생하기 때문에, CPU는 그 시작 순간부터 종료될 때까지 다른 일을 하지 못하고 기다려야 한다.
  • 그 동안 시스템 버스도 다른 용도로 사용될 수 없다.
  • DRAM의 액세스 속도가 느린 경우 시스템의 전체 동작 시간이 지연된다.
  • 반면에, SDRAM을 사용하는 시스템에서는 기억장치 액세스를 위한 동작들이 시스템 클록 신호에 맞추어(동기화되어) 수행된다.

ex) 읽기 동작에 대한 과정을 살펴보면 다음과 같다.

  1. CPU는 한 클록 주기 동안에 시스템 버스를 통하여 주소와 읽기 신호를 기억장치로 보낸 다음에, 그 결과를 기다리지 않고 내부적으로 다른 연산을 수행한다.
  2. SDRAM은 주소와 읽기 신호를 받은 즉시 액세스 동작을 시작한다. 그리고 읽기 동작이 완료되면, SDRAM은 시스템 버스 사용권을 얻은 다음에 한 클록 주기 동안 버스를 통하여 데이터를 CPU로 보낸다.
  3. CPU는 그 데이터를 받아서, 다음 연산을 수행한다.
  • SDRAM은 내부적으로 데이터 액세스의 동시성을 높이기 위하여 여러 개의 뱅크(bank)들로 구성되고 있다.
  • 액세스 동작 과정을 파이프라이닝함으로써, 뱅크마다 서로 다른 주소에 대한 액세스 동작이 동시에 수행될 수 있도록 해준다.

ex) 512Mbit SDRAM을 보면 16M x 8bit의 저장 용량을 가지는 네 개의 뱅크들로 구성되며, 그 뱅크들은 모두 칩의 내부 버스에 접속되어 주소와 데이터 및 제어 신호들을 주고 받는다.

  • 이 칩에 필요한 주소 비트의 수는 모두 26개이며, 그들 중에서 최상위 2비트는 뱅크 선택을 위해 사용된다. 
  • 나머지 24비트는 각 뱅크 내부의 주소지정에 사용된다.
  • 이 조직에서는 행 방향으로 8K(8196개)의 기억 소자 배열(memory cell array)들이 있으며, 각 배열에는 16Kbit씩 저장된다.
  • 이 칩의 데이터 입출력 선의 수 : 8개
  • 각 행의 배열마다 2Kbyte씩 저장되어 있다.
  • 행 주소(row address)로 13 비트가 필요하고, 열주소(column address)로서 11비트가 필요하게 된다.
  • 각 뱅크에서 행 주소에 의해 하나의 행이 선택되었을 때, 그 행에 저장된 16K개의 비트들은 모두 감지 증폭기(sense amplifier)로 이동된다. 이 동작을 '행을 연다(opening the row)'라고 말한다.
  • 열린 행에 포함된 비트들은 열 주소에 의해 바이트(8bit)단위로 선택되어 데이터 버스에 실리게 된다.
  • 한 번의 읽기 동작에서 한 바이트만 전송하는 것이 아니라, 여러 개의 바이트들을 연속적으로 전송할 수 있다. 이와 같은 연속 전송 동작을 버스트 모드(burst mode)라고 하며, 한 번의 버스트 모드 동안에 전송되는 데이터의 바이트들의 수를 버스트 길이(burst length)라고 한다. 
  • 일반적으로 버스트 길이는 2, 4 혹은 8이다.
  • 데이터 액세스까지 가장 오래 걸리는 동작이 데이터 값들을 기억 소자로부터 인출하여 감지 증폭기까지 이동시키는 것이기 때문에, 이미 증폭기로 이동된 데이터 비트들을 버스로 전송하는 동작은 매 버스 클록 때마다 발생시킬 수 있다.

버스트 읽기 동작의 타이밍도(버스트 길이 = 4)

  • 네 개의 바이트들을 연속적으로 CPU로 전송하는 버스트 읽기 동작에 대한 타이밍도 이다.
  • 클록 신호의 상승 에지에서 RAS 신호와 CAS 신호가 한 주기 간격으로 들어오며, 그에 따라 행 주소와 열 주소가 각각 래치되어 읽기 동작이 시작된다.

CAS 지연 

  • DRAM 칩으로 CAS 신호와 열 주소가 인가되는 순간부터 데이터가 인출되어 버스에 실릴 때까지의 시간
  • CAS 신호와 열 주소가 인가되는 순간부터 데이터가 인출되어 버스에 실릴 때까지의 시간을 CAS 지연(CAS latency)라고 하는데, 일반적으로 두 클록 정도이다. 
  • 실제 칩에서는 RAS 신호와 CAS 신호가 'active-low'이기 때문에, 그 신호들을 RAS 및 CAS로 표기한다.
  • 결과적으로 SDRAM으로부터 인출된 데이터가 매 클록 주기마다 CPU로 전송되기 때문에, 주기 당 한 바이트씩 연속적으로 읽혀지는 것과 같은 효과를 얻게되는 것이다. 
  • 만약 같은 칩 내의 다른 뱅크에서도 그 동안 어떤 행에 대한 열기(opening)가 이루어졌다면, (앞의 전송이 종료된 다음에) 그 데이터들의 전송도 지연 없이 발생될 수 있으므로 많은 데이터들을 연속적으로 CPU로 공급할 수 있다.
  • 버스트 쓰기동작의 경우 주소와 함께 데이터들도 인가되는데, 행 주소가 인가된 다음 주기에 열 주소가 들어오는 순간 부터 SDRAM에 연속적으로 네 개의 데이터들이 저장될 수 있다. 
  • 즉, SDRAM에서는 쓰기 지연이 발생하지 않는다.

기억장치 모듈(memory module) 구성의 필요성

  • SDRAM의 데이터 입출력 폭 = 8비트
  • 단어 단위의 데이터 액세스를 위하여 여러 개의 SDRAM 칩들을 병렬로 접속하여 기억장치 모듈을 구성

[예] 64-비트 컴퓨터시스템을 위한 기억장치 모듈

  • 8개의 64Mx8bit SDRAM 칩들을 병렬 접속
  • ➔ 64비트씩 읽기/쓰기 가능한 512MByte 기억장치 모듈
  • 기억장치 모듈 당 SDRAM 칩 한 개를 추가➔8-비트 길이의 ECC(error-correction code)를 같이 저장

 

512MB 기억장치 모듈의 모습

512MByte SDRAM 기억장치 모듈

DDR SDRAM

DDR(Double Data Rate)

  • SDRAM에서 액세스된 데이터들을 전송할 때 버스클록의 상승 에지와 하강 에지에서 각각 하나씩 전송함으로써 클록 당 두 번 전송하는 기법
  • CPU가 필요로 하는 데이터를 기억장치로부터 신속하게 공급하기 위해서는 기억장치 모듈의 대역폭(bandwidth)을 더 높여야 한다.
  • SDRAM에는 여러 개의 뱅크들이 포함되어 있기 때문에, 그들에게 모두 주소를 인가한다면 액세스 동작들이 동시에 발생하게 된다.
  • 각 뱅크에서도 '행 열기'에 의해 행 전체 데이터 비트들이 액세스되어 감지 증폭기에 적재되어 있다.
  • 버스 클록 주파수만 높일 수 있다면, (주소 해독, 액세스 등을 위한) 지연 없이 즉시 데이터들을 연속적으로 전송할 수 있다. ->대역폭을 더욱 높일 수 있다.
  • 위의 원리를 이용한 기억창치 설계 기술이 DDR 방식이다.
  • SDRAM에서 클록 주기 당 두 번씩 데이터를 전송할 수 있게 해주기 때문에, 사이클 당 한번(once-per-cycle)이라는 한계를 극복할 수 있게 되었다. DDR SDRAM이 출현한 후에, 일반적인 SDRAM은 SDR(Single Data Rate) SDRAM이라고 불린다.

  • DDR SDRAM의 경우 데이터가 클록의 상승에지뿐 아니라 하강 에지에서도 전송된다.
  • 첫번째 데이터는 클록의 상승 에지에서 전송되고, 하강 에지에서는 두 번째 데이터가 전송된다.
    ->4 클록 주기만에 8개의 데이터들을 모두 전송할 수 있게 된다.

SDRAM의 내부 액세스 속도는 그대로이기 때문에 CAS 지연은 2 클록 주기이다.

  • 결과적으로 전체 데이터 전송 시간은 (CAS 지연 + 데이터 전송 시간) = 15ns+30ns = 45ns로 줄어들게 된다.
  • DDR2 SDRAM : DDR SDRAM과 같으며, 버스 클록 주파수를 두 배로 높여 대역폭 향상

읽기 시간 비교 (예: 버스트 길이 = 8)

SDR @ 133 MHz [PC133]

  • 버스 클록 = 133MHz
  • 매 클록 주기(7.5ns)마다 64비트씩 전송
  • 8번의 데이터 전송에 걸리는 시간 = CAS 지연(15ns) + (7.5nsx8) = 75ns

DDR @ 133 MHz [DDR-266]

  • 상승 및 하강 에지에서 64비트씩 전송
  • 8번의 데이터 전송에 걸리는 시간 = CAS 지연(15ns) + {(7.5ns/2)x8} = 45ns

DDR-2 @ 266 MHz [DDR-533]

  • 버스 클록 = 266 MHz (주기 = 3.75ns)
  • 상승 및 하강 에지마다 64비트씩 전송
  • 8번의 데이터 전송에 걸리는 시간 = CAS 지연

DDR기술의 두 가지 기본 원리

  • 버스 클록의 상승 에지와 하강 에지에서 모두 데이터 전송이 발생되게 한다.
  • 기억장치 제어기(memory controller) 및 버스 인터페이스 회로를 개선함으로써 버스 클록 주파수를 높인다.

두 가지 원리를 이용함으로써 SDRAM의 내부 액세스 속도가 그대로 유지된 상태에서도 데이터 전송률을 계속적으로 높일 수 있게 되었다.

  • SDRAM 칩의 내부에 포함되는 뱅크들의 수를 더 증가시켜 액세스의 동시성을 높여준다면, 성능은 더욱 향상시킬 수 있다. 
  • DDR 방식은 반도체 칩의 속도 개선과 상관없이 CPU와 기억장치 간의 데이터 전송량을 증가시켜 주는 기술인 것이다.

기억장치 대역폭(memory bandwidth)

  • 기억장치로부터 CPU로 제공될 수 있는 단위시간당 데이터 전송량
  • 기억장치로부터 CPU로 제공될 수 있는 단위 시간(초)당 데이터 전송량을 기억장치 대역폭이라고 하는데, (버스 폭 x 클록 주파수)로 구할 수 있다.
  • ex) CPU와 기억장치 간 데이터 버스의 폭이 64비트이고 버스 클록 주파수가 100MHz라면, 기억장치 대역폭은 (100Mhz x 64)/8비트 = 800[MBytes/sec]가 된다.
  • 즉, CPU와 기억장치 간에 초당 1억 번의 데이터 전송이 이루어지며, 매 전송마다 8바이트씩 이동된다.

DDR3 및 DDR4도 같은 원리를 적용하여 설계된다.

  • SDR @133MHz : (133MHz x 64) / 8 = 1064[Mbytes/sec]
  • DDR @133MHz : (133MHz x 2 x 64) / 8 = 2128[Mbytes/sec]
  • DDR2 @266MHz : (266MHz x 2 x 64) / 8 =4256[Mbytes/sec]

CAS 지연

  • DDR (그림 5-34(b): SDRAM 칩의 CAS 지연 = 15ns 일 때, 클록 주기가 7.5ns이므로, CAS 지연 = 2주기
  • DDR2 (그림 5-34(c)): f = 266MHz (클록 주기 = 3.75ns) → CAS 지연 = 4주기 (15ns / 3.75ns = 4주기)
  • DDR3 및 DDR4에 사용되는 SDRAM 칩들의 CAS 지연 = 10ns
  • DDR3-1600 @800MHz : CAS 지연 = 8주기
  • DDR4-3600 @1800MHz : CAS 지연 = 16주기

기억장치 랭크

  • 대부분의 SDRAM 칩들은 데이터 입출력이 4비트 혹은 8비트 단위로 이루어지는 x4 또는 x8 조직으로 제조되기 때문에, CPU로 하여금 한 번에 한 단어나 그 배수의 비트들을 액세스할 수 있도록 하기 위해서는 여러 개의 칩들을 병렬로 접속하여 기억장치 모듈을 구성해야 한다.
  • 일반적으로 CPU-기억장치 간에는 64비트 단위의 데이터 전송이 일어나기 때문에, 데이터 입출력 폭이 64비트 단위가 되도록 구성된 SDRAM 칩들의 집합을 기억장치 랭크(memory rank)라고 부른다.
  • 기억장치 산업 표준그룹인 JEDEC에 의해 정의된 기억장치 랭크는 데이터 입출력 폭이 64비트가 되도록 여러 개의 칩들로 이루어진다.

각 랭크에서는 주소가 지정되는 각 기억 장소마다 64비트씩 저장되고, 동시에 액세스된다. 

  • x4 조직의 SDRAM 칩들을 사용하여 하나의 기억장치 랭크를 구성한다면, 16개의 칩들을 병렬로 접속해야 한다.
  • x8 조직의 칩들을 사용한다면, 8개의 칩들이 필요하다.
  • 컴퓨터 시스템에서 기억장치 모듈은 주기판의 기억장치 슬롯(memory slot)에 삽입되는데, 각 모듈은 단면 모듈(single-side module) 혹은 양면 모둘(double-side module)로 만들어진다.
  • 단면 모듈에서는 PCB 기판의 한 면에만 칩들이 장착되며, 접속 핀(connection ping)들도 한 면에만 설치되거나 양면에 중복적으로 설치된다.
  • 반면 양면 모듈에서는 기판의 양쪽 면에 칩들이 장착되며, 접속 핀들도 양면의 하단에 각가 설치되기 때문에 더 많은 수의 신호들을 입출력할 수 있다.
  • 단면 모듈을 SIMM(Single in-line memory module), 양면 모듈은 DIMM(dual in-line memory module)이라고 부르기도 한다.

SIMM

  • 칩들과 접속 핀들을 한면에만 부착한 기억장치 모듈 기판(PCB)

DIMM

  • 칩들과 접속 핀들을 양면에 모두 부착한 기억장치 모듈 기판

단일-랭크 모듈(single-rank module)

  • 단면 모듈(SIMM) 상에 x8 조직의 SDRAM 8개를 병렬접속 하여 하나 의 랭크를 구성함으로써, 64비트 데이터가 한 번에 버스를 통하여 전 송되도록 구성한 기억장치 모듈
  • 각 SDRAM 칩의 용량이 2Gbit(즉, 256M x 8비트)라면, SIMM의 전체 용량 = 256Myte x 8개 = 2GByte

 

2중-랭크 모듈(dual-rank module)

  • 양면 모듈(DIMM)에서, x8 조직의 SDRAM들을 각 면에 8개씩 병렬 접속 하여 두 개의 랭크를 구성한 기억장치 모듈

  • 각 SDRAM 칩의 용량이 2Gbit(즉, 256M x 8비트)라면, DIMM의 전체 용량 = 256Myte x 8개 x 2면 = 4GByte

x4 조직의 SDRAM들을 사용하는 경우

  • 6개를 병렬접속 하여 양면 모듈(DIMM)에 하나의 랭크를 구성

  • 읽기 동작 시, 주소가 인가되면 각 칩에서 4비트씩 인출되어 전 체적으로 64비트가 데이터 버스로 전송
  • 각 SDRAM 칩의 용량이 2Gbit(즉, 512M x 4비트)라면, DIMM의 전체 용량 = (512M x 4) x 16개 = 4GByte

4중-랭크 모듈(quad-rank module)

  • x16 조직의 SDRAM 칩들을 사용
  • 면당 두 랭크씩으로 구성
  • 용량은 앞의 조직들과 동일

높은 신뢰도가 요구되는 서버 및 슈퍼컴퓨터의 경우

  • 데이터 8비트당 한 비트씩의 오류검출코드(error correction code: ECC) 추가
  • ➔각 랭크의 입출력 데이터 폭 : (64 + 8) = 72비트
  • ➔ 면당 9개의 칩들을 장착 각 SDRAM 칩의 용량이 2Gbit(즉, 256M x 8비트)라면, DIMM의 전체 용량 = 256Myte x 8개 x 2면 = 4GByte

Reference

컴퓨터 구조론 개정 5판

https://yz-zone.tistory.com/89

 

[ 컴퓨터구조 ] 5.6 DDR SDRAM

DDR SDRAM ▣ DDR SDRAM ▪ 기억장치의 액세스 속도는 CPU에 비하여 현저히 낮음 ▪동영상 처리, 음성/영상 압축과 같은 대규모 데이터 처리 응용 증가 ➔주기억장치 병목 현상 심화 ▪ 기억장치 액세

yz-zone.tistory.com