본문 바로가기

CS/컴퓨터구조

[컴퓨터구조] Internal Memory(1)

현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다.


 우리가 메모리라고 부르는 "반도체" 기반 메모리들의 기본 단위는 이다. 셀은 1비트 데이터를 담는 가장 작은 저장 공간으로, 메모리의 종류와 공정에 따라 실제 구현은 다를 수 있으나 공통적인 특징이 있다.

  • 0과 1로 표현될 수 있는 안정적인 상태를 (물리적으로) 가진다.
  • 상태를 설정하기 위해 최소 1번 이상 내용을 쓸 수 있다.
  • 현재 상태를 읽을 수 있다.

 메모리의 특성에 따라 다를 수 있다고는 해도 각 셀은 이진수를 표현하기 때문에 최소한 이진수의 구성 요소인 0과 1을 구분하기 위한 물리적 상태가 요구된다. 각 상태의 특징이 전혀 없다면 0과 1을 구분하는 것은 불가능할 것이다. 

 메모리에 쓰는 동작은 메모리의 특성에 따라 필요 없을 수도 있으나, 최소한 읽기 동작은 필요하다. 데이터는 사용할 때 의미가 있는 건데 쓰기만 가능하고 읽을 방법이 없다면 아무런 의미가 없다.

(좌) 상태가 전혀 식별되지 않음 (우) 각 상태가 어느 정도 식별됨.
셀의 동작


DRAM & SRAM

RAM(Random Access Memory) 기술은 전원이 연결되어 있을 때의 데이터 휘발성을 기준으로 구분할 수 있다.

  • DRAM(Dynamic RAM): 전원이 연결되어 있더라도 데이터의 상태가 변할 수 있다.
  • SRAM(Static RAM): 데이터를 쓰면 변경할 때까지 상태가 변하지 않는다.

DRAM

 DRAM은 축전기(캐퍼시터) 기반의 RAM으로, 축전기에 충전된 상태를 1, 방전된 상태를 0으로 본다. 축전기는 자연적으로 방전되며, READ 과정에서 전압이 떨어지기도 한다. 따라서 계속 상태를 유지하기 위해서는 주기적으로 축전기를 충전해줘야 한다. 파워가 연결되어 있는 상황에서도 각 셀의 상태가 변경될 수 있으므로 Dynamic이라는 표현이 붙는다. 축전기는 대략 10ms 정도면 방전된다고 한다.

  • 장점: 구조가 매우 간단하여 적은 비용으로 많은 용량을 확보할 수 있다.
  • 단점
    • 데이터를 유지하려면 주기적으로 전하를 충전해줘야 하므로(refresh가 필요) 전용 회로도 요구된다.
    • 주기적인 충전에 시간이 요구되므로 속도라 느린 편이다.

큰 용량 덕분에 메인 메모리에서 사용된다.

DRAM Cell의 구조

SRAM

 SRAM은 플립플롭 게이트 기반의 RAM으로, 플립플롭 특성상 한번 설정한 상태는 파워가 유효한 동안 변하지 않는다는 특징을 가지고 있다. 

  • 장점: 상태를 유지하기 위한 다른 동작(ex. 충전)이 필요하지 않으므로 빠르다.
  • 단점: 회로가 축전기에 비해 복잡하고 비싸므로 용량이 한정적이다.

빠른 속도 덕분에 캐시 메모리에 사용되고 있다.

SRAM 셀의 구조


ROM의 타입

메모리의 성질을 나타낸 표

