문서 ID: 000086179 콘텐츠 형태: 제품 정보 및 문서 마지막 검토일: 2018-07-26

FPGA 소프트 로직에서 HPS 메모리까지 캐시 일관성 액세스에 대해 SoC 시스템을 구성하려면 어떻게 합니까?

환경

BUILT IN - ARTICLE INTRO SECOND COMPONENT
설명

FPGA 소프트 로직에서 HPS 메모리 수에 이르는 캐시 일관된 액세스를 허용하려면 다음 항목이 있어야 합니다.

  • MMU 페이지 테이블
  • NOC 보안 설정
  • CoreLink™ 레벨 2 캐시 컨트롤러 L2C-310 구성
  • AXI 사이드밴드 신호: Axi_cache_security 브리지
    • AxCache 및 AxUser
    • AXPROT

MMU 페이지 테이블

MMU 페이지 테이블은 캐시 가능한 대상 메모리 영역을 정의할 수 있도록 설정되어야 하며, 보안 또는 비보안성입니다.   MMU 페이지 테이블 할당 속성 및 보안 모드(신뢰 영역)에 대한 자세한 내용은 Linux 및 ARM 문서를 참조하십시오.

  • 메모리는 쓰기 다시 쓰기 할당(WBWA)으로 표시되어야 합니다.
  • Linux 사용자 공간 응용 프로그램 또는 커널에서 메모리에 액세스하려면 보안 모드가 안전하지 않아야 합니다.
  • 보안은 ARM 보안 상태에서 실행되는 프로세스에 의해 메모리에 액세스하는 데 사용되어야 합니다(감독자 모드와 혼동하지 않음).

CP15: SDR:NS = 1인 경우 보안 모드가 활성화됩니다.   참고: NS 레지스터는 감독자 모드에서만 사용할 수 있습니다.

 

NOC 보안 설정

Arria® 10 SoC 네트워크 온 칩 iinterconnect(NOC)는 각 브리지와 상호 연결 전체에 방화벽으로 구성됩니다.   HPS 브리지를 통한 액세스를 허용하려면

  • 브리지를 통한 트랜잭션을 허용하도록 방화벽을 구성해야 합니다.
  • 보안 액세스를 허용/허용하지 않도록 마스터 컨트롤을 설정해야 합니다.
  • 마스터가 보안 액세스를 비활성화하도록 설정된 경우 모든 트랜잭션이 비보안 상태로 변경되어 일관성이 깨질 수 있습니다.

SoC EDS 소프트웨어 버전 16.0에서 생성된 U-부팅은 NOC 방화벽을 비활성화하지만 마스터를 설정하여 보안 액세스를 비활성화합니다.

FPGA2HPA 브리지를 통해 보안 액세스를 허용하려면:

레지스터 fpga2soc_ctrl 설정: allow_secure 1(기본값 = 0, 보안 허용되지 않음)

 

레벨 2 캐시 컨트롤러 구성

CoreLink™ 레벨 2 캐시 컨트롤러 L2C-310 구성

Aux Control 레지스터 비트 [22]: 공유 속성 재정의 활성화 비트 가 ON으로 설정되어 있는 것이 좋습니다.    이 설정은 MPU 코어 또는 ACP 포트에서 캐시할 수 없는 일부 액세스 권한을 캐시할 수 없는 비 할당 액세스로 변환하고 SDRAM에서 L2 캐시로 일관성의 지점을 이동하는 L2 캐시 컨트롤러의 최적화를 비활성화합니다.     마스터가 L3 또는 FPGA2SDRAM 브리지를 통해 SDRAM에 액세스할 경우 일관성이 변경되면 문제가 발생할 수 있습니다.

참조: CoreLink™ 레벨 2 캐시 컨트롤러 L2C-310, 개정: r3p3 기술 참조 설명서 (ARM DDI 0246H(ID080112)): 섹션 2.3.2 공유 가능한 속성.

위의 내용은 https://github.com/altera-opensource/u-boot-socfpga 사용 가능한 최신 u-boot-socfpga 버전에서 기본적으로 설정됩니다.

 

Qsys에서 AXI 사이드밴드 신호 구동: Axi_cache_security 브리지

