0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术ESM6802( iMX6-WEC7)多核性能测试

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-05 11:08 次阅读

ESM6802是英创公司推出的基于Freescale i.MX6DL双核处理器(ARM Cortex-A9,主频1GHz)的高性能工控主板,预装正版Windows Embedded Compact 7(WEC7)嵌入式操作系统,WEC7一个最重要的特性就是对多核处理器的支持(Symmetric Multi-Processing(SMP)),下面将通过应用程序来测试在单核和多核情况下系统的执行情况,为了更直观的比较,同时参与测试的还有ESM3354,ESM3354是基于TI Coertex-A8处理器的工控主板,CPU主频1GHz,同样预装WEC7操作系统。

所设计的测试程序代码如下,其中的TestSmp函数有两个输入参数,第一参数表示要创建测试线程的数量,第二个参数为所创建线程的运行时长。cbTestSmp是被创建的测试线程,测试线程主要是在一个while循环中,反复读取内存变量然后与预设值进行比较,在运行设定的时间后自动退出循环,其中的threadParam->loops变量会记录下while循环总共执行的次数。

typedefstruct_SMP_THREAD_PARAM

{

UINT32 durationMs;

UINT32 threadId;

UINT64 loops;

BOOL bSetAffinity;

UINT32 sandBoxSize;

LPVOID sandBoxStart;

}SMP_THREAD_PARAM, *PSMP_THREAD_PARAM;

ULONGcbTestSmp(LPVOID param)

{

PSMP_THREAD_PARAM threadParam = (PSMP_THREAD_PARAM)param;

DWORD tStart = GetTickCount();

UINT8 *buffer = (UINT8 *)threadParam->sandBoxStart;

wprintf(L"Ahou, Thread %d, running for %d ms\r\n", threadParam->threadId,

threadParam->durationMs);

// Write to sandbox

for(UINT32 i = 0; i < threadParam->sandBoxSize; i++)

{

buffer[i] = (UINT8)(i);

}

while( (GetTickCount() - tStart) < threadParam->durationMs)

{

// Read back from sandbox

for(UINT32 i = 0; i < threadParam->sandBoxSize; i++)

{

if(buffer[i] != (UINT8)(i))

{

wprintf(L"Thread %d : error at byte %d for loop %I64d !!\r\n",

threadParam->threadId, i, threadParam->loops);

}

}

threadParam->loops++;

}

wprintf(L"Thread %d : terminating\r\n", threadParam->threadId);

return0;

}

voidTestSmp(UINT32 nNumOfThread, UINT32 durationMs)

{

UINT32 i;

PSMP_THREAD_PARAM threadParams;

HANDLE *threadHandles;

UINT64 totalLoops = 0;

UINT32 sandBoxSize = 1024 * 128; // 128 kB

HANDLE h_array[1];

threadParams = (PSMP_THREAD_PARAM)malloc(nNumOfThread *sizeof(SMP_THREAD_PARAM));

if(threadParams == NULL)

{

wprintf(L"Failed allocating thread params !\r\n");

return;

}

threadHandles = (HANDLE *)malloc(nNumOfThread *sizeof(HANDLE));

if(threadHandles == NULL)

{

wprintf(L"Failed allocating thread handles !\r\n");

return;

}

for(i = 0; i < nNumOfThread; i++)

{

threadParams[i].bSetAffinity = TRUE;

threadParams[i].threadId = i;

threadParams[i].durationMs = durationMs;

threadParams[i].loops = 0;

threadParams[i].sandBoxSize = sandBoxSize;

threadParams[i].sandBoxStart = malloc(sandBoxSize);

threadHandles[i] = CreateThread(NULL, 0, cbTestSmp, &threadParams[i], 0, NULL);

wprintf(L"Thread handle %d : 0x%x\r\n", i, threadHandles[i]);

}

h_array[0] = threadHandles[0];

DWORD res = WaitForSingleObject(h_array[0], INFINITE);

Sleep(500);

if(res == WAIT_TIMEOUT)

{

wprintf(L"Timeout waiting for threads !\r\n");

}

else

{

wprintf(L"All threads exited\r\n");

}

for(i = 0; i < nNumOfThread; i++)

{

wprintf(L"Thread %d did run %I64d loops\r\n", i, threadParams[i].loops);

totalLoops += threadParams[i].loops;

free(threadParams[i].sandBoxStart);

CloseHandle(threadHandles[i]);

}

wprintf(L"Total number of loops %I64d (%I64d millions)\r\n", totalLoops,

totalLoops / 1000000);

free(threadHandles);

free(threadParams);

}

将上述测试代码编译生成为exe文件,分别在ESM3354和ESM6802上运行,设置while循环的执行时间均为10000ms,测试结果如下:

1、创建单个线程

测试主板与线程 ESM3354(1GHz单核 Cortex-A8) ESM6802(1GHz双核Cortex-A9)
循环次数 6791 7493

当测试程序只创建一个测试线程时,ESM3354的while循环执行了6791次,ESM6802执行7493次,虽然ESM6802为双核处理器,但由于程序只有一个线程,即同一时刻只有一个线程在运行,所以在相同的时间内,循环的次数仅略多于ESM3354。由于ESM3354和ESM6802的CPU主频同样都是1GHz,所以可以认为ESM6802多出的循环次数也就是Cortex-A8与Cortex-A9在代码执行效率上的差别。

2、创建两个线程

测试主板与线程 ESM3354(1GHz单核 Cortex-A8) ESM6802(1GHz双核Cortex-A9)
线程1循环次数 3390 7438
线程2循环次数 3442 7452
总循环次数 6832 14890

