计算机底层
tercel_zhang
酷爱编程,喜爱交友
展开
-
关于CPU Cache——程序猿需要知道的那些事
先来看一张本文所有概念的一个思维导图 为什么要有CPU Cache 随着工艺的提升最近几十年CPU的频率不断提升,而受制于制造工艺和成本限制,目前计算机的内存主要是DRAM并且在访问速度上没有质的突破。因此,CPU的处理速度和内存的访问速度差距越来越大,甚至可以达到上万倍。这种情况下传统的CPU通过FSB直连内存的方式显然就会因为内存访问的等待,导致计算资源大量闲置,降转载 2016-08-18 21:27:53 · 1486 阅读 · 0 评论 -
深入理解Cache
存储器是分层次的,离CPU越近的存储器,速度越快,每字节的成本越高,同时容量也因此越小。寄存器速度最快,离CPU最近,成本最高,所以个数容量有限,其次是高速缓存(缓存也是分级,有L1,L2等缓存),再次是主存(普通内存),再次是本地磁盘。 寄存器的速度最快,可以在一个时钟周期内访问,其次是高速缓存,可以在几个时钟周期内访问,普通内存可以在几十个或几...转载 2018-07-13 14:53:14 · 10851 阅读 · 1 评论 -
SIMD指令初学
参考自:http://blog.csdn.net/gengshenghong/article/details/7008704(。。。。)SIMD即 single instruction multiple data,单指令流多数据流,也就是说一次运算指令可以执行多个数据流,这样在很多时候可以提高程序的运算速度。SIMD是CPU实现DLP(Data Level Parallelism)的关键,DLP就...转载 2018-06-14 16:22:28 · 12067 阅读 · 0 评论 -
SSE2介绍及其简单用法举例
SSE2,全名为Streaming SIMD Extensions 2,是一种IA-32架构的SIMD指令集。SSE2是在2001年随着Intel发表第一代Pentium 4处理器也一并推出的指令集。它延伸较早的SSE指令集,而且可以完全取代MMX指令集。在2004年,Intel再度扩展了SSE2指令为SSE3指令集。与70条指令的SSE相比,SSE2 新增了144条指令。在2003年,AMD也在...转载 2018-04-19 13:42:48 · 2628 阅读 · 0 评论 -
常用SSE指令集介绍
SIMD相关头文件包括:[cpp] view plain copy//#include <ivec.h>//MMX //#include <fvec.h>//SSE(also include ivec.h) //#include <dvec.h>//SSE2(also include fvec.h) #include <mmintrin.h&...转载 2018-04-19 13:37:41 · 2789 阅读 · 0 评论 -
SSE2指令--使用SSE2的整型内存操作和初始化:加载(Load)
所有的SSE2指令的声明都在emmintrin.h头文件中可以找得到。 1. __m128i _mm_load_si128 (__m128i *p); 指令名:__m128i _mm_load_si128 (__m128i *p); 说明:加载128bits值; 返回值:返回可以存放在代表寄存器的变量中的值; 注意:p必须是一个16-bit对齐的一个变量的地址; ...转载 2018-04-19 13:32:36 · 3712 阅读 · 0 评论 -
在C/C++代码中使用SSE等指令集的指令(2)参考手册
http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/compiler_c/index.htm#intref_cls/common/intref_bk_sse.htmhttp://www.tommesani.com/Docs.htmlIntel架构开发人员手册:里面有很多和架构、指令集、优...转载 2018-04-19 11:47:48 · 672 阅读 · 0 评论 -
指令集简介
指令集或指令集体系:是计算机体系结构中与程序设计有关的部分,包含了基本数据类型、指令集、寄存器、寻址模式、中断、异常处理以及外部的I/O。指令集架构包含一系列的opcode即操作码(机器语言),以及由特定处理器执行的基本命令。 指令集的分类:(1)、复杂指令集计算机包含许多应用程序中很少使用的特定指令;(2)、精简指令集计算机通过只执行在程序中经常使用的指令来简化处理器的结构...转载 2018-04-23 15:57:42 · 4446 阅读 · 0 评论 -
SSE2的一些常用指令集介绍
开门见山,前段时间学习OpenCV的FAST算法,中间有很多SSE2的指令集,深受其惑。下面我把学习过程中学到的一些指令集介绍给大家,希望能对大家有所帮助!__m128i被称为128bits的整数,对其进行赋值时,可以调用__m128i_mm_set1_epi8或者__m128i_mm_set1_epi816等,前者就是把128bits设置为16个8bits的整数值,后一个例子就是把128bits...转载 2018-04-23 14:32:55 · 1693 阅读 · 0 评论 -
SSE指令集入门
Intel公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强CPU浮点运算的能力。Visual Studio .NET 2003提供了对SSE指令集的编程支持,从而允许用户在C++代码中不用编写汇编代码就可直接使用SSE指令的功能。MSDN中有关SSE技术的主题[1]有可能会使不熟悉使用SSE汇编指令编程的初学者感到困惑,但是在阅读MSDN有关...转载 2018-04-23 13:24:35 · 10596 阅读 · 1 评论 -
谈谈关于内存对齐与补齐
首先我们先看看下面的C语言的结构体:[cpp] view plain copy typedef struct MemAlign { int a; char b[3]; int c; }MemAlign; 以上这个结构体占用内存多少空间呢?也许你会说,这个简单,计算每个转载 2016-08-23 14:26:09 · 1679 阅读 · 0 评论 -
7个示例科普CPU Cache line
CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门。正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文《漫游处理器缓存效应》,文章不仅仅用7个最简单的源码示例就将CPU cache的原理娓娓道来,还附加图表量化分析做数学上的佐证,个人感觉这种案例教学的切入方式绝对是俺的菜转载 2016-08-22 20:41:55 · 651 阅读 · 0 评论 -
时间复杂度和空间复杂度详解
算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频转载 2016-08-19 11:16:05 · 655 阅读 · 0 评论 -
关于CPU Cache -- 程序猿需要知道的那些事
本文将介绍一些作为程序猿或者IT从业者应该知道的CPU Cache相关的知识文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) 本文原文地址:http://cenalulu.github.io/linux/all-about-cpu-cache/先来看一张本文所有概念的一个思维导图为什么要有CPU Cache随着工艺的提升最近几十年CPU的频率不断提升,而受制...转载 2018-07-13 17:40:00 · 382 阅读 · 0 评论