文档章节

SSE特殊指令集系列之二

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:46
字数 295
阅读 6
收藏 0

本文要谈的是这样一条指令:

PSADBW

这条指令是SSE1引入的用于视频编码绝对差值求和的指令。

在视频编码中的运动估计模块,一种常见的SAD代码如下:

1 // Get the SAD 16x16 macro block with full pixel
2  for (y = 0; y < 16; y++)
3    for(x = 0; x < 16; x++)
4     sad += abs(current[y][x] - reference[y][x])

对于这段代码,我们首先来用MMX指令做优化。

1. SAD的MMX优化

我们使用带饱和运算的PSUBUSB指令来实现求ABS (B - A)的功能。具体原理描述如下:

 

计算完ABS之后还需要把字节型数据扩展为字型数据,这样,以方便累加不会溢出。较为完整的代码如下:

 

2. SAD的SSE优化

    直接使用PSADBW指令,非常简洁。

   2.1 SSE optmization version 1

       

 2.2 SSE optmization version 2

    

2.3  2.1 SSE optmization version 3

     

 

 

     注意:SSE第一个版本使用的是MMX寄存器,而第二个版本和第三版本使用的是128位的XMM寄存器。

     而SSE的第三个版本使用的非对齐的数据加载指令 MOVDQU指令。

 

 

 

 

 

 

 

本文转载自:http://www.cnblogs.com/celerychen/archive/2013/04/01/2992950.html

共有 人打赏支持
abcijkxyz
粉丝 60
博文 6196
码字总数 1876
作品 0
深圳
项目经理
AMD发布Stream SDK v2.0 Beta开发工具

AMD最近发布了ATI Stream SDK v2.0开发工具包的最新Beta版本Stream SDK v2.0 Beta,这个版本将全面兼容OpenCL1.0编程接口界面,更令人欣喜的是,需要的用户可以自由免费地下载该开发工具包,...

红薯
2009/10/14
2.4K
0
Intel 45nm制程处理器上的SSE4指令集简介

Intel 45nm制程处理器上的SSE4指令集简介 Intel的SSE(Streaming SIMD Extensions, 流式单指令多数据扩展)技术有效增强了CPU的向量运算能力。支持该指令集的处理器有8个128位xmm寄存器,每一...

日久不生情
2017/11/07
0
0
(学习心得):进程,线程,超线程,并发,并行 等概念

前言: 此陋文来自最近对阅读《深入理解计算机系统》与《微型计算机体系结构:Intel Core Duo / i 系列微处理器技术应用》两本书的学习体会, 前者从 程序员的视角来探讨计算机系统中各部件的...

shayi
2012/11/26
5.5K
28
Flat Assembler 1.70 发布,汇编工具

Flat Assembler 是一个快速高效的80x86的汇编工具,支持DOS、Windows、Linux操作系统,支持包括 8086-80486/Pentium instructions with MMX, SSE, SSE2, SSE3, and 3DNow! extensions and x......

红薯
2012/04/19
1K
10
cpu指令集包括哪些?

如题!我知道有mmx,sse等等.可是mmx指令集是在96年才有的, 而之前386,486,586等那些呢,包含哪些指令,相关资料在哪下载? 是不是sse1包含mmx,,,,,,,sse2包含sse1,,,,,,,sse3包含sse2 我知道去英...

音乐&编程
2012/09/14
2.1K
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring 容器实现对bean的管理(注解方式解析,源码阅读)

因为最近在研究学习spring boot,所以这里想详细学习回顾了一下spring 容器对bean的一些管理方式和部分源码学习。 首先初始类AnnotationConfigApplicationContext,简单源码查看,支持两个参...

小海bug
14分钟前
0
0
数据结构:二分查找 java

二分查找的前提是有序存储,利用顺序存储和元素排序 /** * 二分查找,查找成功,返回下标记 * @param values * @param begin * @param end * @param key * @param <T> * @ret...

京一
31分钟前
0
0
@SpringBootApplication 注解

@SpringBootApplication注解是一个组合注解,包含以下注解 @Target(ElementType.TYPE) 注解的作用目标 @Retention(RetentionPolicy.RUNTIME) Reteniton的作用是定义被它所注解的注解保留多久,...

java.刘
44分钟前
0
0
sentinel自定义DataSource实战

序 本文主要研究一下如何自定义sentinel的DataSource,这里以jdbc为例。 maven <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sen......

go4it
今天
1
0
xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?

问题: 用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了。但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高。用RandomForest所需要的树的深度和Decisio...

tantexian
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部