当前位置: 首页 > news >正文

barret reduction原理详解及硬件优化

背景介绍

        约减算法,通常应用在硬件领域,因为模运算mod是一个除法运算,在硬件中实现速度会比乘法慢的多,并且还会占用大量资源,因此需要想办法用乘法及其它简单运算来替代模运算。模约减算法可以利用乘法、加法和移位等操作实现大数的取模,规避了模运算中的除法,常见方法有蒙哥马利模约减,barret模约减等,本篇文章介绍barret 模约减算法原理。

barret reduction

        约减就是用简单运算来规避除法运算,以便于硬件实现,以A mod q为例,如果要计算A对q取模的结果使用barret reduction算法应该怎么做?

        先规定A mod q,则称A为模数,q为基。

        假设A的位宽是w_{1},q的位宽是w_{2},对于硬件实现来说需要预计算出两个常数

\begin{cases} & \ q_1=\frac{A}{2^{w_{2}}} \\ & \ H=\frac{2^{w_{1}+1}}{q} \end{cases}

        \small q_1\small H在进行预计算的时候,都需要对计算结果进行取下整,进而\small q_1\small H满足如下不等式:

\begin{cases} & \ \ \ \frac{A}{2^{w_{2}}}-1 <q_1\leqslant \frac{A}{2^{w_{2}}} \\ & \ \frac{2^{w_{1}+1}}{q}-1<H\leqslant \frac{2^{w_{1}+1}}{q} \end{cases}

        令\small q_2 =q_1\times H,则有如下不等式成立:

\small q_2=\frac{A}{2^{w_{2}}} \times\frac{2^{w_{1}+1}}{q}