ROM(Read Only Memory)

 제조 공정에서 마스크 형식으로 내용을 작성하는 메모리로, 작성 이후에는 내용을 변경할 수 없다. 회로 상에 기록되므로 파워와 관계 없이 내용이 계속 유지되며 변하지 않는다. 컴퓨터의 바이오스나 내용을 바꿀 일이 없는 임베디드 시스템 등에서 사용될 수 있다. 

  • 장점
    • 회로 자체가 망가지지 않는 한 내용이 불변한다.
    • 다른 메모리를 거치지 않더라도 직접 내용을 읽을 수 있다. ( 회로 상에 세겨져 있으니까 그대로 읽어도 됨 )
  • 단점
    • 제조 공정에 엄청난 비용이 발생하므로 대량 생산만 가능하다.
    • 회로 상에 에러가 있을 때 수정 방법이 없어 새로 찍어내야 하므로 수정 비용이 매우 비싸다.

PROM(Programmable ROM)

PROM은 공급자 혹은 사용자가 전기적으로 내용을 작성할 수 있는 ROM이다. ROM과 같이 단 한 번만 write 할 수 있으며, 작성된 내용은 바꿀 수 없다. 내용을 작성하기 위해서는 전용 전자 장비가 필요하다.

  • 장점
    • ROM 사용이 유연하고 편리하다.
    • 자신이 원하는 ROM을 소량으로 만들 수 있다.
  • 단점: 여전히 단 한번만 내용을 쓸 수 있다.

Read-Mostly Memory

 일반적인 ROM은 한번 내용을 작성하면 수정할 수 없다. 따라서 특정 부분을 잘못 마스킹하거나 전기 처리에 실수가 있는 경우 해당 기판을 버리고 처음부터 다시 만들어야 한다는 단점이 있었다. 이러한 문제를 보완하기 위해 대부분의 경우에 내용을 읽되, 쓰기 동작을 허용하는 방식의 ROM들도 등장한다.

EPROM(Erasible Programmable ROM)

 자외선을 빛춰 내용 전체를 지울 수 있는 PROM이다. 여러번 쓸 수 있기는 하나, 내용을 지울 때 일정 시간(대략 1시간) 이상 자외선에 노출시켜야 하며 지우고 싶은 내용을 선택할 수 없으므로 한 번 지울때마다 모든 내용을 다시 작성해야 하는 불편함이 존재한다.

EEPROM(Electrically EPROM)

 내용을 자외선 대신 전자적으로 지울 수 있는 PROM이다. 특정 내용을 수정하기 위해 전체를 지워야 하는 EPROM과는 달리 일부 내용을 바이트 혹은 페이지 단위로 지울 수 있다. 비휘발성이면서도 내용 수정이 편리하다는 장점이 있으나, EPROM보다 훨씬 비싸다고 한다.

Flash Memory

 EPROM과 EEPROM의 절충 형태 정도로 볼 수 있는 메모리다. 전체 메모리 공간을 블럭 단위로 구성하고, 블럭 단위로 내용을 지울 수 있으며 블럭 내에서는 여러 페이지 단위로 읽고 쓸 수 있다. 우리가 USB라고 부르는 것도 사실은 USB flash drive로, 플래시 메모리를 USB 인터페이스로 접근하는 것이다.


RAM 구조

16M DRAM의 구조

  RAM은 다양한 부품으로 구성되어 있다. 외부와 통신 역할을 하는 핀, 실제 내용을 저장하는 메모리 배열, 충전을 위한 충전 회로, 각 행과 열을 위한 디코더 등 다양한 요소가 모여서 하나의 메모리를 구성한다. 여기서는 22비트 주소 체계를 이용하는 시스템에 대해 설명한다.

 22비트 주소 체계에서는 총 222개의 주소를 가질 수 있다. 이때 DRAM의 특징을 생각해보자.

  • 디코더를 이용하여 주소를 찾는다.
  • 데이터 유지를 위해 주기적인 refresh 과정이 필요하다.

 메모리에 기대하는 주된 기능은 데이터를 저장하여 읽고 쓸 수 있는 것으로, 위 그림 상 메모리 배열과 관련되어 있다. 다른 부품들은 메모리 배열에 부수적인 사항으로 최대한 간단한 구조를 가져야 메모리의 집적도나 동작 속도가 향상될 수 있다. 이 구조에서 다른 부품의 구조, 시간 등이 단순해지기 위한 메모리 배열의 구조는 정사각형이다.

 메모리 배열을 정사각형 구조로 만들 때 장점은 다음과 같다.

  1. 디코더 단순화
  2. 주소 핀 개수 감소
  3. Refresh 동작 시간 감소

