Archive for the ‘C/C++’ category

存储器层次结构(读书笔记)

December 10th, 2013

最近在看存储器层次结构,之前知道各级存储器为了弥补速度上的巨大差距,开发出了cache来提高命中率,加快取指运算的速度。

这对我们编写代码来说有非常重要的影响,因为许多程序具有局部性,包括时间局部性与空间局部性。

在现在CPU中,往往具有多级cache L1 L2 L3 ,在i7处理器中,L1 的数据cache 指令cache为每个核私有,L2 cache连接L1上面的两个cache,L3为所有核共享。

cache与主存连接的方式有多种:直接映射高速缓存,组相连映射高速缓存。 » Read more: 存储器层次结构(读书笔记)

CPU指令并行化(读书笔记)

December 4th, 2013

SIMD俗称单指令流,多数据流,就是同一条指令被多个数据流的多处理器执行。SIMD通过将相同的操作以并行的方式应用在数据的各个项来实现数据级的并行。我们在选购处理器的时候,经常会关注指令集。我们以SSE为例,SSE俗称Streaming SIMD Extensions 的缩写,思想就是每个16字节的XMM寄存器可以存放多个值。可以存放4个int和float 或者两个double  。SSE指令可以使用这些xmm寄存器执行向量操作。 » Read more: CPU指令并行化(读书笔记)

GPROF 使用

November 29th, 2013

项目地址:http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html

gprof是一个 可以通过运行程序,确定程序函数的执行时间。

这个程序依赖gcc -g -pg ,通过这个可以获取丰富的调试信息,供我们以后代码优化使用。
» Read more: GPROF 使用

优化程序性能(读书笔记)

November 28th, 2013

1.gcc -o1
gcc -o2 使程序全面优化

» Read more: 优化程序性能(读书笔记)

编写Share Object Library

November 22nd, 2013

最近要编写供自己使用的library,library是以.so结尾的文件。类似于windows下面的dll文件。
在编写so文件之前,我们要先熟悉ldd命令与ldconfig命令
在上一篇博客中我写道ld主要是为了从library中寻找特定的库函数并加载到ld.so.cache与GOT表中,ldconfig在/sbin/下。
ldconfig为在命令行中说明的目录或文件/etc/ld.so.config中指定的目录或一些可信任的目录 (象/usr/lib, /lib)中的最新的动态连接库创建必要的连接和绶存。这些绶存起来的数据会被动态连接器ld.so 或 ld-linux.so所使用。ldconfig会检查它所遇到的动态库文件的名称与版本号,以决定那些动态库的连接要进行更新。
» Read more: 编写Share Object Library