Axi_cache_security 브리지는 AxCache/AxUser/AxProt 사이드밴드 신호를 올바른 값으로 구동하는 데 사용되어야 합니다.  Axi_cache_security 브리지는 Arria 10 브리지 예시 https://www.altera.com/support/support-resources/design-examples.html에서 찾을 수 있습니다.

 

AxCache[3:0] 사이드밴드 신호

올바른 AxCache [3:0] 설정은 MMU 페이지 테이블 설정에 따라 달라집니다.

ARM® 아키텍처 참조 매뉴얼 ARMv7-A 및 ARMv7-R 에디션 (ARM DDI 0406C.c(ID051414)을 참조하십시오. A3.5 메모리 유형 및 속성 및 메모리 주문 모델 AxCache[1]는 일관된 액세스에 대해 1이어야 합니다.

참조: Cortex-A9™ MPCore® 개정: r3p0 기술 참조 설명서 (ARM DDI 0407G(ID072711)): 2.4 가속기 일관성 포트

AW®캐시[3:0]

[3] - 할당 가능한 쓰기

[2] - 할당 가능한 읽기

[1] - 캐시 가능

[0] - 버퍼러블

AW®CACHE에 대한 권장 초기 값[3:0]

awcache = 0xF; 4'b1111 쓰기 할당, 읽기 할당, 버퍼러블, 캐시 가능

arcache = 0xF; 4'b1111 쓰기 할당, 읽기 할당, 버퍼러블, 캐시 가능

참고: 이러한 설정은 사용 사례에 따라 변경되어야 합니다.

 

AxUser[4-0] 사이드밴드 신호

AxUser 신호는 추가 정보를 전달하는 데 사용되며 ACP 트랜잭션의 경우 내부 및 외부 캐시 가능한 정보를 전달하는 데 사용됩니다.

AW®사용자[3:0]

[0] - 일관된 액세스의 경우 공유 속성을 1로 설정해야 합니다.

[3:1] - SCU에서 ACP에 내부 캐시 정책이 없는 것으로 해석되지 않으며, 캐시가 독점 모드로 설정되어 있는 경우 사용하기 위해 L2 캐시 컨트롤러로 전달됩니다.

참조: Cortex-A9™ MPCore® 개정: r3p0 기술 참조 설명서 (ARM DDI 0407G(ID072711)): 2.4 가속기 일관성 포트,

AxUSER에 대한 권장 초기 값[4:0]

awuser = 0x1; 5'b000001

aruser = 0x1; 5'b000001

참고: Arria 10에서 AXI 공유 속성은 내부적으로 "1"에 연결됩니다.

 

AxProt[2:0] 사이드밴드 신호

AxProt는 트랜잭션의 보안 상태를 지정하며, 캐시 히트를 보장하기 위해 대상 메모리의 보안 상태와 일치해야 합니다.

AW®PROT[2:0]

[2] - 명령 가져오기

[1] - 비보안 액세스

[0] - 권한 있는 액세스

 

AxProt에 대한 제안 초기 값[2:0]

MMU 페이지 테이블 메모리 보안 설정 및 CPU 보안 설정 및 ACP 트랜잭션 보안 상태가 모두 일치해야 캐시가 타격을 받을 수 있습니다.

보안 상태의 CPU가 액세스하는 보안 메모리 위치에 대한 비보안 ACP 트랜잭션으로 인해 캐시가 누락되고 일관되지 않은 액세스가 발생합니다.

 

 

지원되는 시나리오 요약:

비보안

  • MMU 페이지 테이블은 대상 메모리 영역을 안전하지 않은 것으로 정의하도록 설정되었습니다.
  • 대상 영역에 대한 비보안 액세스를 허용하도록 NOC 방화벽이 설정됩니다.
  • F2H 브리지는 대상 영역에 대한 보안 또는 비보안 액세스를 수행합니다.

보안

  • MMU 페이지 테이블은 대상 메모리 영역을 안전한 것으로 정의하도록 설정되었습니다.
  • NOC 방화벽은 대상 영역에 대한 안전한 액세스를 허용하도록 설정됩니다.
  • F2H 브리지는 대상 영역에 대한 안전한 액세스를 수행합니다.

관련 제품

이 문서는 다음 항목에 적용됩니다. 1 제품

인텔® Arria® 10 SX SoC FPGA

이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.