What's the meaning of the saturation arithmetic

完全看懂?ARM?处理器:RISC与CISC?是什么 你知道iOS、Windows Phone、Android这3大平台的手机共通点是什么吗?除了都可以打电话、传简讯、安装App之外,在硬件架构上最大的共同点,就是这些手机CPU全都是采用ARM架构。现在连Microsoft都相中这块逐渐成长中的市场大饼,下一代的微软视窗作业系统Windows 8也将会推出ARM版本,称为Windows RT。究竟ARM与行动装置的关系是什么?又如何在这竞争激烈的市场中存活下去,逐渐壮大在嵌入式产品的影响力?看下去就知道。 阅读详情
saturation arithmetic

Saturation arithmetic is a version of arithmetic in which all operations such as addition and multiplication are limited to a fixed range between a minimum and maximum value. If the result of an operation is greater than the maximum it is set ("clamped") to the maximum, while if it is below the minimum it is clamped to the minimum. The name comes from how the value becomes "saturated" once it reaches the extreme values; further additions to a maximum or subtractions from a minimum will not change the result.

For example, if the valid range of values is from -100 to 100, the following operations produce the following values:

  • 60 + 43 = 100
  • (60 + 43) - 150 = -50
  • 43 - 150 = -100
  • 60 + (43 - 150) = -40
  • 10 × 11 = 100
  • 99 × 99 = 100
  • 30 × (5 - 1) = 100
  • 30×5 - 30×1 = 70

As can be seen from these examples, familiar properties like associativity and distributivity fail in saturation arithmetic. This makes it unpleasant to deal with in abstract mathematics, but it has an important role to play in digital hardware and algorithms.

Typically, early computer microprocessors did not implement integer arithmetic operations using saturation arithmetic; instead, they used the easier-to-implement modular arithmetic, in which values exceeding the maximum value "wrap around" to the minimum value, like the hours on a clock passing from 12 to 1. In hardware, modular arithmetic with a minimum of zero and a maximum of 2n can be implemented by simply discarding all but the lowest n bits.

However, although more difficult to implement, saturation arithmetic has numerous practical advantages. The result is as numerically close to the true answer as possible; it's considerably less surprising to get an answer of 127 instead of 130 than to get an answer of -126 instead of 130. It also enables overflow of additions and multiplications to be detected consistently without an overflow bit or excessive computation by simple comparison with the maximum or minimum value (provided the datum is not permitted to take on these values).

Additionally, saturation arithmetic enables efficient algorithms for many problems, particularly in signal processing. For example, adjusting the volume level of a sound signal can result in overflow, and saturation causes significantly less distortion to the sound than wrap-around. In the words of researchers G. A. Constantinides et al:

When adding two numbers using two’s complement representation, overflow results in a ‘wrap-around’ phenomenon. The result can be a catastrophic loss in signal-to-noise ratio in a DSP system. Signals in DSP designs are therefore usually either scaled appropriately to avoid overflow for all but the most extreme input vectors, or produced using saturation arithmetic components. [1]

Saturation arithmetic operations are available on many modern platforms, and in particular was one of the extensions made by the Intel MMX platform, specifically for such signal processing applications.

Saturation arithmetic for integers has also implemented in software for a number of programming languages including C, [[C++]], Eiffel, and most notably Ada, which has built-in support for saturation arithmetic. This helps programmers anticipate and understand the effects of overflow better. On the other hand, saturation is challenging to implement efficiently in software on a machine with only modular arithmetic operations, since simple implementations require branches that create huge pipeline delays.

Although saturation arithmetic is less popular for integer arithmetic in hardware, the IEEE floating-point standard, the most popular abstraction for dealing with approximate real numbers, uses a form of saturation in which overflow is converted into "infinity" or "negative infinity", and any other operation on this result continues to produce the same value. This has the advantage over simple saturation that later operations which decrease the value will not end up producing a "reasonable" result, such as in the computation /sqrt{x^2-y^2}. 

ImageNet Classification with Deep Convolutional Neural Network 论文笔记与复现(AlexNet Colab+Keras TB可视化)) 本文用于记录阅读论文ImageNet Classification with Deep Convolutional Neural Networks中总结有价值的点。 文章目录0 Abstract1 Introduction2 The Dataset3 The Architecture3.1 ReLU Nonlinearity3.2 Training on Multiple GPUs 0 Abstr... 阅读详情

相关推荐

多媒体指令的详细说明

近期很荣幸为公司做了一次关于多媒体指令的培训,现把主要的培训内容写出来。 基于MMX指令集的程序设计MMX技术简介为了满足多媒体技术(包括图形图像,声频,动画,视频等)对大量数据快速处理的需要,intel公司在其第5代intel80x86微处理器奔腾中,加入了多媒体扩展指令,数据流SIMD扩展SSE指令和SSE2指令。Intel 公司的MMX(多媒体增强指令集)技术可以大大提高应用程序对二

