자일링스 로고

Xilinx DDR2 MIG 7 성능 추정 가이드

Xilinx_DDR2_MIG_7_성능-추정-제품

중요 참고 사항: 응답 기록의 이 다운로드 가능한 PDF는 유용성과 가독성을 향상시키기 위해 제공됩니다. 답변 레코드는 Web- 새로운 정보를 사용할 수 있게 되면 자주 업데이트되는 기반 콘텐츠입니다. Xilinx 기술 지원을 방문해야 합니다. Web사이트와 재view (Xilinx Answer 63234)에서 이 답변의 최신 버전을 참조하십시오.

소개

DDR2 및 DDR3 메모리가 설계되고 MIG 7 시리즈 컨트롤러가 설계되었기 때문에 성능이 간단하지 않습니다.
다양한 Jedec 타이밍 매개변수 및 컨트롤러 아키텍처에 대한 이해가 필요하며 추정치를 얻기 위해 시뮬레이션을 실행해야 합니다.
성능을 결정하는 일반적인 원칙은 동일하지만 이 문서는 MIG ex를 사용하여 효율성을 얻는 쉬운 방법을 제공합니다.amp테스트 벤치와 스티뮬러스를 활용한 디자인 file여기에 첨부합니다.

유효 대역폭

DRAM 데이터 버스는 읽기 및 쓰기 버스트 동안에만 거의 피크 대역폭에 도달하며 오버헤드는 유효 데이터 속도를 낮춥니다.
몇몇 전amp오버헤드는 다음과 같습니다.

  • 동일한 뱅크의 행에 액세스하는 프리차지 시간(동일한 행-페이지 히트에 없는 액세스 주소)
  • 쓰기에서 읽기 액세스로 변경하기 위한 쓰기 복구 시간
  • 읽기에서 쓰기 액세스로 변경하기 위한 버스 처리 시간

Xilinx DDR2 MIG 7 성능 추정-그림-28
유효 대역폭 = 최대 대역폭 * 효율성 

MIG 설계 생성

MIG IP 및 ex에 대한 단계별 세부 정보는 UG586 1장을 참조하십시오.amp르 디자인 세대.
MIG 7 시리즈 성능 시뮬레이션을 실행하기 전에 다음을 수행하여 시뮬레이션 환경이 양호한지 확인하십시오. MIG ex 열기amp파일은 적절한 라이브러리를 설계 및 매핑하고 시뮬레이션을 실행하고 성적표에서 "테스트 통과" 메시지를 볼 수 있는지 확인합니다.
흐름을 시연하기 위해 xc7vx690tffg1761-2용 MIG IP를 생성하고 ex를 호출했습니다.amp설계.
주목해야 할 두 가지 사항은 메모리 주소 비트와 메모리 주소 매핑 선택입니다.
예를 들어amp저는 메모리 부분 드롭다운 옵션에서 MT41J128M8XX-125를 선택했습니다.Xilinx DDR2 MIG-7-성능-추정-무화과-1

그림 1에서 선택한 메모리 부분의 경우 행 = 14, 열 = 10 및 뱅크 = 3이므로 app_addr_width = 행 + 열 + 뱅크 + 순위= 28 Xilinx DDR2 MIG 7 성능 추정-그림-2

BANK_ROW_COLUMN 또는 ROW BANK 열을 선택할 수 있습니다.
기본 주소 매핑인 ROW BANK Column을 남겼습니다.

Examp합성 가능한 테스트 벤치를 사용한 설계 시뮬레이션

시뮬레이션 설정에서 QuestaSim/ModelSim Simulator를 선택하고 컴파일된 라이브러리 위치를 찾습니다.
타사 도구 설치 경로 지정, 타겟 시뮬레이터 선택, 라이브러리 컴파일 및 매핑에 대한 자세한 내용은 (UG900) Vivado Design Suite 사용자 가이드 로직 시뮬레이션을 참조하십시오.Xilinx DDR2 MIG 7 성능 추정-그림-3

