CPU二则

aligned load & unaligned load

看CPU指令手册的时候,会看到有两条指令:vmovups & vmovaps,这两条指令都是为了mov packed single point data between memory/AVX register。不一样的地方是就一个是u,一个是a。u的意思是unaligned,a的意思是aligned。这里的aligned的意思是什么呢? 经过查阅,发现它是指内存地址与AVX register的长度align(如AVX-2的话就是32 byte align, AVX-512的话就是64 byte align etc.)。那这两条指令的 performance有什么区别呢?答案是:自Nehalem以后,没有什么区别了。Intel对两条指令进行了优化,消除了vmovups的性能penalty。可以看下手册里两条指令的latency和throughput加深一下印象(8是latency,0.5是reciprocal throughput)。结论就是在任何场合可以直接使用vmovups就OK了。

non-temporal store(streaming store)

vmovntps中的”nt”指的是non-temporal,意思就是说告诉CPU,我现在写的这个数据不遵守时间局部性,写完后不会读它,所以就不要遵循原来“读进cache(Read For Ownership)->写cache->写memory”的规则了,直接写memory就行了,免得污染cache,反而把那些需要用cache的程序的数据驱逐出去。这种方式也叫write around,即绕过cache写内存。如果cache policy是write through的话,如果遇到大块的写操作,write around肯定是比write through好的。但现在Xeon的cache policy是write back,这个有没有好处就需要实验来确定了。

参考文献

  1. Nehalem - Everything You Need to Know about Intel’s New Architecture
  2. SKX Instruction Set Latency and Throughput Manual
  3. A case for the non-temporal store

CPU二则的更多相关文章

  1. 闰秒导致MySQL服务器的CPU sys过高

    今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...

  2. 继电器是如何成为CPU的(1)

    继电器是如何成为CPU的(1) ——<穿越计算机的迷雾>整理和总结 究竟是如何设计的电路,具有计算和控制的智力? 这一点也不高深.本系列文章从初中学的最简单的电路图说起,看看能不能从最初的 ...

  3. Linux上如何查看物理CPU个数,核数,线程数

    首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...

  4. 一个表缺失索引发的CPU资源瓶颈案例

    背景 近几日,公司的应用团队反应业务系统突然变慢了,之前是一直比较正常.后与业务部门沟通了解详情,得知最近生意比较好,同时也在做大的促销活动,使得业务数据处理的量出现较大的增长,最终系统在处理时出现瓶 ...

  5. [原] KVM 虚拟化原理探究(3)— CPU 虚拟化

    KVM 虚拟化原理探究(3)- CPU 虚拟化 标签(空格分隔): KVM [TOC] CPU 虚拟化简介 上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要 ...

  6. [原] Cgroup CPU, Blkio 测试

    关于Cgroup的简单测试 [toc] 简单介绍Cgroup (如果对cgroup熟悉可以忽略) 一般情况下,cgroup挂载到一个虚拟文件目录,然后可以通过文件系统的API对其操作. ># m ...

  7. %iowait和CPU使用率的正确认知

    resources 理解 %IOWAIT (%WIO) LINUX系统的CPU使用率和LOAD Linux Performance Observability Tools How Linux CPU ...

  8. Linux下高cpu解决方案

    昨天搞定了一个十万火急的issue,客户抱怨产品升级后系统会变慢和CPU使用率相当高,客户脾气很大,声称不尽快解决这个问题就退货,弄得我们 R&D压力很大,解决这个issue的任务分给了我,客 ...

  9. 《CPU的工作过程》

    本文转载自inter官方网址:https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_proces ...

随机推荐

  1. DDS生成正弦波

    DDS生成正弦波 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////// ...

  2. promise 基础知识

    promise 基础知识 proise:1.Promise是异步编程的一种解决方案,它有三种状态,分别是pending-进行中.resolved-已完成.rejected-已失败2.创建实例//met ...

  3. 用crontab部署定时任务

    1.(centos)安装crontab服务 yum install crontabs 2.启动.停止.重启.重载服务 /sbin/service crond start /sbin/service c ...

  4. FASTMM内存泄漏处理

    https://blog.csdn.net/akof1314/article/details/6524767

  5. Kong(V1.0.2)Network & Firewall

    介绍 在本节中,您将找到关于Kong推荐的网络和防火墙设置的摘要.PortsKong使用多个连接用于不同的目的. 代理 管理api Proxy 代理端口是Kong接收传入流量的地方.有两个端口具有以下 ...

  6. ubuntu 装机步骤表

    步骤 1. root 步骤 apt-get update ; apt-get upgrate apt-get install git zsh apt-get install -y make build ...

  7. Windows系统配置

    1.常用设置 (1)设置虚拟内存 右击:计算机-属性-高级系统设置-高级选项卡-性能组框设置按钮-高级选项卡-虚拟内存组框更改按钮-按需求设置 (2)设置休眠文件 改变休眠文件大小:powercfg ...

  8. Ajax2简单的使用方式

    http://www.cnblogs.com/Ming8006/p/6142191.html

  9. winserver2012 下安装 sqlserver2008

    sqlserver2008 安装要求 winserver2012 必须装 .netframework3.5. 但是 winserver2012下,安装 .netframework3.5 ,必须要 wi ...

  10. c里面的static inline函数

    一般来说加上static表示函数是文件作用域,有的时候单独使用inline编译器会优化,没有编译成内联函数,而是变成普通函数编译,所以必须在前面加上static,放在头文件中可以被外部文件访问.   ...