wguizhou的专栏 1367

一、MMX技术简介

一、MMX技术简介  Intel 公司的MMX(多媒体增强指令集)技术可以大大提高应用程序对二维三维图形和图象的处理能力。Intel MMX技术可用于对大量数据和复杂数组进行的复杂处理,使用MMX技术可处理的数据基本单位可以是字节(byte)、字(word),或者是双字(double-word)。  Visual Studio .NET 2003提供了对MMX指令集特性的支持,从而可以不必

微尘的专栏 3547

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?

SIMD——MMX指令的溢出处理

MMX中的Saturation 和 WrapAround规定 1定义 2MMX处理方式 3示例MMX中的Saturation 和 WrapAround规定本文主要为Intel 64 and IA-32 Architectures Software Developer’s Manual中9.3节关于MMX对整数饱和运算(Saturation)以及截至运算( WrapAround)的理解1定义 Satu

yangjianqiao0的专栏 1541

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

别再傻傻分不清了!用Design Compiler和PrimeTime实操对比PBA与GBA模式

本文深度解析静态时序分析(STA)中Design Compiler与PrimeTime工具的PBA与GBA模式差异,通过实际案例演示两种模式在转换时间计算、时钟路径分析等方面的对比,并提供工程实践中模式选择的策略与调试技巧,帮助工程师在芯片设计流程中平衡精度与效率。

weixin_42552315的博客 415

ARM(四) ARM指令集(下)

导读: 一共分为三部分: 第一部分:任务调度 第二部分:任务切换 Branch instructionA branch instruction changes the flow of execution or is used to call a routine. This instruction allows programs to have subroutines 讲解

feather(猎羽) 2793

IDEA中Maven工具栏与命令执行全攻略:高效开发必备技巧

IntelliJ IDEA 作为强大的 Java 开发工具,其 Maven 功能独具优势。Maven 工具栏位于工作区右侧,图标功能丰富,涵盖项目导入、源码处理、依赖操作等。执行 Maven 命令有多种途径,Run Anything 窗口可输入或选目标执行,上下文菜单能右键运行目标,还可创建运行配置,指定命令参数后运行,为开发者高效管理 Maven 项目、便捷执行命令提供有力支持。

2301_82300081的博客 2032

基于MMX指令集的程序设计简介

基于MMX指令集的程序设计简介作者:Alex Farber出处:http://www.codeproject.com/cpp/mmxintro.aspMMX技术简介 Intel 公司的MMX™(多媒体增强指令集)技术可以大大提高应用程序对二维三维图形和图象的处理能力。Intel MMX技术可用于对大量数据和复杂数组进行的复杂处理,使用MMX技术可处理的数据基本单位可以是字节(byte)、字

5077

STM32F407硬件IIC驱动OLED避坑实录:从‘不显示’到‘稳定刷屏’的完整调试过程

本文详细记录了使用STM32F407硬件IIC驱动OLED屏幕的完整调试过程,从初始的‘不显示’问题到最终实现‘稳定刷屏’。文章涵盖了硬件接线、I2C外设配置、常见问题排查及性能优化技巧,特别针对STM32标准库开发中的难点提供了实用解决方案,是嵌入式开发者驱动OLED屏幕的实用指南。

weixin_30315723的博客 304

避坑指南:ANSYS流固耦合计算中System Coupling数据传递设置与常见报错解决

本文深入解析ANSYS Workbench中System Coupling模块在双向流固耦合(FSI)计算中的应用,详细讲解数据传递机制、典型报错解决方案及高阶调试技巧。通过实际案例展示如何优化耦合步长、处理大变形问题,并提升并行计算效率,帮助工程师有效规避常见技术陷阱。

weixin_29213525的博客 731

【C语言】汇编语言与C语言的混合编程

C语言与汇编混合编程是在嵌入式开发中实现高性能和底层硬件控制的关键技术。文章介绍了两种主要方法:内联汇编(在C代码中直接嵌入汇编指令)和外联汇编(独立汇编文件通过链接调用)。内联汇编适用于简单指令(如寄存器操作、特殊指令),而外联汇编更适合复杂功能(如启动代码、中断处理)。文章重点阐述了ARM架构的AAPCS调用规范,确保C与汇编函数间的参数传递、寄存器使用和栈对齐等规则。通过具体示例(如饱和运算、协处理器访问、状态寄存器操作)说明了汇编在特定场景的必要性,并对比了不同工具链(GCC、Keil)的语法差异。

猫猫的小茶馆 1095

解决Google Play签名问题:Android App Bundle上传指南

摘要:本文分享了解决Android App Bundle上传至Google Play时遇到的签名问题的经验。当使用pepk.jar工具加密私钥时,出现"NoSuchAlgorithmException"错误。解决方案包括:确保使用JDK 11+版本、更新pepk.jar工具、验证密钥库信息,并提供详细命令行示例。通过升级开发环境和正确配置签名参数,最终成功生成加密密钥文件。文章为开发者提供了实用的技术参考,强调耐心排查问题的重要性。(149字)

