TIL - 24/02/22
2024/02/22
- 메모리
- 기본은 하나의 논리 게이트 수준에서 시작한다.
- 래치는 논리 게이트를 조합해 1비트를 저장할 수 있는 수준이다.
- 레지스터는 원하는 비트 수의 래치를 이어서 만든다.
- 이 때 직렬로 연결하면 수많은 선이 필요하기에 행렬 구조로 만든다.
- 각 행과 열을 고르기 위해 멀티플렉서를 이용한다.
- 메모리 주소는 따라서 어떤 위치의 행과 열에 비트 값이 저장되어있는지를 찾는 것이다.
- 이렇게만 읽으면 한 주소에 1비트만 선택하는 것 같지만 한 주소에 메모리를 여러개 연결해서 비트를 선택하기 때문에 몇 비트를 선택할지는 구조에 따라 다르게 설정이 가능하다.
- 예시-DDR5 RAM
- 크게는 2개의 채널이 32비트를 독립적으로 전송한다.
- 각 채널에는 4개의 칩이 있어 각각 8비트 데이터를 전송한다.
- 각 칩에는 DRAM Die가 있는데 2GB DRAM Die에는 8개의 뱅크 그룹이 있고 한 뱅크 그룹에는 4개의 뱅크가 있다.
- 뱅크는 행이 65,536개, 열이 8,192개 의 메모리 셀 행렬이 있고 메모리 주소는 구간을 나누어 뱅크의 위치, 행 위치, 열 위치를 표현한다.
- 그 주소 위치를 기준으로 한 번에 8개의 메모리 셀에서 커패시터에 담긴 값(0 또는 1)을 읽어온다.
- Column Multiplexer와 메모리 셀 행렬 사이에 잘 읽기 위해 증폭기를 설치하는데, 값을 쓸 때는 column multiplexer가 더 강해서 이전 비트 라인의 전압을 무시하고 값을 쓸 수 있게 된다.
- 행, 열 순서로 선택하는데 필요한 값이 같은 행에서 계속 진행되면 다른 행을 활성화 하는 시간을 단축 할 수 있다. 이런 경우를 row hit 또는 page hit이라 한다.
- 행이 엄청 길어보이지만 뱅크를 다 이으면 오히려 열이 더 길다. 이는 행을 열 때 다른 뱅크의 행도 같이 열 수 있고 이는 row hit가 더 많이 낼 수 있기 때문이다.
- column multiplexer와 read & write driver 사이 burst buffer에 주소의 열 위치 값을 두 부분으로 나눈 뒤 앞 부분에 해당하는 2^(13-6) = 128비트를 로드(캐싱)하고 남은 4비트를 사용해 burst buffer에 담긴 8비트를 전송한다.
- 이런 설계를 통해 인접한 데이터는 빠르게 읽거나 쓰기가 가능하다.
- 예시-DDR5 RAM
This post is licensed under CC BY 4.0 by the author.