Multi Bit Memory Storage, Register File vs SRAM vs DRAM

MinHwi·2022년 5월 6일
0

컴퓨터구조론

목록 보기
2/4

이 포스팅은 숙명여자대학교 김윤진 교수님의 컴퓨터 구조론 특강을 바탕으로 작성되었습니다.

이 포스팅에서 설명할 내용

  • Basic Multi Bit Memory Storage : Register
  • Register File
  • Register File vs SRAM vs DRAM

Basic Multi Bit Memory Storage : Register

전 포스팅에서 1bit를 저장하는 최종 컴포넌트 D Flip Flop을 알아보았다. 이제 Multi Bit를 저장할 수 있는 컴포넌트이자, Flip Flop을 여러개 연결하여 만든 기본 멀티 비트 스토리지인 레지스터에 대해 알아보자.

Basic Register

위 그림은 Flip Flop을 4개 연결하여 4bit를 저장하는 4bit register이다. 이 Flip Flop들은 같은 Clock Signal을 공유한다. 기본 Register는 매 Clock마다 값을 load한다. 오버헤드를 유발할 수 있으므로 특정 Cycle에만 값을 load할 수 있도록 해야 한다.

Register with Parallel Load

한 묶음의 데이터를 특정 사이클동안 유지하고 싶을 때 Load input 값을 사용한다. 4bit basic register의 각 Flip Flop 앞에 2x1 MUX를 붙였다. 2x1 MUX로 0 또는 1 값을 선택할 수 있는데, 이 값이 load이다. load가 0이면 값을 유지하고, load가 1이면 새로운 값이 저장되도록 한다.

Register File

앞에서 본 Basic Register는 여러 bit로 이루어진 하나의 word를 저장한다. Register File은 여러 word를 저장하는 스토리지이다. 특정 word를 읽거나 쓸 수 있다. MxN Register File은 M개의 word를 가지며, 하나의 word는 n개의 bit를 가진다.

  • 4x32 register file의 input : data, addr, w_en과 r_en
    • 값의 read, write가 동시에 가능하다. 이는 register만의 특징이다.
    • read는 async이고 write는 sync이다.
  • Write part
    • write data는 와이어를 통해 모든 register와 연결된다.
    • write decoder를 사용하여 i0, i1중 가능한 조합을 선택한다.
    • load 값이 1이 되어야만 새로운 값이 저장된다.
    • Buffer : wire을 통해 write data가 연결되는데, 만약 연결된 component의 수가 늘어난다면 물리 회로의 한계로 값이 약해져 타이밍이 맞지 않는 현상이 발생한다. 버퍼는 신호를 증폭시켜준다.
  • Read part
    • read decorder를 사용하여 읽어올 데이터와 연결된 register를 선택한다.
    • register로부터 값을 읽을 때, Tri-state buffer이 사용된다.
    • 그 이유는 register 여러개와 하나의 와이어가 연결된 상황에서, 혹시라도 두개 이상의 값이 동시에 들어오면 쇼트가 일어나 회로가 타버리기 때문이다.
    • Tri 버퍼는 값이 동시에 들어가지 않도록 하는 역할이다. d0가 1이 되면 reg0에 저장된 값이 와이어를 타고 나온다. 그외의 d는 0이 되어, 전기적으로 연결되지 않은 상태인 Z 값이다.
    • 참고로 위 회로는 reg가 4개뿐이기 때문에 버퍼 대신 4x1 MUX로 대체해도 된다. 그런데 회로의 복잡도가 늘어나면 MUX 내부도 복잡해져서 비용이 많이 들고 지연이 생긴다.

Register File의 Sync Write와 Async Read

  • Write : W_en이 1이면 Clock의 타이밍에 해당 주소에 값을 쓴다.
  • Read : R_en이 1이면 바로 해당 주소에 접근해 값을 읽는다. Clock 타이밍과 무관하다.

Register File vs SRAM vs DRAM

사실 이 내용은 다음 챕터의 메모리 분류 체계를 먼저 살펴본 후, 현재 사용되는 메모리인 SRAM과 DRAM을 Register File과 비교해보는 내용이다. 근데 나는 이미 전체 내용을 다 아는 상황이니까 그냥 메모리 비교를 먼저 다루도록 하겠다.

메모리를 배울 때 이러한 특징 비교는 많이 봤을 것이다. 메모리의 분류의 상위 계층으로 올라갈수록 속도가 빠르고 가격이 비싸고 집적도는 낮다(고전력). 그런데.. 왜 그럴까?! 왜 이런 특징을 가져야 할까? 이 부분은 메모리 계층 구조와 CPU의 구조를 보면 알 수 있는데, 간단하게만 언급하자면 CPU의 연산 부분을 중심으로, 가장 빠른 Register File이 있고 CPU 칩 밖에 Main Memory가 있고, 그 중간 버퍼로 사용되는 Cache가 있다. 데이터의 병목 현상과 메모리 접근 속도를 끌어 올리기 위해 이러한 구조를 취하고 있다. 이러한 메모리 구조에서는 각 메모리가 CPU의 원활한 연산을 위해 갖추어야 하는 특징이 있다. 가장 대표적인 것이 속도와 집적도이다. 연산 부분과 가까이 위치할수록 속도가 빨라야 한다. 같은 칩 안에 위치하면 추가 공정이 필요 없으니 집적도가 높으면 좋다. 각 메모리 계층에서 조건에 맞는 메모리들을 찾다보니 Cache에는 SRAM, Main Memory에는 DRAM이 (현재 메모리 시장에서) 가장 적합하다고 채택된 것이다.

