QCCO艾酷导航仪智能行车安全助手怎样使用?新一代4G车联网产品Hi一叮咚语音操作指令怎样使用?

博客访问: 7002
博文数量: 7
博客积分: 10
博客等级: 民兵
技术积分: 10
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 架构设计与优化
原文地址: 作者:
对于只是实现简单功能的c语言程序,不用考虑代码reorder问题。
现在才发现原来在编译程序的时候,通过gcc -O0来避免编译时,编译器将不会对指令重排。但是
这样仍然无法避免在运行的时候CPU对指令进行重排。所以使用内存屏障是非常重要的,也是无法避免的。
这里我有一个疑问,是否在java中也会遇到指令重排的问题呢?
上面是对指令重排问题的一点探讨,下面对CPU cache进行分析。
下面的这个链接里面 讲述了如何用c语言观察CPU 的cache行为:对于**的阻拦,最好的方法就是通过在线代理服务器的方式访问入口&/
第一个程序
int[] arr = new int[64 * 1024 * 1024];
for (int i = 0; i < arr.Length; i++) arr[i] *= 3;
for (int i = 0; i < arr.Length; i += 16) arr[i] *= 3;
Loop1与Loop2的执行时间是几乎相同的,CPU取内存中的数据都是以Cache Liine的方式取,大小为64Byte。由于顺序访问,访问到同一cache line的速度非常快,几乎可以忽略不计,所以上面的两个Loop的执行时间大体相同。
第二个程序
for (int i = 0; i < arr.Length; i += K) arr[i] *= 3;
前面一段访问时间都是大体相同,因为都在一个cacheline里面,而后由于k的增大,循环次数明显变少,所以时间会越来越小。
int steps = 64 * 1024 * 1024; // Arbitrary number of steps&
int lengthMod = arr.Length - 1;
for (int i = 0; i < steps; i++)
&&&&arr[(i * 16) & lengthMod]++; // (x & lengthMod) is equal to (x % arr.Length) }
这里面,L1 cache的大小为32KB,L2的大小为4M,所以可以看到当数组的大小逐渐增加时,每个元素的平均访问时间会越来越大,因为L1Cache不住就会访问L2Cache,以此类推。
private static int[] s_counter = new int[1024]; private void UpdateCounter(int position)
{ for (int j = 0; j < ; j++)
s_counter[position] = s_counter[position] + 3;
程序四是为测试Cache的一致性而设计的,当CacheLine里面的某一个元素被修改了,那么对应内存地址的整行cache-line就会失效。
对于多核而言,其他的core里面的数据也会失效。这样会降低cache的失效率。作者测试参数为0,1,2,3为参数的时候,运行四个不同的线程进行测试,发现花费了4.3s。如果参数为16,32,48,测试的结果为0.28s。
因为后面的测试,这些数据都不是在同一个cache line里面的,所以不会造成cache miss而导致的多个核心之间会相互影响。
阅读(212) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。&>&&>&&>&&>&C语言写的测试本机cache大小的程序
C语言写的测试本机cache大小的程序
上传大小:9KB
用C语言实现简单的测试单击cache的小程序;
利用大循环 读写cache 运行时间较长。
综合评分:4(34位用户评分)
所需积分:2
下载次数:185
审核通过送C币
创建者:hanlizhong85
创建者:chengdong1314
创建者:weixin_
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
C语言写的测试本机cache大小的程序
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
kevinchan4007
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:高频率的胜利 Xeon E5450处理器测试
IT168网站原创
 作者: IT168评测中心 Lucifer 编辑:
  ScienceMark v2.0 Membench  ScienceMark v2.0是一款用于测试系统特别是处理器在科学计算应用中的性能的软件,MemBenchmark是其中针对处理器缓存、系统内存而设计的功能模块,它可以测试系统内存带宽、L1 Cache延迟、L2 Cache延迟和系统内存延迟,另外还可以测试不同指令集的性能差异。  SiSoftware Sandra Pro Home 2008  SiSoftware Sandra是一款可运行在32bit和64bit Windows操作系统上的分析软件,这款软件可以对于系统进行方便、快捷的基准测试,还可以用于查看系统的软件、硬件等信息。从Sandra 2007开始支持SSE4指令集。SiSoftware Sandra所有的基准测试都针对SMP和SMT进行了优化,最高可支持32/64路平台,这也是我们选择这款软件的原因之一。  NetBench v7.03  NetBench是针对文件服务器的性能测试软件,影响NetBench性能的主要是服务器的磁盘子系统,服务器磁盘控制器、条带大小、读写缓存、硬盘类型、组建磁盘阵列模式、内存容量、网络拓朴结构等都会对测试结果有明显的影响。我们在被测服务器上设立了文件服务器,NetBench通过网络实验室中60个客户端来模拟网络中的PC向文件服务器所发出的文件传输请求,文件服务器则将存储在磁盘上的文件数据发送给相应的客户端。在测试过程中,客户端会以每四台一组的步进依次增加并且向服务器发送文件传输请求,测试结束后控制台收集数据并绘制出服务器的数据传输变化曲线。  WebBench v5.0  WebBench是针对服务器作为Web Server时的性能进行测试,我们在被测服务器上安装了IIS6.0组件,以提供测试所需的Web服务。在测试中我们开启了网络实验室中的56台客户端,分别使用了WebBench 5.0内置的动态CGI以及静态页面脚本对服务器进行了测试。  静态测试是由客户端读取预先放置在服务器Web Server下的Web页面(wbtree),这项测试主要考察的是服务器磁盘系统以及网络连接性能。我们使用了实验室中的56台客户端,配合Static_mt.tst多线程静态脚本测试向被测服务器发送请求。  动态测试偏重于对服务器CPU子系统的性能测试,它对于Web服务器提供了足够的负载。我们将一个C语言编写的CGI源文件Simcigi.c编译为Simcgi.exe,并将其作为动态测试中的CGI脚本。在测试过程中,每台安装了WebBench客户端软件的PC,会在300秒的时间内持续向服务器发送CGI请求,而控制台会纪录并汇总服务器所响应CGI请求的数据。CGI测试的成绩高低,主要取决于服务器处理器子系统性能的优劣。处理器子系统包括CPU、内存以及内存控制器,CPU频率、缓存以及内存容量大小和内存带宽,都会影响该项成绩。  Benchmark Factory 4.6  大部分的服务器应用都同数据库有着密切的联系,它是一个相当重要的测试。我们选择了Benchmark Factory 4.6软件和Microsoft SQL2005来测试不同的硬件平台在数据库应用中的表现。  我们选择了BF内置的标准测试脚本AS3AP,这项测试可用于对于ANSI结构化查询语言(SQL)关系型数据库进行测试,它可用于测试DBMS(单用户微机数据库管理系统),也可用于测试高性能并行或者分布式数据库。  系统功耗监测  我们使用UNI-T UT71E智能数字万用表对于被测服务器系统的整体功耗进行了监测,利用随机附带的接口程序,我们可以记录被测服务器任意时间段内的功率变化。
第1页:第2页:第3页:第4页:第5页:第6页:
第7页:第8页:第9页:第10页:第11页:
CPU频率:3GHz
CPU核心:四核心
接口类型:Socket 771
制程工艺:45
二级缓存:12MB
大学生分期购物销量榜
已有条评论
CPU频率:3GHz
CPU核心:四核心
接口类型:Socket 771
制程工艺:45
二级缓存:12MB
核心类型:Harpertown(四核心)
IT168企业级

我要回帖

更多关于 艾酷 的文章

 

随机推荐