DDR SDRAM Interface 주요 용어 - Terry4055/FPGA_HW GitHub Wiki
-
Page Hit : 메모리를 읽을 때 하나의 뱅크에서 활성화 가능한 페이지는 오직 하나다. 방금 읽은 페이지와 다른 페이지의 데이터를 읽으려 할 때에는 활성화된 페이지를 닫고, 새로운 페이지를 여는데 시간이 필요하다. 그러나 같은 페이지 읽을 때는 이런 시간이 단축 된다. 이미 열려진 페이지에서 새로운 Row와 Column만 지정해서 데이터를 꺼내오면 된다. 그 데이터는 이미 Sense Amp까지 와 있는 상태일 것 이다. 여기서 우리는 센스 증폭기가 하나의 작은 캐시 메모리와 같은 역할을 한다는 것을 알 수 있다. 이러한 경우 Page Hit. 반대로 새로운 Page를 열어야 하면 Page Hit Miss라고 한다.
-
Bank Interleaving : Page Hit가 일어날 확률이 높을수록 메모리 속도는 증가한다. 그래서 Bank 번호에 따라서 메모리를 어떻게 할당하느냐에 따라 Page Hit 확률을 높일 수 있다. 그래서 나온 것이 Bank Interleaving! ex) 두개의 뱅크를 가지는 메모리가 있다. 1> 메모리 전체 크기의 처음 절반에 뱅크 0번 할당, 나머지 절반에 뱅크 1을 할당 하는 경우 2> 메모리를 작은 단위로 나누어서 뱅크 0과 1이 교대로 할당되도록 하는 경우 -> 2의 경우가 확률이 높다. CPU 동작 원리상 메모리는 특정 영역에서 데이터가 집중적으로 읽혀지는 특성을 가지기 때문에 작은 영역에 될 수 있으면 많은 뱅크가 할당 되도록 하는 것이 유리 하다.(CPU는 1번 뱅크를 Access한 뒤 Refresh 시키는 동시에 뱅크 2번에 접근하여 데이터를 받는다)
-
Burst : Read 과정에서 또는 RAM Timing 중 CL(CAS Latency)가 가장 중요하다. CL을 실제로 줄여보면 그 비율만큼 메모리 클럭을 올린 것만큼의 효과가 나지 않는다. 그 가장 큰 이유는 버스트다. 버스트 모드에서는 하나의 CAS 시그널 이후에 4개 또는 8개의 연속된 데이터를 읽어온다(BC4 또는 BL8) 이러한 Burst 라는 것이 존재하기 때문에 CL을 줄인만큼 효과를 제대로 볼 수는 없다. 보통 연속된 주소를 접근 하므로 CPU 입장에서 계속 주소 날리는 것은 귀찮다. ex) 버스트 길이를 8로 프로그래밍하면 첫번째 위치에 대해 RAS 전체 주소 날리고, CAS날린 뒤에 두번째부터 8번째 데이터를 접근 할 때는 주소 접근 없이 받는다. 버스트 읽기의 수는 1,2,4,8,16 개256 또는 전체 페이지 크기~ >> 이것은 FPGA 입장에선 AXI로 접근 하니깐 AXI Read의 Burst Length를 설정하면 되고, ARADDR을 전체 버스트 사이즈를 고려하여 증가시켜 Increment 방식으로 써서 해결