m0_62153576的博客 148

OpenCV 简介

介绍OpenCV(Open Source Computer Vision Library:http://opencv.org)是一个开源的基于BSD许可的库,它包括数百种计算机视觉算法。文档OpenCV 2.x API描述的是C++ API,相对还有一个基于C语言的OpenCV 1.x API,后者的描述在文档opencv1.x.pdf中。OpenCV具有模块化结构,这就意味着开发包里面包含多个共享

kingroc的博客 1万+

(秋招复习)一些SLAM基础

秋招复习--SLAM基础知识篇

weixin_45432823的博客 769

PyQt5开发应聘简历模版

该工具旨在帮助用户对Excel、CSV格式的数据进行快速导入、分析及可视化展示,支持折线图、柱状图、饼图等多种图表类型,提供数据筛选、排序、统计等功能,适用于企业数据分析人员日常工作。:一款用于本地文件管理的桌面应用,支持文件的新建、复制、移动、删除、重命名等基本操作,具备文件搜索、分类整理、批量操作及文件信息查看等功能,提升用户文件管理效率。:熟悉QSS(Qt Style Sheet)样式表,可对PyQt5界面进行个性化美化,包括控件颜色、字体、边框、布局等样式定制,提升应用视觉体验。

ybmzlqzj的博客 83

【OpenCV】 OpenCV 入门介绍 (OpenCV Introduction)

Backto OpenCV Index 若未特殊注明, 本系列文章所用的 OpenCV 版本是 3.1.0. OpenCV (Open Source Computer Vision Library: http://opencv.org) is an open-source BSD-licensed library that includes several hundreds of compu...

北境の守望者 880

16、AI与无人机助力紧急器官移植及医疗物资运输

本文探讨了AI与无人机(UAV)集成模型在紧急器官移植和医疗物资运输中的应用。传统运输方式受限于交通、时间和环境因素,而基于图神经网络(GNN)的AI-UAV系统可实现高效、智能、全天候的医疗物资配送,具备实时温湿度监控、自动导航和适应复杂地形等优势。文章分析了该模型在血液、器官运输中的关键作用,展示了其在澳大利亚、中国、美国等国的实际应用案例,并通过表格与流程图说明运作机制。同时,文章还探讨了技术、法规和社会层面的挑战及应对策略,展望了未来技术融合、应用拓展和国际合作的发展趋势,凸显其在全球医疗物流中的广

lll78的博客 102

Neon 指令集 ARMv7/v8 对比

原文:http://community.arm.com/groups/android-community/blog/2015/03/27/arm-neon-programming-quick-reference ARM NEON programming quick reference 1 Introduction This article aims to in

蓝色污点的专栏 4万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TwinCAT Vision函数库

F_VN_AdaptiveThreshold Apply an adaptive threshold to a gray level image. Can return partial results when canceled by Watchdog. F_VN_AdaptiveThresholdExp Apply an adaptive threshold to a gray level im...

gkbxs的博客 1523

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MIPS指令集架构

MIPS指令集架构指令集架构ISA全称为Instruction Set Architecture,MIPS自从1988年提出后,不断扩展,其ISA大致如下:MIPS I这是基本的MIPS指令集,早期的R2000和R3000处理器实现了该指令集。MIPS IIR6000处理器引入该指令集,它增加了load linked、条件存储和分支等指令。还改进了FPU指令集,支持64位读写。MIPS III

chszs的专栏 8554

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OpenCV中处理遇到的一些小错与注意点

留作个人笔记,以供后需。 1.opencv只支持float32的图像显示和操作,然后float64是numpy的数据类型,opencv中不支持。在某些时候报错,需要将矩阵转为float32类型。 2. cv2.imread读出的图像为BGR模式而非RGB。 3. 图像uint8与float类型转换,uint8区间范围为0-255,而在对图片进行对比度增强,灰度等图片操作时,会引起图片像素值...

qq_40676033的博客 522

【Linux 命令实战(04):文件内容查看,掌握 cat、less、head、tail】

cat:快速查看文件内容。less:分页浏览文件,支持搜索。head:查看文件开头。tail:查看文件末尾,支持实时跟踪。其中,tail -f是我建议大家重点掌握的命令。在自动化测试工作中,很多时候我们不需要等整个任务结束才分析结果。通过实时跟踪日志,就可以观察程序执行过程,及时发现接口异常、数据库连接失败等问题。当然,本篇还只是文件内容查看的基础。后面我们会继续学习如何从大量日志中筛选关键词、统计错误数量、定位异常记录。

一些微不足道的见解、希望能帮助各位 206
上一篇: TLB miss
下一篇: 关于affinity mask
DigBug
博客等级 码龄20年 15粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值