안녕하세요
XU4를 이용하여 수년간 개발을 진행 중입니다.
저희가 XU4의 u-boot 영역에서도 개발을 진행 하고 있습니다.
문제는 u-boot에서 memory 관련 수행 시간이 오래 걸리는 문제가 있습니다.
kernel에서는 정상 동작합니다.
memset, memcpy 등의 memory 관련 처리 속도가 아주 느립니다.
단순 data compare code도 오래 걸립니다.
data compare performance 가 1MB/s 정도 밖에 안나옵니다.
dcache_enable(), icache_enable() 을 수행 해도 느립니다.
ddr frequency 도 825Mhz 로 설정이 되는 것으로 보입니다.
간단한 확인법으로 odroid.h 에서
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (1 << 26)) // 64MB
로 수정 하면 부팅 시에 dlmalloc.c 의 memset이 오래 걸려 u-boot 부팅 시간이 delay되는 현상을 볼 수 있습니다.
void mem_malloc_init(ulong start, ulong size)
{
mem_malloc_start = start;
mem_malloc_end = start + size;
mem_malloc_brk = start;
//오래 걸림
memset((void *)mem_malloc_start, 0, size);
}
exynos5410, exynos7420의 타사 보드는 정상 속도가 나오는데 Odriodxu4의 5422에서만 느린 현상이 보입니다.
아래는 U-boot 부팅 시 나오는 U-boot 버전입니다.
U-Boot 2012.07 (Mar 12 2021 - 09:26:49) for Exynos5422
수년간 해당 issue 때문에 매번 개발시에 문제가 되고 있습니다.
해결에 도움이 필요합니다.
감사합니다.
xu4 u-boot 에서 lpddr 속도 이슈
- odroid
- Site Admin
- Posts: 37281
- Joined: Fri Feb 22, 2013 11:14 pm
- languages_spoken: English, Korean
- ODROIDs: ODROID
- Has thanked: 1747 times
- Been thanked: 1127 times
- Contact:
Re: xu4 u-boot 에서 lpddr 속도 이슈
u-boot의 dram access 속도를 중요시하는 경우는 거의 처음 보는것 같네요.
리눅스 시스템 부팅 시간에 미치는 영향은 매우 미미하다고 보입니다.
어떤 용도로 XU4를 사용하시나요?
리눅스 시스템 부팅 시간에 미치는 영향은 매우 미미하다고 보입니다.
어떤 용도로 XU4를 사용하시나요?
-
- Posts: 4
- Joined: Tue Jun 20, 2017 11:49 am
- languages_spoken: english
- ODROIDs: odroidxu4
- Has thanked: 0
- Been thanked: 0
- Contact:
Re: xu4 u-boot 에서 lpddr 속도 이슈
bootloader 상에서 외부 센터 모듈 Handling 이나 eMMC, SDCard의 Data 무결성 테스트 등을 진행 중입니다.
Non-OS system 또는 low-level 환경이 필요한 경우에 Bootloader 상에서 개발을 진행 합니다.
Data receive 속도보다 검증 하는데 Data compare 속도가 워낙 느려 전체 system running time에 큰 영향을 주게 됩니다.
odroidxu-v2017.05 version 을 github 에서 받아서 테스트 해보니 memset은 성능이 좋게 나오내요.
여전히 memory compare 시간은 오래 걸립니다.
아래 코드로 u-boot 상에서 테스트를 하면 1GB compare 시에 11분 정도나 걸립니다.
1.5MB/s 정도의 성능이 나오내요.
Non-OS system 또는 low-level 환경이 필요한 경우에 Bootloader 상에서 개발을 진행 합니다.
Data receive 속도보다 검증 하는데 Data compare 속도가 워낙 느려 전체 system running time에 큰 영향을 주게 됩니다.
odroidxu-v2017.05 version 을 github 에서 받아서 테스트 해보니 memset은 성능이 좋게 나오내요.
여전히 memory compare 시간은 오래 걸립니다.
아래 코드로 u-boot 상에서 테스트를 하면 1GB compare 시에 11분 정도나 걸립니다.
1.5MB/s 정도의 성능이 나오내요.
Code: Select all
void mem_cmp_test(void)
{
int i = 0, j = 0;
ulong start = 0;
uint *test_buf = (uint*)0x40000000;
icache_enable();
dcache_enable();
printf ("start mem test\n");
memset(test_buf, 0x0, 4*1024*1024);
printf( "end memset\n");
start = get_timer(0);
for (j = 0; j < 1000; j++)
{
for (i = 0; i < 1*1024*1024; i++)
{
if (*test_buf != 0x0)
{
printf ("diff\n");
}
test_buf++;
}
test_buf = 0x40000000;
}
printf("[%s] time %lu ms\n", __func__, get_timer(start));
printf ("end mem test\n");
}
- odroid
- Site Admin
- Posts: 37281
- Joined: Fri Feb 22, 2013 11:14 pm
- languages_spoken: English, Korean
- ODROIDs: ODROID
- Has thanked: 1747 times
- Been thanked: 1127 times
- Contact:
Re: xu4 u-boot 에서 lpddr 속도 이슈
위 결과만 보면 Memory IO 속도가 느린것은 아닌것 같습니다.
혹시 MMU가 활성화되어있지 않아 실제로는 CPU의 i-cache가 꺼져있어 프로그램이 느리게 동작하는것은 아닐까요?
저희가 bare-metal 프로그래밍 경험이 전혀 없어서 직접적으로 문제 해결을 도와드리기는 어렵습니다. 이해 부탁드립니다.
혹시 MMU가 활성화되어있지 않아 실제로는 CPU의 i-cache가 꺼져있어 프로그램이 느리게 동작하는것은 아닐까요?
저희가 bare-metal 프로그래밍 경험이 전혀 없어서 직접적으로 문제 해결을 도와드리기는 어렵습니다. 이해 부탁드립니다.
-
- Posts: 4
- Joined: Tue Jun 20, 2017 11:49 am
- languages_spoken: english
- ODROIDs: odroidxu4
- Has thanked: 0
- Been thanked: 0
- Contact:
Re: xu4 u-boot 에서 lpddr 속도 이슈
cache-cp15.c 파일 내에서 mmu_setup은 호출 되서 arm control reg 의 mmu_enable bit는 설정이 되는 것은 확인이 되는데
정상적으로 동작을 하는 것인지는 알 수가 없내요.
DCache, ICache register도 enable로 설정 되어 있구요.
예전에 DMC control register 도 uboot 에서 값과 kernel에의 값을 비교 해봤는데 별 차이는 없었습니다.
exynos5410, 5250, 7420을 사용 하는 보드에서는 성능이 잘 나오는 것으로 봐서는 방법이 있을 것 같기는 한데
찾을 수가 없내요.
한 4, 5년전에도 문의를 했었는데 이후 개선이 되었거나 open issue화 되었을까 해서 문의 드렸습니다.
답변 감사 합니다.
좋은 하루 되세요.
정상적으로 동작을 하는 것인지는 알 수가 없내요.
DCache, ICache register도 enable로 설정 되어 있구요.
예전에 DMC control register 도 uboot 에서 값과 kernel에의 값을 비교 해봤는데 별 차이는 없었습니다.
exynos5410, 5250, 7420을 사용 하는 보드에서는 성능이 잘 나오는 것으로 봐서는 방법이 있을 것 같기는 한데
찾을 수가 없내요.
한 4, 5년전에도 문의를 했었는데 이후 개선이 되었거나 open issue화 되었을까 해서 문의 드렸습니다.
답변 감사 합니다.
좋은 하루 되세요.
-
- Posts: 1584
- Joined: Fri Oct 02, 2015 1:44 pm
- languages_spoken: english
- ODROIDs: ODROID-C1+, XU4, X
- Has thanked: 179 times
- Been thanked: 210 times
- Contact:
Re: xu4 u-boot 에서 lpddr 속도 이슈
@joys,
혹시 아래 u-boot command를 이용하여 dram clock을 933MHz로 올렸을 때 memory compare시 증상에 변화가 있는지 확인해봐 주실 수 있을까요?
혹시 아래 u-boot command를 이용하여 dram clock을 933MHz로 올렸을 때 memory compare시 증상에 변화가 있는지 확인해봐 주실 수 있을까요?
Code: Select all
# dmc 933
-
- Posts: 4
- Joined: Tue Jun 20, 2017 11:49 am
- languages_spoken: english
- ODROIDs: odroidxu4
- Has thanked: 0
- Been thanked: 0
- Contact:
Re: xu4 u-boot 에서 lpddr 속도 이슈
안녕하세요
확인이 늦었습니다.
933Mhz 로 clock을 올리고 테스트를 하면
11 min -> 9 min 으로 향상이 되긴 합니다.
CPU의 APLL을 올려서 테스트 해도 약간 빨라지긴 합니다.
다만...
다른 업체의 exynos 계열이나 Qualcomm 은 같은 코드가 최대 10초 내에 완료 됩니다.
compare의 성능 Gap이 Frequency로 해결 될 거 같지 않구요.
Arm register 명령어로 옵션 처리를 해줘야 하는게 있을까 싶기도 한데
이쪽은 저도 경험이 없어 알 수가 없습니다.
확인이 늦었습니다.
933Mhz 로 clock을 올리고 테스트를 하면
11 min -> 9 min 으로 향상이 되긴 합니다.
CPU의 APLL을 올려서 테스트 해도 약간 빨라지긴 합니다.
다만...
다른 업체의 exynos 계열이나 Qualcomm 은 같은 코드가 최대 10초 내에 완료 됩니다.
compare의 성능 Gap이 Frequency로 해결 될 거 같지 않구요.
Arm register 명령어로 옵션 처리를 해줘야 하는게 있을까 싶기도 한데
이쪽은 저도 경험이 없어 알 수가 없습니다.
- odroid
- Site Admin
- Posts: 37281
- Joined: Fri Feb 22, 2013 11:14 pm
- languages_spoken: English, Korean
- ODROIDs: ODROID
- Has thanked: 1747 times
- Been thanked: 1127 times
- Contact:
Who is online
Users browsing this forum: No registered users and 1 guest