xu4 u-boot 에서 lpddr 속도 이슈

Post Reply
joys
Posts: 4
Joined: Tue Jun 20, 2017 11:49 am
languages_spoken: english
ODROIDs: odroidxu4
Has thanked: 0
Been thanked: 0
Contact:

xu4 u-boot 에서 lpddr 속도 이슈

Post by joys »

안녕하세요

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 때문에 매번 개발시에 문제가 되고 있습니다.

해결에 도움이 필요합니다.

감사합니다.

User avatar
odroid
Site Admin
Posts: 37204
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1712 times
Been thanked: 1118 times
Contact:

Re: xu4 u-boot 에서 lpddr 속도 이슈

Post by odroid »

u-boot의 dram access 속도를 중요시하는 경우는 거의 처음 보는것 같네요.
리눅스 시스템 부팅 시간에 미치는 영향은 매우 미미하다고 보입니다.

어떤 용도로 XU4를 사용하시나요?

joys
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 속도 이슈

Post by joys »

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 정도의 성능이 나오내요.

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");
}

User avatar
odroid
Site Admin
Posts: 37204
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1712 times
Been thanked: 1118 times
Contact:

Re: xu4 u-boot 에서 lpddr 속도 이슈

Post by odroid »

위 결과만 보면 Memory IO 속도가 느린것은 아닌것 같습니다.
혹시 MMU가 활성화되어있지 않아 실제로는 CPU의 i-cache가 꺼져있어 프로그램이 느리게 동작하는것은 아닐까요?
저희가 bare-metal 프로그래밍 경험이 전혀 없어서 직접적으로 문제 해결을 도와드리기는 어렵습니다. 이해 부탁드립니다.

joys
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 속도 이슈

Post by joys »

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화 되었을까 해서 문의 드렸습니다.

답변 감사 합니다.

좋은 하루 되세요.

joy
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 속도 이슈

Post by joy »

@joys,
혹시 아래 u-boot command를 이용하여 dram clock을 933MHz로 올렸을 때 memory compare시 증상에 변화가 있는지 확인해봐 주실 수 있을까요?

Code: Select all

# dmc 933

joys
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 속도 이슈

Post by joys »

안녕하세요

확인이 늦었습니다.

933Mhz 로 clock을 올리고 테스트를 하면

11 min -> 9 min 으로 향상이 되긴 합니다.

CPU의 APLL을 올려서 테스트 해도 약간 빨라지긴 합니다.

다만...

다른 업체의 exynos 계열이나 Qualcomm 은 같은 코드가 최대 10초 내에 완료 됩니다.

compare의 성능 Gap이 Frequency로 해결 될 거 같지 않구요.

Arm register 명령어로 옵션 처리를 해줘야 하는게 있을까 싶기도 한데
이쪽은 저도 경험이 없어 알 수가 없습니다.

User avatar
odroid
Site Admin
Posts: 37204
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1712 times
Been thanked: 1118 times
Contact:

Re: xu4 u-boot 에서 lpddr 속도 이슈

Post by odroid »

다른 업체의 제품을 사용하셔야 할것 같네요. 도움을 못드려 죄송합니다.

Post Reply

Return to “XU4/HC1/HC2/XU3”

Who is online

Users browsing this forum: No registered users and 2 guests