1. 디코더 단순화

 이차원 배열의 주소는 행(row)의 주소와 열(column)의 주소로 구분될 수 있다. 이때 22비트 길이의 주소를 행과 열에 분배한다고 생각해보자. 만약 19비트를 행에, 3비트를 열에 대응시킨다면 행 디코더가 관리하는 주소의 크기는 219이고, 열 디코더가 관리하는 주소는 23이 된다. 

디코더의 회로 구조 : https://en.wikipedia.org/wiki/Binary_decoder#/media/File:Decoder_Example.svg

 문제는 디코더의 각 주소마다 하나의 NAND 게이트가 대응된다는 점이다. 위 디코더의 회로 구조를 보면 2x4 디코더에는 2개의 Not 게이트와 4개의 AND 게이트가 사용되었다. 즉, Ax2A 디코더에는 A개의 Not 게이트와 2A개의 AND 게이트가 필요하다. 예시처럼 주소를 19/3으로 분리하는 경우 디코더에는 Not 게이트 22개와 NAND 게이트 219 + 23개가 필요할 것이다. 219 는 50만으로, 겨우 16M 메모리를 구성하는데 사용하기에는 과한 양이다. 지수가 커질 수록 회로가 복잡해진다는 사실도 생각해보면 지수는 최대한 줄이는 것이 좋다

이 상황에서 행과 열에 각각 11비트를 부여하면 2 * 211 = 212 개, 즉 4096개의 NAND 게이트와 그에 준하는 회로 복잡도로 디코더를 구성할 수 있게 된다. 게이트의 숫자만 해도 대략 100배 이상 적게 사용할 수 있으며, 이에 부가되는 회로 복잡도 감소 역시 디코더 복잡도 및 생산 비용을 줄이는데 도움이 된다.

주소 핀 개수 감소

 행과 열을 표현하는 주소의 길이가 같은 경우 메모리와 외부를 연결하는 외부 핀의 개수를 줄일 수 있다. 앞에서 사용한 예시를 그대로 사용하면, 주소가 19/3으로 분리되어 있는 경우 row의 주소를 가져오기 위해 최소 19개의 핀이 필요하다. 반면 주소가 11/11로 동일하게 분리되면 단 11개의 핀만으로도 외부와 연결할 수 있다. 이 경우 행과 열에 대한 주소를 별개로 외부에서 읽어온다.

 외부와 내부 메모리 배열 영역을 연결하기 위해서는 bonding pad라는 공간이 필요하다. 이 공간은 대략 각 핀과 메모리를 연결하기 위한 공간으로, 메모리 내에서 해당 공간의 비중이 줄어들 수록 메모리 배열을 넣을 공간을 더 확보할 수 있으므로 전체적인 용량 면에서도 핀의 개수를 적게 유지하는 것이 좋다.

Refresh 동작 시간 감소

refresh는 행 단위로 수행된다. 전체 메모리 배열을 refresh하는 사이클을 refresh cycle이라고 하는데, 만약 행의 길이가 219라면 211 대비 256배의 시간이 걸리게 된다. 충전을 위한 오버헤드를 줄이기 위해서라도 행과 열의 비율은 동일하게 유지되는 편이 좋다.


