Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1371305
  • 博文数量: 140
  • 博客积分: 8518
  • 博客等级: 中将
  • 技术积分: 1822
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-01 22:23
个人简介

嘿嘿!

文章分类
文章存档

2016年(2)

2015年(5)

2014年(6)

2013年(11)

2012年(11)

2011年(3)

2010年(4)

2009年(4)

2008年(8)

2007年(23)

2006年(26)

2005年(37)

分类: LINUX

2015-11-28 10:49:06

最近研究Intel Media  SDK 视频解码20个1080p cpu 4% 之后就不能添加了。修改添加join 和修改深度和栈 也只能增加几路。于是就想到编译64 位ffmpeg 实现软硬解码器。编译时发现 32位一路1080p 6% cpu  64 位 10% 的cpu  多option 选项一个个添加对比发现还是有很多提升的固留下笔记共大家研究学习。


./configure --prefix=/home/h264 --enable-gpl --disable-static --enable-shared --enable-memalign-hack --enable-small --disable-swscale-alpha --disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-avdevice --disable-avfilter --disable-network --enable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-everything --enable-decoder=h264 --enable-asm --enable-mmx --enable-mmxext --enable-sse --enable-sse2 --enable-sse3 --enable-ssse3 --enable-sse4 --enable-sse42 --enable-avx --enable-avx2 --enable-inline-asm --enable-yasm --enable-hwaccel=h264_dxva2 --disable-iconv --disable-debug --enable-fma3 --enable-fma4  添加xop amd3dnow amd3dext 效率反而降低

optimizations:

  --disable-asm            disable all assembler optimizations    禁用所有汇编优化
  --disable-altivec        disable AltiVec optimizations                  禁用的AltiVec优化

AltiVec技术支持高带宽的数据处理和计算增强算法,如在和无线基站中的单芯片解决方案一样。这种方法允许开发人员在市场和客户要求变化时平衡现有的PowerPC代码和增加的AltiVec性能


  --disable-amd3dnow       disable 3DNow! optimizations      禁用的3DNow!优化

AMD开发的一套SIMD,支持单精度浮点数的矢量运算,用于增强x86架构的计算机在三维图像处理上的性能。
  --disable-amd3dnowext    disable 3DNow! extended optimizations  禁用的3DNow!扩展优化


  --disable-mmx            disable MMX optimizations   禁用mmx优化
  --disable-mmxext         disable MMXEXT optimizations  禁用mmxext优化
  --disable-sse            disable SSE optimizations  禁用sse优化
  --disable-sse2           disable SSE2 optimizations  禁用sse2优化
  --disable-sse3           disable SSE3 optimizations   禁用sse3优化
  --disable-ssse3          disable SSSE3 optimizations  禁用ssse3优化
  --disable-sse4           disable SSE4 optimizations    禁用sse4优化
  --disable-sse42          disable SSE4.2 optimizations  禁用sse42优化
  --disable-avx            disable AVX optimizations            禁用avx优化
  --disable-xop            disable XOP optimizations          禁用xop优化

 XOP 是 AMD 全新推出新一代基于 SSE5 的 SIMD 指令集
  --disable-fma3           disable FMA3 optimizations     禁用fma3优化
  --disable-fma4           disable FMA4 optimizations    禁用fma4优化

FMA4指令集:FMA指令是AVX指令集的一个分支,因此FMA指令使用的是与AVX指令同样的编码设计规则。事实上,的FMA指令集也吸取了AMD提出的SSE5指令集的精髓,FMA指令的fused-multiply-add(融合乘加)与SSE5中的multiply-add/subtract运算如出一辙。当前FMA指令已分为2个版本,其中FMA4是AMD制定的版本。
  --disable-avx2           disable AVX2 optimizations      禁用avx2优化
  --disable-armv5te        disable armv5te optimizations 禁用arm5te优化
  --disable-armv6          disable armv6 optimizations  禁用arm6te优化
  --disable-armv6t2        disable armv6t2 optimizations 禁用arm6te2优化

 v5里的v是version,即arm第五版指令集。  te是thumb enhance,支持16-bit的Thumb指令。

  --disable-vfp            disable VFP optimizations   禁用vfp优化

arm VFP除了提供浮点数基本运算(加、减、乘、除、开方、比较、取反)提供支持之外,

最有特点是它向量(vectors)功能。它同时支持最多8组单精度4组双精度浮点数的运算
  --disable-neon           disable NEON optimizations 禁用none优化

ARM? NEON? 通用  引擎可有效处理当前和将来的多媒体格式,从而改善用户体验。

NEON 技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D 图形、游戏、音频和语音处理、图像处理技术、电话和声音合成),其性能至少为 ARMv5 性能的 3 倍,为  SIMD 性能的 2 倍。

通过干净方式构建的 NEON 技术可无缝用于其本身的独立管道和寄存器文件。

NEON 技术是 ARM 处理器的 128 位 SIMD(单指令,多数据)架构扩展,旨在为消费性多媒体应用程序提供灵活、强大的加速功能,从而显著改善用户体验。它具有 32 个寄存器,64 位宽(双倍视图为 16 个寄存器,128 位宽。)

NEON 指令可执行“打包的 SIMD”处理:

  • 寄存器被视为同一数据类型元素矢量
  • 数据类型可为:签名/未签名的 8 位、16 位、32 位、64 位单精度
  • 指令在所有通道中执行同一操作

用于演示 NEON 打包的 SIMD 处理的图表

使用 NEON 技术的 ARM 处理器,以及 ARM 的 解决方案可用于,范围从和设备到 。


  --disable-vis            disable VIS optimizations   禁用vis优化

Visual Instruction Set, or VIS,是一个用于处理器的。VIS在所有的以及较新的处理器上都有实现
  --disable-inline-asm     disable use of inline assembler 禁用内嵌汇编优化
  --disable-yasm           disable use of yasm assembler  禁用汇编优化
  --disable-mips32r2       disable MIPS32R2 optimizations 禁用MIPS32R2优化
  --disable-mipsdspr1      disable MIPS DSP ASE R1 optimizations禁用MIPS DSP ASE R1优化
  --disable-mipsdspr2      disable MIPS DSP ASE R2 optimizations禁用MIPS DSP ASE R2优化
  --disable-mipsfpu        disable floating point MIPS optimizations禁用浮点MIPS优化

MIPS是世界上很流行的一种RISC处理器。MIPS的意思是“无内部互锁流水级的”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领 导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算 机系统。
       MIPS技术公司是美国著名的芯片设计公司,它采用精简计 算结构(RISC)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进 的技术,开发更快的下一代处理器。MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。
       MIPS CPU指令长度为32比特,按功能可以分为以下五类:加载和存储指令,算术指令,跳转和分支指令,杂类指令和协处理器指令。下面开始对MIPS常见的汇编指令进行讲解。
       1. 加载和存储指令
     

数据类型

CPU

协处理器12

加载无符号数

加载有符号数

存储

加载

存储

字节

MIPS32

MIPS32

MIPS32

 

 

半字

MIPS32

MIPS32

MIPS32

 

 

MIPS32

MIPS32

MIPS32

MIPS32

MIPS32

双字(FPU)

 

 

 

MIPS32

MIPS32

未对齐字

MIPS32

 

MIPS32

 

 

关联字(原子修改)

MIPS32

 

MIPS32

 

 

具体的见下表:

助记符

指令格式

指令功能

实例

LB

LB rt , offset (base)

加载字节

LB a0, 4 (a1)

LBU

LBU rt , offset (base)

加载无符号字节

LBU t0 , 7 (t3)

SB

SB rt , offset (base)

存储字节

SB a0 , 3 (a3)

LH

LH rt , offset (base)

加载半字

LH s2 , 5 (s5)

LHU

LHU rt , offset (base)

加载无符号半字

LHU t0 , 6 (t3)

SH

SH rt , offset (base)

存储半字

SH s4, 18 (s1)

LW

LW rt , offset (base)

加载字

LW v0 ,6 (a1)

SW

SW rt , offset (base)

存储字

SW s6 , 1 (t3)

LWL*

LWL rt , offset (base)

加载字头

LWL a1 , 3 (t0)

LWR*

LWR rt , offset (base)

加载字尾

LWR s2 , 5(a2)

SWL*

SWL rt , offset (base)

存储字头

SWL s5 , 3 (t4)

SWR*

SWR rt , offset (base)

存储字尾

SWR a3 , 8 (a0)

LL*

LL rt , offset (base)

加载关联

LL t1 , 0 (t0)

SC*

SC rt , offset (base)

条件存储

SC t2, 0 (t0)

MIPS加载和存储指令的命名规则如下:

1)        首字母L表示加载(Load),S表示存储(Store

2)        首字母U表示无符号(Unsigned),其余默认为有符号(Signed

3)        尾字母R表示右(Right),L表示左(Left

4)        字母B示字节(Byte),H表示半字(Halfword),W表示字(Word

--(待续:由于时间关系先就写到这里,晚上接着写)


从 现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3和3DNow fma!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。我们通常会把CPU的扩展指令集称为CPU的指 令集。


阅读(9933) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~