当测试程序创建了两个线程时,ESM3354会将CPU资源大约平均的分配给两个线程,如上表中线程1执行了3390次,线程2执行了3442次,两个线程总共执行的次数与只创建单个线程测试时的循环次数相当。ESM6802为双核CPU,在测试程序有两个线程的情况下,在同一时刻两个线程可以同时运行,所以总的循环次数大约是单个线程测试时的两倍。

通过上面的测试可以看到,在多线程情况下,如果操作系统支持多核处理器,那么双核CPU的运算能力将是单核CPU的两倍。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3440

    浏览量

    87145
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34618
收藏 人收藏

    评论

    相关推荐

    兆芯开先KX-7000处理器现身Geekbench,多核性能接近8代i5

     KX-7000在连续两次百项基准测试中,取得单核最高得分824分,多核最高得分3813分的优异表现,多核性能与第八代酷睿i5旗鼓相当。
    的头像 发表于 03-19 14:18 304次阅读

    阐述量子信息技术的研究现状与未来

    20世纪 80 年代, 科学家将量子力学应用到信息领域, 从而诞生了量子信息技术, 诸如量子计算机、量子密码、量子传感等. 这些技术的运行规律遵从量子力学, 因此不仅其原理是量子力学, 器件本身
    发表于 11-22 11:40 484次阅读
    阐述量子<b class='flag-5'>信息技术</b>的研究现状与未来

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48

    再次登榜|亿达科创入选“2023年度软件和信息技术服务竞争力百强企业”

    8月31日,在第二十五届中国国际软件博览会上,中国电子信息行业联合会发布了“2023年度软件和信息技术服务竞争力百强企业”榜单。 亿达科创凭借在企业规模、经营业绩、技术创新等方面的综合能力强
    的头像 发表于 09-12 16:29 516次阅读

    集成电路是现代电子信息技术的基础

    集成电路是现代电子信息技术的基础 随着科技的不断发展,集成电路技术已成为现代电子信息技术的基础之一。它的应用范围已经涉及到电子、通信、计算机、军事等行业,已经为人们的生活和工作带来了极大的便利
    的头像 发表于 08-29 16:25 1278次阅读

    2023年国家级高职学校信息技术教师能力培训会圆满举行

    2023年国家级高职学校信息技术教师能力培训会圆满举行
    的头像 发表于 07-31 22:56 391次阅读
    2023年国家级高职学校<b class='flag-5'>信息技术</b>教师能力培训会圆满举行

    中科驭数成为证券基金行业信息技术应用创新知识库首批合作厂商!

    7月20日,证券基金行业信息技术应用 创新中心与中国信息通信研究院携手合作,正式上线了行业信息技术应用创新知识库, 旨在做好对行业信息技术应用创新工作的支撑,加强产业侧和行业机构之间的
    的头像 发表于 07-21 18:50 325次阅读
    中科驭数成为证券基金行业<b class='flag-5'>信息技术</b>应用创新知识库首批合作厂商!

    寻迹智行上榜2023年相城区软件和信息技术服务业“雏雁”企业

    根据《相城区软件和信息技术服务业推动数字产业化发展“雏雁”企业评估规范》要求,经企业申报、板块推荐、形式审查、专家评审、实地走访等环节,共评选出2023年相城区软件和信息技术服务业“雏雁”企业34家,其中就包括苏州寻迹智行机器人技术
    的头像 发表于 06-28 15:51 292次阅读
    寻迹智行上榜2023年相城区软件和<b class='flag-5'>信息技术</b>服务业“雏雁”企业

    2023年中海达星推官系列直播再度启航,与您一起探讨空间信息技术

    信息技术
    中海达
    发布于 :2023年06月21日 11:45:49

    中科曙光参建国内首个信息技术领域产教融合共同体

    “新一代信息技术产业产教融合共同体”在京成立(简称“共同体”)。**该共同体是由中国电子学会联合国内信息技术行业重点职业院校与重点企业成立的。首批成员单位的11家新一代信息技术领域领先职业院校校长,以及9家行业知名企业领导共同出
    的头像 发表于 06-13 12:38 442次阅读

    imx6ull工业级在80度高温测试会掉电,请问下是否正常?

    imx6ull MCIMX6Y2CVM05AB 工业级在80度高温测试会 power down, 芯片规格书写了Temperature Tj -40 to 105
    发表于 05-31 11:03

    如何在yocto环境中修改u-boot-imx [imx6ullevk]?

    ysp@ud2204:~/work/imx-yocto-bsp$ cp -a fsl-image-machine-test/tmp/work/imx6
    发表于 05-12 06:50

    使用Blue5.47的imx7s和使用Bluez 5.46的iMX7d相关联的BLE和A2DP QDID?

    有谁知道与使用 Blue5.47(在 Linux 4.1 上)的 imx7s 和使用 Bluez 5.46(在 Linux 4.9.88 上)的 iMX7d 相关联的 BLE 和 A2DP QDID
    发表于 05-11 07:26

    权威榜单发布!“2022-2023信息技术应用创新榜”隆重揭晓

    2023年5月8日,由信息化观察网、信息技术应用创新榜组委会组织发起的“2022-2023信息技术应用创新榜”评审结果正式公示。本次榜单征集旨在全面展示信创发展最新成果,遴选出信创细分领域创新
    的头像 发表于 05-09 09:40 851次阅读

    嵌入式工业开发板基础测试手册——基于NXP iMX6ULL开发板(1)

    (SD启动模式)启动系统,通过路由器与PC机进行网络连接。基于测试板卡:龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A
    发表于 05-03 22:41