GUI를 통해 시뮬레이션을 실행하고(프로젝트 관리자에서 시뮬레이션 실행 탭 클릭) 성적표에 "테스트 통과" 메시지가 표시되는지 확인하십시오.

성능 시뮬레이션 RTL 수정

  1. 소스 탭을 마우스 오른쪽 버튼으로 클릭하고 "시뮬레이션 소스 추가 또는 생성"을 선택한 다음 mig7_perfsim_traffic_generator.sv를 찾습니다. file 완료를 클릭하여 추가합니다.
  2. 소스 탭을 마우스 오른쪽 버튼으로 클릭하고 "시뮬레이션 소스 추가 또는 생성"을 선택하고 perfsim_stimulus.txt를 찾은 다음 마침을 클릭하여 추가합니다.
  3. 전 주석 처리ampsim_tb_top.v에서 le_top 인스턴스화 file.
  4. 아래 RTL 라인을 sim_tb_top,v에 추가합니다.
  • localparam APP_ADDR_WIDTH = 28;
  • localparam APP_DATA_WIDTH = 64;
  • localparam APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
  • localparam MEM_ADDR_ORDER = “BANK_ROW_COLUMN”;
  • localparam BANK_WIDTH = 3;
  • localparam RANK_WIDTH = 1;
  • 와이어 [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • 와이어[2:0] c0_ddr3_app_cmd;
  • 와이어 c0_ddr3_app_en;
  • 와이어 [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • 와이어 c0_ddr3_app_wdf_end;
  • 와이어 [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • 와이어 c0_ddr3_app_wdf_wren;
  • 와이어 [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • 와이어 c0_ddr3_app_rd_data_end;
  • 와이어 c0_ddr3_app_rd_data_valid;
  • 와이어 c0_ddr3_app_rdy;
  • 와이어 c0_ddr3_app_wdf_rdy;
  • 와이어 c0_data_compare_error;
  • 와이어 ui_clk;
  • 와이어 ui_clk_sync_rst;
  • 와이어 app_sr_req = 0;
  • 와이어 app_ref_req = 0;
  • 와이어 app_zq_req =0;
  • 와이어 c0_app_wdf_mask =0;

FPGA 메모리 컨트롤러 인스턴스화

mig_7series_0_mig u_mig_7series_0_mig(
// 메모리 인터페이스 포트

  • .ddr3_addr(ddr3_addr_fpga),
  • .ddr3_ba(ddr3_ba_fpga),
  • .ddr3_cas_n(ddr3_cas_n_fpga),
  • .ddr3_ck_n(ddr3_ck_n_fpga),
  • .ddr3_ck_p(ddr3_ck_p_fpga),
  • .ddr3_cke(ddr3_cke_fpga),
  • .ddr3_ras_n(ddr3_ras_n_fpga),
  • .ddr3_reset_n(ddr3_reset_n),
  • .ddr3_we_n(ddr3_we_n_fpga),
  • .ddr3_dq(ddr3_dq_fpga),
  • .ddr3_dqs_n(ddr3_dqs_n_fpga),
  • .ddr3_dqs_p(ddr3_dqs_p_fpga),
  • .init_calib_complete(초기화_calib_complete),
  • .ddr3_cs_n(ddr3_cs_n_fpga),
  • .ddr3_dm(ddr3_dm_fpga),
  • .ddr3_odt(ddr3_odt_fpga),

// 애플리케이션 인터페이스 포트

  • .app_addr(c0_ddr3_app_addr),
  • .app_cmd(c0_ddr3_app_cmd),
  • .app_en(c0_ddr3_app_en),
  • .app_wdf_data(c0_ddr3_app_wdf_data),
  • .app_wdf_end(c0_ddr3_app_wdf_end),
  • .app_wdf_wren(c0_ddr3_app_wdf_wren),
  • .app_rd_data(c0_ddr3_app_rd_data),
  • .app_rd_data_end(앱_rd_data_end),
  • .app_rd_data_valid(c0_ddr3_app_rd_data_valid),
  • .app_rdy(c0_ddr3_app_rdy),
  • .app_wdf_rdy(c0_ddr3_app_wdf_rdy),
  • .app_sr_req (앱_sr_req),
  • .app_ref_req(앱_ref_req),
  • .app_zq_req (앱_zq_req),
  • .app_sr_active(앱_sr_active),
  • .app_ref_ack(앱_ref_ack),
  • .app_zq_ack (앱_zq_ack),
  • .ui_clk(ui_clk),
  • .ui_clk_sync_rst(ui_clk_sync_rst),
  • .app_wdf_mask(c0_ddr3_app_wdf_mask),

// 시스템 클록 포트

  • .sys_clk_i (sys_clk_i),

// 참조 클록 포트

  • .clk_ref_i (clk_ref_i),
  • .sys_rst(sys_rst)
  • );

성능 트래픽 생성기 인스턴스화

mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH(APP_DATA_WIDTH),
.COL_WIDTH(COL_WIDTH),
.ROW_WIDTH(행_WIDTH),
.RANK_WIDTH(랭크_WIDTH),
.BANK_WIDTH(뱅크_WIDTH),
.MEM_ADDR_ORDER(MEM_ADDR_ORDER),
.tCK (tCK ),
.ADDR_WIDTH(앱_ADDR_WIDTH)
)

u_traffic_gen
(
.clk(ui_clk),
.rst(ui_clk_sync_rst),
.init_calib_complete(초기화_calib_complete),
.cmp_error(c0_data_compare_error),
.app_wdf_rdy (c0_ddr3_app_wdf_rdy),
.app_rd_data_valid(c0_ddr3_app_rd_data_valid),
.app_rd_data (c0_ddr3_app_rd_data),
.app_rdy(c0_ddr3_app_rdy),
.app_cmd(c0_ddr3_app_cmd),
.app_addr(c0_ddr3_app_addr),
.app_en(c0_ddr3_app_en),
.app_wdf_mask(c0_ddr3_app_wdf_mask),
.app_wdf_data(c0_ddr3_app_wdf_data),
.app_wdf_end(c0_ddr3_app_wdf_end),
.app_wdf_wren(c0_ddr3_app_wdf_wren)
);

  • 5. 메모리 부분 선택에 따라 APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH 및 BANK_WIDTH를 수정합니다.
    값은 다음에서 얻을 수 있습니다. _mig.v file.
  • 노란색으로 강조 표시된 인스턴스화 이름 mig_7series_0_mig는 IP 생성 중 구성 요소 이름에 따라 다를 수 있습니다. 다른 이름을 선택했는지 확인하고 그에 따라 변경하십시오.Xilinx DDR2 MIG 7 성능 추정-그림-4
  • IP가 생성되면 다음을 엽니다. _mig.v file LHS 신호 이름의 변형을 교차 확인하고 수정합니다.
  • app_sr_req, app_ref_req 및 app_zq_req는 0으로 초기화되어야 합니다.
  • 예를 들면ample_top.v가 주석 처리되고 새로운 files가 추가되면 "?"가 표시될 것입니다. 옆에
    mig_7series_0_mig.v file 시뮬레이션 소스에서.
    올바른 매핑을 위해 file, mig_7series_0_mig.v를 마우스 오른쪽 버튼으로 클릭하고 "소스 추가"를 선택한 다음 찾아보기
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    mig_7series_0_mig_sim.v를 추가합니다. file.
  • 네가 본다면 "?" 기본을 위해 files, 모든 RTL 추가 fileclocking, controller, ip_top, phy 및 UI 폴더에 있습니다.
  • RTL 변경이 완료되고 필요한 모든 files가 시뮬레이션 소스에 추가되면 계층 구조는 그림 5와 유사해야 합니다.
    그만큼 file빨간색으로 강조 표시된 s가 새로 추가되고 "?" 선택한 메모리 구성에 ECC 옵션이 비활성화되어 있으므로 ECC 관련 모듈에서 예상됩니다.Xilinx DDR2 MIG 7 성능 추정-그림-5

자극제 File 설명
각 자극 패턴은 48비트이며 형식은 그림 6-1에서 6-4에 설명되어 있습니다.Xilinx DDR2 MIG 7 성능 추정-그림-6

주소 인코딩(주소[35:0])

주소는 그림 7-1에서 그림 7-6에 따라 자극에 인코딩됩니다. 모든 주소 필드는 XNUMX진수 형식으로 입력해야 합니다. 모든 주소 필드는 XNUMX진수 형식으로 입력하기 위해 XNUMX로 나눌 수 있는 너비입니다. 테스트 벤치는 주소 필드의 필수 비트만 메모리 컨트롤러로 보냅니다.
예를 들어amp2뱅크 구성에서는 뱅크 비트[0:XNUMX]만 메모리 컨트롤러로 전송되고 나머지 비트는 무시됩니다. 주소 필드에 대한 추가 비트는 XNUMX진수 형식으로 주소를 입력할 수 있도록 제공됩니다.
입력한 값이 주어진 구성의 너비와 일치하는지 확인해야 합니다.Xilinx DDR2 MIG 7 성능 추정-그림-7

  • 열 주소(열[11:0]) – Stimulus의 Column Address는 최대 12비트로 제공되지만 설계 시 설정된 Column 너비 매개 변수를 기반으로 이를 해결해야 합니다.
  • 행 주소(행[15:0]) – 자극의 행 주소는 최대 16비트로 제공되지만 설계에 설정된 행 너비 매개변수를 기반으로 주소를 지정해야 합니다.
  • 은행 주소(은행[3:0]) – 자극의 뱅크 주소는 최대 XNUMX비트로 제공되지만 설계 시 설정된 뱅크 폭 매개변수에 따라 주소를 지정해야 합니다.
  • 순위 주소(순위[3:0]) – 자극의 순위 주소는 최대 XNUMX비트로 제공되지만 설계에 설정된 순위 너비 매개변수를 기반으로 이를 해결해야 합니다.
    주소는 최상위 MEM_ADDR_ORDER 매개변수를 기반으로 어셈블되어 사용자 인터페이스로 전송됩니다.

명령 반복(명령 반복[7:0])
명령 반복 횟수는 사용자 인터페이스에서 각 명령이 반복되는 횟수입니다. 각 반복의 주소는 8씩 증가합니다. 최대 반복 횟수는 128입니다.
테스트 벤치는 열 경계를 확인하지 않으며 증가하는 동안 최대 열 제한에 도달하면 둘러쌉니다.
128개의 명령이 페이지를 가득 채웁니다. 0이 아닌 열 주소의 경우 반복 횟수 128은 결국 열 경계를 넘어 열 주소의 시작 부분으로 래핑됩니다.

버스 이용
버스 사용률은 총 읽기 및 쓰기 수를 고려하여 사용자 인터페이스에서 계산되며 다음 방정식이 사용됩니다.

Xilinx DDR2 MIG 7 성능 추정-그림-8

  • BL8은 XNUMX개의 메모리 클록 주기를 사용합니다.
  • end_of_stimulus는 모든 명령이 완료된 시간입니다.
  • calib_done은 보정이 완료된 시간입니다.

Examp패턴
이들 전amp파일은 BANK_ROW_COLUMN으로 설정된 MEM_ADDR_ORDER를 기반으로 합니다.

단일 읽기 패턴
00_0_2_000F_00A_1 – 이 패턴은 10번째 열, 15번째 행 및 두 번째 뱅크에서 단일 읽기입니다.Xilinx DDR2 MIG 7 성능 추정-그림-9단일 쓰기 패턴
00_0_1_0040_010_0 – 이 패턴은 32번째 열, 128번째 행 및 첫 번째 뱅크에 대한 단일 쓰기입니다.Xilinx DDR2 MIG 7 성능 추정-그림-10동일한 주소에 대한 단일 쓰기 및 읽기
00_0_2_000F_00A_0 – 이 패턴은 10번째 열, 15번째 행 및 두 번째 뱅크에 대한 단일 쓰기입니다.
00_0_2_000F_00A_1 – 이 패턴은 10번째 열, 15번째 행 및 두 번째 뱅크에서 단일 읽기입니다.Xilinx DDR2 MIG 7 성능 추정-그림-11

동일한 주소로 다중 쓰기 및 읽기
0A_0_0_0010_000_0 – 이것은 열에서 볼 수 있는 10에서 0까지의 주소로 80번의 쓰기에 해당합니다.Xilinx DDR2 MIG 7 성능 추정-그림-12

0A_0_0_0010_000_1 – 이것은 열에서 볼 수 있는 10에서 0까지의 주소를 가진 80개의 읽기에 해당합니다.Xilinx DDR2 MIG 7 성능 추정-그림-13

쓰기 중 페이지 줄 바꿈
0A_0_2_000F_3F8_0 – 이것은 10회 쓰기 후 페이지의 시작 부분으로 래핑된 열 주소를 사용하여 XNUMX회 쓰기에 해당합니다.Xilinx DDR2 MIG 7 성능 추정-그림-14

성능 트래픽 생성기 시뮬레이션

이 시점에서 MIG ex 사용이 완료되었습니다.amp르 디자인 시뮬레이션. 이는 시뮬레이션 설정이 준비되었고 성능 시뮬레이션 RTL 수정을 완료했으며 새로운 시뮬레이션 계층 구조가 정확하고 자극 패턴을 이해했음을 의미합니다. perfsim_stimulus.txt에서 16번의 쓰기 및 읽기로 시뮬레이션을 다시 한 번 실행합니다.Xilinx DDR2 MIG 7 성능 추정-그림-15

모두 실행하고 init_calib_complete 신호가 어설션될 때까지 기다리면 제안된 쓰기 및 읽기 수를 볼 수 있습니다. 그러면 시뮬레이션이 중지됩니다. Xilinx DDR2 MIG 7 성능 추정-그림-16

시뮬레이션을 종료하라는 메시지가 표시되면 아니오를 선택하고 성능 통계를 볼 수 있는 기록 창으로 이동합니다. Xilinx DDR2 MIG 7 성능 추정-그림-17

선택하면 "시뮬레이션 종료" 성능 통계는 file 명명된 sim_1/behave에 있는 mig_band_width_output.txt 접는 사람.

Examp파일 디렉토리 경로:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavXilinx DDR2 MIG 7 성능 추정-그림-18

왜 퍼센트가tage 버스 활용도는 29개에 불과합니다. 동일한 IP 설정으로 시뮬레이션을 다시 실행하지만 자극만 변경하면 됩니다. file 256 쓰기 및 256 읽기

ff_0_0_0000_000_0
ff_0_0_0000_000_1

이제 백분율이 표시됩니다.tage는 85로, 이는 DDR3가 쓰기 및 읽기 버스트의 긴 순서에 대해 더 나은 버스 활용도를 제공한다는 것을 의미합니다. Xilinx DDR2 MIG 7 성능 추정-그림-19

성능을 향상시키는 일반적인 방법

효율성에 영향을 미치는 요소는 두 부분으로 나눌 수 있습니다.

  1. 특정 메모리
  2. 컨트롤러 특정Xilinx DDR2 MIG 7 성능 추정-그림-20

그림 9는 끝났습니다.view 메모리 특정 용어.
SRAM 및 블록 메모리와 달리 DDR2 또는 DDR3 성능은 단지 최대 데이터 속도가 아닙니다.

다음을 포함한 많은 타이밍 요인에 따라 달라집니다.

  • TRCD: 행 명령 지연(또는 ras에서 cas 지연으로).
  • tCAS(CL): 열 주소 스트로브 대기 시간.
  • TRP: 행 사전 충전 지연.
  • 트라스: 행 활성 시간(사전 변경하려면 활성화).
  • TRC: 행 주기 시간. tRC = tRAS + tRP
  • 트랙: 라돔 액세스 지연. tRAC = tRCD + tCAS
  • tCWL: Cas 쓰기 대기 시간.
  • tZQ: ZQ 교정 시간.
  • RFC: 행 새로 고침 주기 시간
  • 트WTR: 읽기 지연에 쓰기. 읽기 명령 시간에 대한 마지막 쓰기 트랜잭션.
  • 트와르: 쓰기 복구 시간. 사전 충전 시간까지의 마지막 쓰기 트랜잭션

나열된 모든 매개변수의 타이밍은 사용된 메모리 유형과 메모리 부품 속도 등급에 따라 다릅니다.
정의 및 타이밍 사양에 대한 자세한 내용은 DDR2 DDR3 JEDEC 또는 모든 메모리 장치 데이터시트에서 확인할 수 있습니다.

효율성은 주로 메모리 액세스 방법에 따라 달라집니다. 다른 주소 패턴은 다른 효율성 결과를 제공합니다.

메모리 타이밍 오버헤드

  1. 새로운 뱅크/행으로 변경하거나 동일한 뱅크에서 행을 변경할 때 활성화 시간 및 프리차지 시간.- 따라서 행 변경을 줄이면 tRCD 및 tRP를 제거할 수 있습니다.
  2. 연속 쓰기 또는 읽기 명령 보내기 - tCCD 타이밍 유지.
  3. 쓰기에서 읽기로 및 읽기에서 쓰기로 명령 전환 최소화 – 읽기 액세스로 변경하기 위한 쓰기 복구 시간, 읽기에서 쓰기로 변경하기 위한 버스 턴어라운드 시간
  4. 적절한 새로 고침 간격을 설정하십시오.
    • DDR3 SDRAM은 tREFI의 평균 주기 간격으로 새로 고침 주기가 필요합니다.
    • 최대 8개의 추가 새로 고침 명령을 사전에 실행할 수 있습니다("풀인"). 이것은 새로 고침 횟수를 줄이지 않지만 두 개의 주변 새로 고침 명령 사이의 최대 간격은 9 × tREFI로 제한됩니다.Xilinx DDR2 MIG 7 성능 추정-그림-21
  • 모든 은행 활용 – 적절한 주소 지정 메커니즘이 바람직합니다.
    • 행-뱅크-열: 순차 주소 공간에서 발생하는 트랜잭션의 경우 코어는 기존 행의 끝에 도달하면 트랜잭션을 계속하기 위해 DRAM 장치의 다음 뱅크에서 동일한 행을 자동으로 엽니다. 순차적 주소 위치로 대량의 데이터 패킷을 버스팅해야 하는 애플리케이션에 매우 적합합니다.
    • 뱅크-행-열: 행 경계를 넘으면 현재 행이 닫히고 동일한 뱅크 내에서 다른 행이 열립니다. MSB는 다른 은행에서 전환하는 데 사용할 수 있는 은행 주소입니다. 일정 기간 동안 메모리의 한 블록에 대해 더 짧고 더 무작위적인 트랜잭션을 수행한 다음 다른 블록(뱅크)으로 점프하는 데 적합합니다.
  • 버스트 길이
    • BL 8은 3 시리즈의 DDR7에서 지원됩니다. BC4는 효율이 50% 미만으로 매우 낮습니다. 이는 BC4의 실행 시간이 BL8과 동일하기 때문입니다. 데이터는 구성 요소 내부에 가려져 있습니다.
    • 전체 버스트 쓰기를 원하지 않는 경우 데이터 마스크 또는 읽기 후 쓰기를 고려할 수 있습니다.
  • 적절한 ZQ 간격 설정(DDR3 전용)
    컨트롤러는 ZQ Short(ZQCS) 및 ZQ Long(ZQCL) 보정 명령을 모두 보냅니다.
    • DDR3 Jedec 표준 준수
    • ZQ 보정은 JEDEC 사양 JESD5.5-79 DDR3 SDRAM 표준의 섹션 3에서 설명합니다.
    • ZQ 보정은 VT 전체의 변화를 설명하기 위해 일정한 간격으로 ODT(On Die Termination)를 보정합니다.
    • 로직은 bank_common.v/vhd에 포함되어 있습니다.
    • 파라미터 Tzqcs는 ZQ 보정 명령이 메모리로 전송되는 속도를 결정합니다.
    • 카운터를 비활성화하고 app_zq_req를 사용하여 수동으로 보낼 수 있습니다. 수동으로 새로 고침을 보내는 것과 유사합니다.
      자세한 내용은 (Xilinx Answer 47924)를 참조하십시오.Xilinx DDR2 MIG 7 성능 추정-그림-22

컨트롤러 오버헤드

  1. 정기 읽기 - 참조 (자일링스 답변 43344) 자세한 내용은.
    • 읽기 기간을 변경하지 마십시오.
    • 쓰기 중 주기적인 읽기를 건너뛰고 실제 읽기 전에 누락된 읽기 수를 발행합니다.
  2. 재정렬 – 참조 (자일링스 답변 34392) 자세한 내용은.
    사용자 및 AXI 인터페이스 디자인의 경우 이 기능을 활성화하는 것이 좋습니다.
    • 재정렬은 여러 명령을 미리 보고 비메모리 명령이 유효한 대역폭을 차지하지 않도록 사용자 명령 순서를 변경하는 논리입니다. 성능은 실제 트래픽 패턴과도 관련이 있습니다.
    • 주소 패턴을 기반으로 재정렬은 사전 충전을 건너뛰고 명령을 활성화하는 데 도움이 되며 tRCD 및 tRP가 데이터 대역폭을 차지하지 않도록 합니다.Xilinx DDR2 MIG 7 성능 추정-그림-23
  3. 은행 기계의 수를 늘리십시오.
    • 대부분의 컨트롤러 로직은 뱅크 머신에 있으며 DRAM 뱅크에 해당합니다.
    • 주어진 뱅크 머신은 주어진 시간에 하나의 DRAM 뱅크를 관리합니다.
    • 뱅크 머신 할당은 동적이므로 각 물리적 뱅크에 대해 뱅크 머신을 가질 필요가 없습니다.
    • 은행 기계를 구성할 수 있지만 이는 영역과 성능 간의 절충안입니다.
    • 허용되는 은행 기계의 수는 2-8입니다.
    • 기본적으로 4개의 Bank Machine은 RTL 매개변수를 통해 구성됩니다.
    • Bank Machines를 변경하려면 memc_ui_top Ex에 포함된 nBANK_MACHS = 8 매개변수를 고려하십시오.amp8개의 뱅크 머신에 대한 le – nBANK_MACHS = 8

이제 성능에 영향을 미치는 요소를 알고 있습니다.
패킷당 512 데이터 바이트를 제공하고 다른 메모리 위치에 저장해야 하는 업스트림 애플리케이션을 고려하십시오. 512 데이터 바이트는 64 DDR3 데이터 버스트와 동일하므로 ex를 다시 실행하십시오.amp자극이 있는 디자인 file 512개의 쓰기, 512개의 읽기 및 64개의 쓰기 또는 읽기마다 행 전환을 포함합니다.

  • 3f_0_0_0000_000_0
  • 3f_0_0_0001_000_0
  • 3f_0_0_0002_000_0
  • 3f_0_0_0003_000_0
  • 3f_0_0_0004_000_0
  • 3f_0_0_0005_000_0
  • 3f_0_0_0006_000_0
  • 3f_0_0_0007_000_0
  • 3f_0_0_0000_000_1
  • 3f_0_0_0001_000_1
  • 3f_0_0_0002_000_1
  • 3f_0_0_0003_000_1
  • 3f_0_0_0004_000_1
  • 3f_0_0_0005_000_1
  • 3f_0_0_0006_000_1
  • 3f_0_0_0007_000_1

시뮬레이션이 끝나면 버스 사용률이 77%임을 알 수 있습니다. Xilinx DDR2 MIG 7 성능 추정-그림-24

그림 11: 512회 쓰기 및 512회 읽기에 대한 성능 통계 - 64회 쓰기 또는 읽기에 대한 행 전환. 

이제 이전 섹션에서 배운 지식을 적용하여 효율성을 개선할 수 있습니다. 로 view 행을 변경하는 대신 모든 뱅크를 활용하려면 다음과 같이 주소 패턴을 수정하여 뱅크를 변경하십시오.
이는 MIG GUI의 메모리 주소 매핑 설정에서 ROW_BANK_Column을 설정하는 것과 같습니다.

  • 3f_0_0_0000_000_0
  • 3f_0_1_0000_000_0
  • 3f_0_2_0000_000_0
  • 3f_0_3_0000_000_0
  • 3f_0_4_0000_000_0
  • 3f_0_5_0000_000_0
  • 3f_0_6_0000_000_0
  • 3f_0_7_0000_000_0
  • 3f_0_0_0000_000_1
  • 3f_0_1_0000_000_1
  • 3f_0_2_0000_000_1
  • 3f_0_3_0000_000_1
  • 3f_0_4_0000_000_1
  • 3f_0_5_0000_000_1
  • 3f_0_6_0000_000_1
  • 3f_0_7_0000_000_1

시뮬레이션이 끝나면 이전의 77% 버스 사용률이 이제 87이 된 것을 볼 수 있습니다! Xilinx DDR2 MIG 7 성능 추정-그림-25

여전히 더 높은 효율성이 필요한 경우 1024 또는 2048바이트의 큰 패킷 크기를 사용하거나 수동 새로 고침을 고려할 수 있습니다.

메모: Xilinx는 데이터 신뢰성에 영향을 미치는 Jedec 자동 새로 고침 타이밍을 충족할 수 있을지 확신할 수 없기 때문에 컨트롤러 새로 고침을 우회하는 것을 권장하지 않습니다.
컨트롤러 측에서 nBANk_MACH를 변경하고 성능 향상을 확인할 수 있습니다.
그러나 이것은 디자인 타이밍에 영향을 미칠 수 있으므로 참조하십시오. (자일링스 답변 36505) nBAANk_MACH에 대한 자세한 내용은Xilinx DDR2 MIG 7 성능 추정-그림-26

core_name_mig_sim.v를 엽니다. file 매개변수 nBANK_MACHS를 4에서 8로 변경하고 시뮬레이션을 다시 실행하십시오. 하드웨어에서 매개변수 값을 적용하려면 core_name_mig.v를 업데이트해야 합니다. file.
버스 활용도가 87%인 동일한 패턴을 사용했습니다(그림 -12).
nBANK_MACHS를 8로 설정하면 효율은 이제 90%입니다. Xilinx DDR2 MIG 7 성능 추정-그림-27

또한 ½ 및 ¼ 컨트롤러는 대기 시간으로 인해 효율성에 부정적인 영향을 미칩니다.
예를 들어amp4CK 주기마다 명령을 보낼 수 있기 때문에 최소 DRAM 타이밍 사양을 준수할 때 가끔 추가 패딩이 발생하여 이론적 효율성이 떨어질 수 있습니다.
다양한 컨트롤러를 사용해 효율성 요구 사항에 맞는 컨트롤러를 찾으십시오.

참고문헌

  1. Zynq-7000 AP SoC 및 7 시리즈 FPGA MIS v2.3[UG586]
  2. Xilinx MIG 솔루션 센터 http://www.xilinx.com/support/answers/34243.html

개정 내역
13년 03월 2015일 – 최초 릴리스

PDF 다운로드 : Xilinx DDR2 MIG 7 성능 추정 가이드

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *