본문 바로가기

Black board/Scratch pad3

ARMv8에서 Virtual address를 통해 cache flush 시키기2 1편에서 적었던 참고 링크 중에 android kernel source로 dcache flush all을 위한 어셈블리 코드가 있었고, 해당 코드를 먼저 해당 코드를 분석해보자고 한다 참조: https://android.googlesource.com/kernel/msm.git/+/android-msm-anthias-3.10-lollipop-wear-release/arch/arm64/mm/cache.S 1.1. flush_dcache_all ENTRY(__flush_dcache_all) dsbsy// ensure ordering with previous memory accesses mrsx0, clidr_el1// read clidr andx3, x0, #0x7000000// extract loc from.. 2020. 3. 21.
mtrr 파일 수정해서 uncachable 영역 조정하기 컴퓨터를 부팅될 때 부트로더와 커널이 device tree를 읽고 memory mapped I/O(MMIO)를 정의한다. 그 중에서 I/O영역은 보통 uncachable 영역으로 잡는다. 글쓴이는 FPGA accelerator을 실험하기 위해서 vivado의 PCIe core ip를 사용하였다. vivado의 pcie core는 pcie의 BAR영역을 확장하여 FPGA의 axi bus에 mapping함으로써, FPGA accelerator를 마치 메모리 영역처럼 보이게 한다. 이 디바이스에 mmap을 하여서 메모리처럼 사용을 하고 싶은데. word(4byte)마다 pcie통신을 하니 데이터 transaction 자체의 오버헤드가 너무 커서 성능이 상당히 저하된 것을 확인할 수 있었다. ubuntu:/lf.. 2019. 7. 11.
AXI signal 설명 AXI4를 기준으로 한다. in, out은 master 입장에서.Write ChannelWrite Address Channel SignalAWID(out) : Write address ID; write address group들의 id이다. user IP라면 웬만하면 id 하나만 쓸 듯하다.AWADDR(out) : write address이고...AWLEN(out) : Burst length이다. 해당 수치만큼 데이터를 burst해서 가지고 온다.AWSIZE(out) : burst size인데. data요청의 전체 크기를 말한다. data width * arlen = arsize; 한번의 data beat가 보내는 사이즈의 byte, log2; 즉 log2(wdata_width/8)AWBURST(out).. 2019. 3. 20.