\small \frac{2^{w_{1}-w_{2}+1}A}{q}-\frac{A}{2^{w_{2}}}-\frac{2^{w_{1}+1}}{q}+1<q_2\leqslant \frac{2^{w_{1}-w_{2}+1}A}{q}

        令\small q_3=q_2 / 2^{w_{1}-w_{2}+1,即对上面\small q_2不等式,两边同时除以\small 2^{w_{1}-w_{2}+1,得到:

\small \frac{A}{q}-\frac{A}{2^{w_{1}}+1}-\frac{2^{w_{2}}}{q}+\frac{1}{2^{w_{1}-w_{2}+1}}<q_3\leqslant \frac{A}{q}

        由于A的位宽是w_{1},q的位宽是w_{2},所以A和q满足如下不等式:

\begin{cases} & \frac{A}{2^{w_{1}+1}} \leqslant1 \\ & \ \ \frac{2^{w_2}}{q} \leqslant2 \end{cases}

        把A和q所满足的不等式,带入q_3不等式中,得到:

\small \frac{A}{q}-3<q_3\leqslant \frac{A}{q}

        所以两边同时乘以q得到:

A-3q<q_3\times q\leqslant A

        因此得到模运算可以化简为:

A\ mod\ q=(A-q_{3}\times q)\ mod\ q

        又由于A-q_{3}\times q是在A-3q和A之间的,所以它对q取模,只需要判断它在[0,q)、[q,2q)、[2q,3q)的哪个区间,若A-q_{3}\times q落在[q,2q)区间,则:

(A-q_{3}\times q)\ mod\ q=A-q_{3}\times q-q

         以上,完成了barret模约减,同样的,该模约减算法可以应用在模乘领域,即实现barret模乘。而相对于模乘,AB mod q,可以直接把AB的乘积看作是上面公式推导的A,然后再进行模乘。

barret模约减计算流程大体如下图所示:

硬件实现

        看完模约减公式推导过程,肯定有人会疑问:

\begin{cases} & \ q_1=\frac{A}{2^{w_{2}}} \\ & \ H=\frac{2^{w_{1}+1}}{q} \end{cases}

        先前预计算了两个常数,我后面的约减推导全都是依赖于这两个常数。先来看H,为了将多项式系数约束在基的范围内,进而能够实现密码学领域中的一些同态加密算法,选取的基q,通常是定值,因此H的计算量很少可以直接预计算并存储到RAM中,哪怕我A的取值范围是1-200bit,在基q确定的情况下我最多也只需要预计算200个H的值。

        选取基q确定的情况下H好计算,但A是输入变量,有任意种可能,那么q_1该怎么预计算?

        事实上q_1不需要预计算,因为q_1是A除以2的幂次,在硬件中,除以2的幂次可以通过移位操作来实现,至于q_1计算需要对结果向下取整,只需要对A进行移位操作即可。例如

7/4=7>>2=3'b111 >>2=3'b001=1

downfloor(7/4) = downfloor(1.75)=2

        q_1计算对结果向下取整,可以直接用A移位来替代。

        综上,\small q_1的值和\small H的值我们都可以轻易得到了,并且不怎么消耗计算资源,也没有多少计算delay,并且后面\small q_3的计算也是除以2的次幂,也可以转化为移位操作,因此barret模约减主要的计算量在于:

\small \begin{cases} &q_2=q_1\times H=\frac{A}{2^{w_{2}}} \times\frac{2^{w_{1}+1}}{q} \\ & A-q_3\times q \end{cases}

        主要计算量在于上面的两个乘法,q2 = q1*H,和q3*q的计算。

硬件优化

        在之前已经推导出barret模约减主要计算量在两个乘法,q2 = q1*H,和q3*q的计算。

        对于硬件实现来说,第二个计算可以进行优化,因为A-q3*q之后还要对其的范围进行判断,若落在[q,2q)范围,则A mod q = A-q3*q-q,事实上我们关心其落在那个范围,并不需要比较所有bit位,q的位宽为\small w_2,我们只需要比较低\small w_2+2位的大小就可以判断其落在哪个范围,甚至对于q3*q也可以通过取q3的低\small w_2位的数据和q进行乘运算,再取运算结果的低\small w_2+2位进行比较,从而确定范围。

        因此在硬件实现上,利用barret模约减,成功将除法化简为了两个乘法和一(两)个加法计算。

        

相关文章:

barret reduction原理详解及硬件优化

背景介绍 约减算法&#xff0c;通常应用在硬件领域&#xff0c;因为模运算mod是一个除法运算&#xff0c;在硬件中实现速度会比乘法慢的多&#xff0c;并且还会占用大量资源&#xff0c;因此需要想办法用乘法及其它简单运算来替代模运算。模约减算法可以利用乘法、加法和移位等…...

NLP / LLMs中的Temperature 是什么?

ChatGPT, GPT-3, GPT-3.5, GPT-4, LLaMA, Bard等大型语言模型的一个重要的超参数 大型语言模型能够根据给定的上下文或提示生成新文本&#xff0c;由于神经网络等深度学习技术的进步&#xff0c;这些模型越来越受欢迎。可用于控制生成语言模型行为的关键参数之一是Temperature …...

c#快速入门~在java基础上,知道C#和JAVA 的不同即可

☺ 观看下文前提&#xff1a;如果你的主语言是java&#xff0c;现在想再学一门新语言C#&#xff0c;下文是在java基础上&#xff0c;对比和java的不同&#xff0c;快速上手C#&#xff0c;当然不是说学C#的前提是需要java&#xff0c;而是下文是从主语言是java的情况下&#xff…...

nginx--基本配置

目录 1.安装目录 2.文件详解 2.编译参数 3.Nginx基本配置语法 1./etc/nginx/nginx.conf 2./etc/nginx/conf.d/default.conf 3.启动重启命令 4.设置404跳转页面 1./etc/nginx/conf.d/default.conf修改 ​2. 重启 5.最前面内容模块 6.事件模块 1.安装目录 # etc cd …...

R语言中apply系列函数详解

文章目录applylapply, sapply, vapplyrapplytapplymapplyR语言系列&#xff1a; 编程基础&#x1f48e;循环语句&#x1f48e;向量、矩阵和数组&#x1f48e;列表、数据帧排序函数&#x1f48e;apply系列函数 R语言的循环效率并不高&#xff0c;所以并不推荐循环以及循环嵌套…...

红黑树探险:从理论到实践,一站式掌握C++红黑树

红黑树揭秘&#xff1a;从理论到实践&#xff0c;一站式掌握C红黑树引言为什么需要了解红黑树&#xff1f;红黑树在现代C编程中的应用场景树与平衡二叉搜索树树的基本概念&#xff1a;二叉搜索树的定义与性质&#xff1a;平衡二叉搜索树的特点与需求&#xff1a;红黑树基础红黑…...

CDH6.3.2大数据集群生产环境安装(七)之PHOENIX组件安装

添加phoenix组件 27.1. 准备安装资源包 27.2. 拷贝资源包到相应位置 拷贝PHOENIX-1.0.jar到/opt/cloudera/csd/ 拷贝PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha、PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel到/opt/cloudera/parcel-repo 27.3. 进入cm页面进行分发、…...

【C++要笑着学】搜索二叉树 (SBTree) | K 模型 | KV 模型

C 表情包趣味教程 &#x1f449; 《C要笑着学》 &#x1f4ad; 写在前面&#xff1a;半年没更 C 专栏了&#xff0c;上一次更新还是去年九月份&#xff0c;被朋友催更很久了hhh 本章倒回数据结构专栏去讲解搜索二叉树&#xff0c;主要原因是讲解 map 和 set 的特性需要二叉搜索…...

微信小程序开发 | 小程序开发框架

小程序开发框架7.1 小程序模块化开发7.1.1 模块7.1.2 模板7.1.3 自定义组件7.1.4插件7.2 小程序基础样式库—WeUI7.2.1 初识WeUI7.2.2【案例】电影信息展示7.3 使用vue.js开发小程序7.3.1 初识mpvue7.3.2 开发工具7.3.3 项目结构7.3.4【案例】计数器7.4 小程序组件化开发框架7.…...

气候系统设计

基础概念 一个星球&#xff08;例如地球&#xff09;的气候系统主要是一些基本参数基于公转周期&#xff08;年&#xff09;和自转周期&#xff08;日&#xff09;的变化&#xff0c;这其中会有两个变化因素&#xff1a;地理位置&#xff08;经纬度&#xff09;和天气变化&…...

如何使用Thymeleaf给web项目中的网页渲染显示动态数据?

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 服务器软件&#xff1a;apache-tomcat-8.5.27 目录一. 什么是Thymeleaf&#xff1f;二. MVC2.1 为什么需要MVC&#xff1f;2.2 MVC是什么&#xff1f;2.3 MVC和三层架构之间的关系及工…...

01 | 电机常用语

1 电机常用术语 1.1 原点 原点是指步进电机在驱动直线运动机构时的起始点。 1.2 点动 点动是电动机控制方式中的一种。 点动由于在这一控制回路中没有自保,也没有并接其它的自动装置,只是按下控制回路的启动按钮,主回路才通电,松开启动按钮,主回路就没电了。最典型的是…...

Leetcode.2601 质数减法运算

题目链接 Leetcode.2601 质数减法运算 Rating &#xff1a; 1779 题目描述 给你一个下标从 0 开始的整数数组 nums&#xff0c;数组长度为 n 。 你可以执行无限次下述运算&#xff1a; 选择一个之前未选过的下标 i &#xff0c;并选择一个 严格小于 nums[i]的质数 ppp &…...

DP7416国产192K数字音频接收芯片兼容替代CS8416

目录192K 数字音频应用DP7416简介芯片特性192K 数字音频应用 采样率192khz&#xff0c;能将192,000hz以下的频率都录下来&#xff0c;而且对声波每秒连续采样192,000次。在回放的时候&#xff0c;这192,000个采样点按顺序播放&#xff0c;从而还原原来的声音。   过采样技术除…...

全球土壤湿度数据获取方法

土壤湿度亦称土壤含水率&#xff0c;表示土壤干湿程度的物理量。是土壤含水量的一种相对变量。通常用土壤含水量占干土重的百分数是示&#xff0c;亦称土壤质量湿度&#xff0c;如用土壤水分容积占土壤总容积的百分数表示&#xff0c;则称土壤容积湿度。通常说的土壤湿度&#…...

在proteus中仿真arduino实现矩阵键盘程序

矩阵键盘是可以解决我们端口缺乏的问题&#xff0c;当然&#xff0c;如果我们使用芯片来实现矩阵键盘的输入端口缺乏的问题将更加划算了&#xff0c;本文暂时不使用芯片来解决问题&#xff0c;而使用纯朴的8根线来实现矩阵键盘&#xff0c;目的是使初学者掌握原理。想了解使用芯…...

【ROS2指南-5】理解ROS2服务

目标&#xff1a;使用命令行工具了解 ROS 2 中的服务。 教程级别&#xff1a;初学者 时间&#xff1a; 10分钟 内容 背景 先决条件 任务 1 设置 2 ros2服务列表 3 ros2服务类型 4 ros2 服务查找 5 ros2界面展示 6 ros2 服务调用 概括 下一步 相关内容 背景 服务是 …...

探索Apache Hudi核心概念 (3) - Compaction

Compaction是MOR表的一项核心机制&#xff0c;Hudi利用Compaction将MOR表产生的Log File合并到新的Base File中。本文我们会通过Notebook介绍并演示Compaction的运行机制&#xff0c;帮助您理解其工作原理和相关配置。 1. 运行 Notebook 本文使用的Notebook是&#xff1a;《A…...

100Wqps异地多活,得物是怎么架构的?

说在前面 在40岁老架构师尼恩的数千读者群中&#xff0c;一直在指导大家简历和职业升级&#xff0c;前几天&#xff0c;指导了一个华为老伙伴的简历&#xff0c;小伙伴的优势在异地多活&#xff0c;但是在简历指导的过程中&#xff0c;尼恩发现&#xff1a; 异地多活的概念、异…...

35岁的测试工程师被公司强行辞退,感叹道:我以前就该好好努力了

曾经的高薪软件测试工程师&#xff0c;今年35岁了&#xff0c;被公司劝退了&#xff0c;外卖跑到凌晨&#xff0c;很累&#xff0c;但还是有一种想诉说的冲动。哪怕让大家觉得已经说得太多了&#xff0c;烦了&#xff0c;都成祥林嫂了&#xff0c;但是&#xff0c;我是真的想说…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...