ROM과 RAM의 구조 차이

 RAM은 각 칩이 1비트 데이터만을 유지하도록(one bit per chip) 설계된다. 이 경우 다음과 같은 장점이 있다고 한다.

  • 패키지 전반적인 디자인 측면에서 핀의 개수가 감소한다.
  • 데이터를 읽고 쓰는데 하나의 핀으로 충분하다. 만약 하나의 주소에 16비트가 대응된다면 출력을 위해 대응되는 개수의 핀이 필요할 수 있을 것이다.
  • 하나의 output driver을 가지므로 더 믿을 수 있다. 컴퓨터 입장에서 한 비트 단위의 오류는 수정하기 쉽지만 16비트 단위의 오류는 수정 불가능하다. 

https://www.quora.com/Why-have-RAMs-traditionally-been-organized-as-only-1-bit-per-chip-whereas-ROMs-are-usually-organized-with-multiple-bits-per-chip

ROM은 각 칩이 여러 비트를 가지도록 설계된다고 한다.

  • ROM의 크기는 RAM보다 훨씬 작다.
  • ROM은 multiple chip organization을 이용하는데, 이 구조가 비용적으로 효율적이라고 한다.

 USB 플래시 드라이브는 ROM의 일종이다. 이러한 ROM은 RAM에 비해 휴대하는 경우가 많으며 하나의 ROM 안에 모든 데이터가 존재해야 한다. 예를 들어 메모리는 여러개를 꽂을 수 있으므로 해당 범위 내에서 주소가 분할되어 결정될 수 있다. 반면 USB 드라이브는 하나의 플래시 메모리로 완성되어 존재해야 한다. 작은 크기 안에 많은 데이터를 넣기 위해서는 한 셀이 여러 비트를 가지는 것이 효율적일 수 있다.

 이 부분은 명확하지 않아서 이런 관점도 있구나 하는 느낌으로 보는 것이 좋을 것 같다.


메모리 모듈 구조

1-M byte 메모리 구조

 메인 메모리의 특정 주소는 1 word 정보를 저장하고 있어야 한다. 이때 언급했듯이 RAM은 one bit per chip 설계를 가지므로 특정 주소가 1 word 정보를 가지기 위해서는 word 개의 칩이 하나의 단위로 묶여 처리될 필요가 있다. 위 그림에서 A1, A2 ... 각각은 하나의 칩이며 A1 ~ A8 한 묶음이 1 byte 단위를 구성하게 된다. 

Interleaved Memory

https://kbench.com/?q=node/8417 

Iinterleaved memory 동작 방식

Interleaved Memory는 메모리 상의 칩들이 그룹화된 메모리 뱅크들에 대해 메모리 주소를 고르게 분산시키는 방식의 메모리이다. 메모리 읽기 및 쓰기를 각 메모리 뱅크에 대해 차례대로 수행함으로써 작업 시간 및 대기 시간을 줄여 메모리 처리량을 높이는 효과가 있다고 한다. 이때 각 뱅크 자체만으로도 메모리 역할은 수행할 수 있다.

 주소가 분산되어 있지 않은 경우 메모리의 각 데이터를 순차적으로 읽고, refresh하는 동작을 반복해야 한다. 반면 Interleaved Memory에서는 파이프라이닝을 통해 access 및 refresh을 병렬적으로 수행할 수 있으므로 메모리 속도를 높이지 않고도 전체 속도를 크게 높일 수 있다.

 위 그림에서는 Interleaved Memory에 데이터를 쓰는 과정을 보여준다. 기본적인 DRAM은 refresh 과정이 필요하기 때문에 데이터를 쓰기 위해 write -> refresh * 8 의 동작이 필요하다. 반면 Interleaved Memory에서는 데이터를 쓸때 파이프라이닝 기법을 이용하여 write1 -> refresh1 + write2 ... 로 요구되는 시간이 훨씬 짧다.

'CS > 컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] External Memory(1)  (0) 2022.10.19
[컴퓨터구조] Internal Memory(2)  (1) 2022.10.18
[컴퓨터구조] 캐시(3)  (0) 2022.10.10
[컴퓨터구조] 캐시(2)  (1) 2022.10.05
[컴퓨터구조] 캐시(1)  (1) 2022.10.03