그렇다면 SRAM과 DRAM, Register File은 어떻게 동작하길래 이러한 조건을 갖추는 걸까? 메모리들의 구조를 뜯어보자.

Register File vs RAM

가장 핵심적인 차이
1. 동시 Read & Write : Register File은 가능, RAM은 불가능
2. 1bit storage : Register File은 Flip Flop, RAM은 Trangister

Register File

  • CPU와 가장 근접한 메모리이다. (CPU 내부에 위치함)
  • Read와 Write가 동시에 가능하기 때문에 매우 빠르다.
    • Read, Write port가 따로 존재하기 때문에 Async Read와 Sync Write가 가능하다.
  • 하지만 게이트를 직접 사용하기 때문에, 메모리 크기가 늘어나면 내부의 복잡도가 증가하고(Decoder, Buffer Logic) 지연 시간이 생긴다. 전력을 더 많이 먹고, 집적이 잘 안되고 크기가 커지기 때문에 메모리 크기를 늘리면 매우 비효율적이다. 주로 100 words 미만이다.
  • 따라서 오늘날의 컴퓨터 시스템은 Register만을 사용하여 모든 것을 유지할 수 없고 RAM이나 2차 메모리를 사용한다.

RAM

  • DRAM은 main memory로 사용되어 CPU와 직접 데이터를 주고 받는다. SRAM은 cache로 사용된다.
  • Read와 Write가 가능하지만 동시에 일어나지 않기 때문에, Register file보다 속도는 느리다. 하지만 CPU와 교류 가능할 정도의 속도는 맞춘다.
    • Register File과 달리 Read, Write 포트를 하나만 사용하기 때문에 동시에 RW를 할 수 없다.
  • Register file보다 속도도 느리고 동시에 RW도 안되지만, 1 bit를 저장하는 소자가 Register file의 FF보다 훨씬 작기 때문에 집적도가 향상되었다. 그래서 대용량의 메모리를 저장할 수 있다. 주로 512 or 1024개의 word를 저장한다.

SRAM vs DRAM

RAM의 구조

  • W 포트와 R 포트가 따로 존재하지 않아서 Dec Logic이 하나만 존재한다.
    • add와 rw 모드를 가짐. rw, en은 Clock에 맞추어 움직이므로 Sync RW을 한다.
    • rw은 cell을 write할지 read할지 결정한다. 1이면 write, 0이면 read이다.
  • 1 bit를 저장하는 Component는 FF이 아니라, Gate으로만 이루어진 FF보다 훨씬 집적도가 높고 작은 소자이다. 그 소자의 종류에 따라 SRAM과 DRAM으로 분류한다.

SRAM

  • 6개의 trangistor를 사용하여 1 bit를 저장한다.
  • 참고로 D FF는 38개의 trangistor를 사용한다.
    • 2*D Latch(18) + invertor(2) = 38
    • D Latch : AND 2개, NOR 2개, NOT 1개 = 4*4+2 = 18
  • Write
    • word enable = 0 : data가 invertor를 맴돈다
    • word enacle = 1 : data가 invertor에 진입하여 loop한다. 값이 여기에 갇히면서 저장됨
  • Read
    • 이건 모스의 물리 신호를 알아야 하는데
    • Don’t care! 더 중요한건 SRAM의 타이밍이다.

DRAM

  • 1 transistor로 구성된다. Register File에 비해 1/38배, SRAM에 비해 1/6배 작다.
  • write
    • word enable이 1일 때, capacitor에 전류가 흐른다.
  • read
    • word enable이 0일 때, d 값을 읽는다.
  • 문제
    • capacitor이 매번 약해져서 refresh를 해주어야 한다.
    • dynamic의 뜻 : refresh 필요

결론

어휴 내용이 많다. 결론은 속도 빠른 순으로 RF, SRAM, DRAM이고 높은 집적도 순으로는 DRAM, SRAM, RF이다. 속도 측에서는 RF가 동시에 Read Write가 가능하기 때문에 RAM보다 훨씬 빠르고, 집적도 면에서는 트랜지스터 하나를 사용하는 DRAM이 가장 높다. 이 트랜지스터는 CMOS라고 불리는 반도체 소자인데, 다다음 포스팅에서 살펴볼 것이다. 다음에 살펴볼 내용은 메모리 분류 체계이다. SRAM, DRAM이 현재 컴퓨터 시스템에서 어떤 메모리로 사용되는지 알아본다.

profile
딩가딩가 백엔드 개발자

0개의 댓글