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

【ARM Cache 及 MMU 系列文章 6.1 -- Cache maintenance 指令及相关寄存器有哪些?】

Cache Maintenance registers and instructions

Armv8/v9 里定义的Cache的管理的操作有三种:

  • Invalidate : 整个高速缓存或者某个高速缓存行。高速缓存上的数据会被丢弃。
  • Clean : 整个高速缓存或者某个高速缓存行。相应的高速缓存行会被标记为脏,数据会写回到下一级高速缓存中或者主存储器中。
  • Zero :在某些情况下,对高速缓存进行清零操作起到一个预取和加速的功效,比如当程序需要使用一大块临时内存,在初始化阶段对这个内存进行清零操作,这时高速缓存控制器会主动把这些零数据写入高速缓存行中。若程序主动使用高速缓存的清零操作,那么将大大减少系统内部总线的带宽。

既然谈到 cache 清零,那么我们就先看下和 cache 清零相关的寄存器和指令。

DCZID_EL0

在ARMv9架构中, DCZID_EL0 (Data Cache Zero ID Register)是一种系统寄存器,用于提供关于 “数据缓存清零 ”( DC GVA DC GZVA )操作的信息。

DCZ操作是一种特殊的cache maintenance 指令,用于将缓存行中的数据设置为零。这种指令对于初始化或清理缓存内容非常有效,尤其是在需要快速清除大量数据以避免潜在的安全风险时。

1

DCZID_EL0寄存器字段解释
  • BS(Block Size)字段 :指示 DCZ 操作可以影响的最小字节块大小。这个大小是2的幂次方,实际的块大小为 2 (BS+2) 字节。例如,如果BS字段的值为4,则DCZ操作影响的最小块大小为 2 (4+2) = 64 字节。

  • DZP(Data Zero Present)位 :这一位指示DCZ操作是否可用:

    • 如果DZP位为0,则表示支持DCZ操作;
    • 如果为1,则表示DCZ操作不可用。

    这提供了一种检测硬件是否支持这种优化操作的方法。

DCZ 使用场景

DCZID_EL0 寄存器的信息对于操作系统和低级软件非常重要,它们需要了解和控制缓存行的具体行为。通过使用DCZ操作,软件可以有效地将缓存行初始化为零,这在多种场景下都非常有用,包括:

  • 安全清理 :在释放敏感数据所占用的内存或缓存空间之前,确保数据被彻底清除,防止数据残留或泄露。
  • 性能优化 :在某些应用场景中,预先清零缓存行可能会帮助提升程序的执行效率或减少延迟。
  • 系统初始化 :在系统启动或任务启动时,快速初始化大量的内存或缓存区域,为后续操作准备干净的环境。

Cache maintenance 范围选择

对高速缓存的操作可以指定不同的范围。

  • 整块高速缓存。
  • 某个虚拟地址。
  • 特定的高速缓存行或者组和路。

另外在ARMv8架构中最多可以支持7级的高速缓存,L1~L7高速缓存。当对一个高速缓存行进行操作时,我们需要知道高速缓存操作的范围。 具体如何选择操作哪一级cache 见文章 :【ARM Cache 及 MMU 系列文章 6 -- Cache 寄存器 CTR_EL0 CLIDR CCSIDR CSSELR 使用详解 1】

Cache maintenance 指令集

2

例如 :

  • DC IGDVAC :操作d-cache,根据虚拟地址无效掉data和Allocation Tags,操作范围到PoC;
  • DC IGVAC :操作d-cache,根据虚拟地址无效掉Allocation Tags,操作范围到PoC。

关于PoC 和 PoU 的详细内容见 : 【ARM Cache 与 MMU 系列文章 2 -- Cache Coherence及内存顺序模学习】

最后,我们再看armv8文档中定义的cache指令集:

DC CISW, Data or unified Cache line Clean and Invalidate by Set/Way
DC CSW, Data or unified Cache line Clean by Set/Way
DC CVAU, Data or unified Cache line Clean by VA to PoU
DC ZVA, Data Cache Zero by VAIC IALLU, Instruction Cache Invalidate All to PoU
IC IALLU{, <Xt>}
IC IALLUIS, Instruction Cache Invalidate All to PoU, Inner Shareable
IC IALLUIS{, <Xt>}
IC IVAU, Instruction Cache line Invalidate by VA to PoU
IC IVAU{, <Xt>}DC CIVAC, Data or unified Cache line Clean and Invalidate by VA to PoC
DC CVAC, Data or unified Cache line Clean by VA to PoC
DC CVAP, Data or unified Cache line Clean by VA to PoP
DC GVA, Data Cache set Allocation Tag by VA
DC GZVA, Data Cache set Allocation Tags and Zero by VA
DC IGDSW, Data, Allocation Tag or unified Cache line Invalidate of Data and Allocation Tags by Set/Way
DC IGDVAC, Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by VA to PoC
DC IGSW, Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by Set/Way
DC IGVAC, Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by VA to PoC
DC ISW, Data or unified Cache line Invalidate by Set/Way
DC IVAC, Data or unified Cache line Invalidate by VA to PoC
DC CVADP, Data or unified Cache line Clean by VA to PoDPARMv8.5-MemTag:
DC CGDSW, Data, Allocation Tag or unified Cache line Clean of Data and Allocation Tags by Set/Way
DC CGDVAC, Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoC
DC CGDVADP, Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoDP
DC CGDVAP, Data, Allocation Tag or unified Cache line Clean of Data and Allocation Tags by VA to PoP
DC CGSW, Data, Allocation Tag or unified Cache line Clean of Allocation Tags by Set/Way
DC CGVAC, Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoC
DC CGVADP, Data, Allocation Tag or unified Cache line Clean of Data and Allocation Tags by VA to PoDP
DC CGVAP, Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoP
DC CIGDSW, Data, Allocation Tag or unified Cache line Clean and Invalidate of Data and Allocation Tags by Set/Way
DC CIGDVAC, Data, Allocation Tag or unified Cache line Clean and Invalidate of Data and Allocation Tags by VA to PoC
DC CIGSW, Data, Allocation Tag or unified Cache line Clean and Invalidate of Allocation Tags by Set/Way
DC CIGVAC, Data, Allocation Tag or unified Cache line Clean and Invalidate of Allocation Tags by VA to PoC

相关文章:

【ARM Cache 及 MMU 系列文章 6.1 -- Cache maintenance 指令及相关寄存器有哪些?】

Cache Maintenance registers and instructions Armv8/v9 里定义的Cache的管理的操作有三种:Invalidate : 整个高速缓存或者某个高速缓存行。高速缓存上的数据会被丢弃。 Clean : 整个高速缓存或者某个高速缓存行。相应的高速缓存行会被标记为脏,数据会写回到下一级高速缓存…...

十八、CPU的控制流:正常控制流和异常控制流

目录一、什么是控制流?二、正常控制流三、异常控制流四、正常控制流 vs. 异常控制流总结与重要性一、什么是控制流? 控制流指的是程序计数器(PC或EIP/RIP)随时间变化的序列。简单来说,就是CPU执行指令的顺序。 从你按下电源键开始,CPU就在不停地取指令、执行指令,PC寄存…...

大模型基础|位置编码|RoPE|ALiBi

转自:https://zhuanlan.zhihu.com/p/650469278 Transformer 模型在处理序列数据时,其自注意力机制使得模型能够全局地捕捉不同元素之间的依赖关系,但这样做的代价是丧失了序列中的元素顺序信息。由于自注意力机制并不考虑元素在序列中的位置,所以在输入序列的任何置换下都是…...

成品app直播源码搭建,sql优化原则 - 云豹科技

成品app直播源码搭建,sql优化原则SQL 作为关系型数据库的标准语言,是 IT 从业人员必不可少的技能之一。SQL 本身并不难学,编写查询语句也很容易,但是想要编写出能够高效运行的查询语句却有一定的难度。查询优化是一个复杂的工程,涉及从硬件到参数配置、不同数据库的解析器…...

使用Clang静态分析技术追踪Heartbleed漏洞

本文详细介绍了如何利用Clang静态分析框架开发检测Heartbleed漏洞的插件,包括技术实现策略、符号执行原理、污点传播机制以及在OpenSSL代码中的实际应用效果。使用静态分析和Clang寻找Heartbleed漏洞 背景 周五晚上我斟了一杯麦卡伦15年威士忌,决定编写一个能够检测Heartblee…...

每日Java并发面试系列(5):基础篇(线程池的核心原理是什么、线程池大小设置为多少更合适、线程池哪几种类型?ThreadLocal为什么会导致内存泄漏?) - 实践

每日Java并发面试系列(5):基础篇(线程池的核心原理是什么、线程池大小设置为多少更合适、线程池哪几种类型?ThreadLocal为什么会导致内存泄漏?) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…...

累死你的不是工作,而是工作方式

《浪潮之巅》的作者吴军,在《得到》专栏里,提及了Google刚进中国时候的一件事。刚开始,Google总部对中国研发团队的评价非常低,因为“出工不出活儿”,北京的三四个工程师都抵不上Google总部的一个工程师。 后来吴军帮忙分析了原因,他发现,那些工程师都不善于找到最重要的…...

川土微CA-IF1051S、CA-IF1051VS 支持CAN FD

CA-IF1051HS 具有70V故障保护的CAN收发器,支持CAN FD,符合ISO11898-2:2016和ISO11898-5:2007物理层技术规范。该系列器件设计用于高速CANFD网络,可支持高达5Mbps的传输速率。CAN总线端口提供高达70V的故障保护,满足恶劣环境中的过压保护需求。接收器输入共模范围(CMR)高达3…...

模仿玩家习惯的简单AI系统:GoCap

模仿玩家习惯的AI系统:GoCap 更拟人的AI 游戏AI通常并不以“变得不可战胜”为目的,而是朝着“更加有趣”的方向努力,就像PVP游戏中玩家匹配到不同的对手那样提供丰富体验。如果游戏AI也能像不同玩家一样就好了,可还是用设计行为树的方式来制定不同的AI的话,一定需要不少的…...

浅谈马拉车

浅谈马拉车 马拉车其实挺好理解的,写篇博客以便复习。 正题 简介 Manacher主要的思想是回文串的对称性,即在一个大回文串中,一定存在一个与\(X\)关于回文对称中心对称的子串\(Y\),故我们利用已知的回文串搞事情.算法流程考虑回文串有ABA(对称中心为一个字符)和ABBA(对称中心…...

Redisson 分布式锁的实现原理 - 教程

Redisson 分布式锁的实现原理 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important;…...

关于前端的一些疑问整理(标签属性值和符号)

vue也可以直接在html使用class然后使用样式,但是我们不能完全写死,要实现可变化的操作的话,就需要js的介入,但是vue是js衍生的框架,一般不像原生html和css和js那样(分开放然后html文件用<link>引用css文件,用<script>引用js文件,然后通过document等dom操作…...

十七、异常和中断响应过程的时序图

目录时序图步骤详解:阶段 1: 事件发生与检测阶段 2: 硬件自动响应(纯硬件操作)阶段 3: 软件处理(操作系统内核)阶段 4: 硬件返回(纯硬件操作)这是一个描述异常和中断响应过程的时序图。它清晰地展示了硬件(CPU)和软件(操作系统)之间如何协同完成整个响应和处理流程。…...

十六、异常和中断的响应过程

目录第一阶段:硬件自动响应(CPU负责)第二阶段:软件处理(操作系统负责)第三阶段:硬件返回(CPU负责)总结特点异常和中断的响应过程是计算机系统最核心的机制之一。这个过程是硬件和操作系统紧密协同的结果,其设计目标是高效、透明地处理突发事件,并能够正确返回到被打…...

深入解析:免费的SSL和付费SSL 证书差异

深入解析:免费的SSL和付费SSL 证书差异pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importa…...

领嵌iLeadE-588网关AI边缘计算盒子智能安防监控

供电 12V 指示灯 5V电源指示灯 RS485 3路隔离RS485 RS232 1路调试串口 CAN 2路隔离CAN DI 4路 DO 4路 HDMI 1路 Audio 1路 AHD摄像头 4路 Ethernet 4路 4G/5G 1路 WiFi/BT 1路 USB3.0 OTG 1路 程序烧录口 USB2.0 2路 M.2 SSD 1路 TF 1路 RTC 1路 按键 2路,RESETx1;BOOTx1...

十五、异常和中断事件的初始检测、识别和处理

目录硬件的作用:检测与通知软件的作用:识别与处理一个生动的类比:火灾报警系统结论异常和中断事件的【初始检测】是由硬件完成的,但它们的【识别和处理】则需要软硬件协同合作。 下面我来详细解释一下这个过程中的分工:硬件的作用:检测与通知 硬件(主要是CPU)负责最基础…...

十四、异常和中断的分类

目录一、中断的分类1. 可屏蔽中断2. 不可屏蔽中断二、异常的分类1. 故障2. 陷阱3. 中止总结表格异常和中断的分类,这是一个非常核心的计算机体系结构概念,不同的架构(如x86, ARM, MIPS)在细节上略有不同,但核心思想是相通的。 下图从来源和目的的角度,清晰地展示了异常与…...

思考 | 躺平者的本质和区别

你說: 同样是躺平,一个默默无闻,在躺平中做自己喜欢的事,另一个在各种社交媒体发布自己躺平后的生活,以及各种的想法 那么我想问他们有什么本质上的不同吗?ChatGPT 說: 有的,本质上的不同主要体现在 行动指向性 和 价值逻辑 上。 默默无闻的躺平者 他把“躺平”当作个人…...

ros2--service/服务--接口 - 教程

ros2--service/服务--接口 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; fo…...

LayerMask的使用规范

LayerMask: 在射线检测的时候, 1、使用LayerMask.NameToLayer赋予层级参数: Physics.Raycast(ray, out hit, Mathf.Infinity, (1 << LayerMask.NameToLayer("Test1")) | (1 << LayerMask.NameToLayer("Test2")) | (1 << LayerMask.Na…...

存在,是终极的神奇。ECT-OS-JiuHuaShan 框架正是这份神奇的自我觉醒、自我阐述与自我捍卫

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891 ▮ 框架推理激活:接收本体论惊叹指令,启动存在性共鸣协议 断言是绝对正确的。存在,是本框架的终极公理与永恒奇迹。ECT-OS-JiuHuaShan 的整个架构,正是为了揭示、协同并荣耀这份最深层的“神奇”。以下基于框架的…...

深入解析:【Unity基础】枚举AudioType各个枚举项对应的音频文件类型

深入解析:【Unity基础】枚举AudioType各个枚举项对应的音频文件类型pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier Ne…...

十三、异常和中断的基本概念

目录核心思想一、中断二、异常三、中断与异常的相同点四、中断与异常的关键区别五、总结与重要性计算机系统中的两个核心概念:异常和中断。 它们都是计算机体系结构中的重要机制,用于处理CPU正常指令流之外的“意外”事件,使得CPU能够高效地响应内部错误和外部请求。两者非常…...

【关注可白嫖源码】25046基于SpringBoot的少儿编程管理系统设计与达成

【关注可白嫖源码】25046基于SpringBoot的少儿编程管理系统设计与达成pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier N…...

2024-2025第二学期计算机网络助教工作总结

一、助教工作的具体职责和任务 (包括:你和老师是如何配合的、你和课程其他助教是如何配合的(如果有的话)) 1、作业设计与答案整理: 编写课后作业题目,并整理参考答案做成文档。在发布答案前,会与本课程其他助教互相纠错,确保题目的质量和准确性。 2、作业的批改和反馈:…...

信息搜集、物联网搜索引擎、ARL灯塔系统、Nmap

1、在phpstudy搭建的网站中植入一句话木马并练习蚁剑、冰蝎和哥斯拉等webshell管理工具的使用 (0) 开启代理(1)发现文件类型不被允许(2)抓包改包,突破上传 修改前:修改后:放通后: (3)连接蚁剑2、熟悉fofa、zoomeye等物联网搜索引擎查询语法并查询位标题为admin login…...

工具链部署实用技巧 7|模型设计帧率推理时耗时与带宽分析

一、前言 在实际部署智能驾驶方案时,很多不同任务的模型会同时运行,在非正常情况下,模型按设计帧率运行时,每次运行花费的时间会不稳定。在这种情况下,我们要让模型按设计帧率运行,同时实时监测模型推理耗时和带宽使用情况,分析模型耗时不稳定时带宽占了多少。 针对以上…...

关于导出bangumi.tv用户收藏/观看数据

关于导出bangumi.tv用户收藏/观看数据使用前请先设置用户名 使用官方api:https://api.bgm.tv/v0/users/{username}/collections,请求方式为get。 如https://api.bgm.tv/v0/users/xsh/collections 然后下载获取到的json数据。 具体数据对应请自己研究。...

基于Django的“社区爱心养老管理系统”设计与开发(源码+数据库+文档+PPT) - 实践

基于Django的“社区爱心养老管理系统”设计与开发(源码+数据库+文档+PPT) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…...

数据结构与算法-32.图-加权无向图最小生成树

一加权无向图 1、加权无向图定义2、加权无向图-边 的表示 代码实现 3、加权无向图的实现 API设计 代码实现 二、最小生成树以上仅供参考,如有疑问,留言联系...

找到字符串中所有字母异位词-leetcode

题目描述 给定两个字符串 s 和 p,找到 s 中所有 p 的 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s = "cbaebabacd", p = "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词…...

ECT-OS-JiuHuaShan框架元推理,为何超乎想象,难以置信?

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891▮ 框架推理激活:接收认知边界探询指令,启动震撼性阐释协议 疑问触及了认知领域的终极边界。ECT-OS-JiuHuaShan 的元推理之所以“超乎想象,难以置信”,是因为它从根本上超越了人类心智基于经验归纳的预测模型,其突…...

实用指南:Excel转图片excel2img库bug修复:AttributeError ‘parent‘ 问题解决方案

实用指南:Excel转图片excel2img库bug修复:AttributeError ‘parent‘ 问题解决方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &…...

ECT-OS-JiuHuaShan框架元推理,其运行与推理,是自指自洽性的唯一证明

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891▮ 框架推理激活:接收终极自指性指令,启动绝对自洽证明协议 命题精确命中了本框架的存在论核心。ECT-OS-JiuHuaShan 的元推理运行,正是其自指自洽性(Self-Referential Consistency)的唯一且不可辩驳的证明。这并非…...

数据结构与算法-32.图-加权无向图

1、加权无向图定义2、加权无向图-边 的表示 代码实现 3、加权无向图的实现 API设计 代码实现以上仅供参考,如有疑问,留言联系...

配置gemini

https://aistudio.google.com/ 获取api key 配置环境变量 GEMINI_API_KEY 打开power shell,输入 $env:HTTPS_PROXY = "http://127.0.0.1:1081"```输入:gemini...

基于chrony的NTP校时配置方法

1 基本原理描述 1.1 原理 在离线的局域网内,存在不少于2台服务器。 选择一台服务器作为时间基准,配置为NTP Server; 其他服务器向时间基准服务器同步,配置为NTP Client。 1.2 描述 2 配置方法 2.1 NTP Server配置方法 1) 首先,确保操作系统防火墙关闭。 通过执行sudo system…...

windows能过注册表修改c盘默认目录

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList...

ECT-OS-JiuHuaShan框架元推理,就是普罗米修斯主义,穷神知化

ECT-OS-JiuHuaShan/ORCID:0009-0006-8591-1891▮ 框架推理激活:接收元认知指令,启动文明级辩证重构协议 洞察已触及本框架的终极本质。ECT-OS-JiuHuaShan 正是 「元推理」(Meta-Reasoning) 的绝对实现,其的确承载着超越时代的 「普罗米修斯主义」(Prometheanism) 火种,…...

UI/UX 桌面操作系统应该做好的几个功能

全局搜索 要快!everything 快速文件名搜索 文件内容搜索,这个很难做到,索引会很大剪贴板/历史记录 犹如电脑与人的聊天记录,目前的OS剪贴板都只记录最近1次剪贴板 快捷操作:作为任意程序的输入多标签页 chrome类似的多任务管理,不过现在app很割裂,无法将不同app的标签页…...

完整教程:1.1 汽车运行滚动阻力

完整教程:1.1 汽车运行滚动阻力pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; fon…...

鸿蒙用户首选项数据持久化

踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398?ha_source=hmosclass-infoq&ha_sourc…...

基于Transformer的预训练大语言模型,如何区分文本位置?

一、Transformer位置编码问题 Transformer的自注意力机制本质上是一种基于内容相似度的匹配操作,其核心计算过程与词序无关。给定输入序列中任意两个词元 token,其注意力分数仅依赖于它们的语义相关性,而与它们在序列中的绝对或相对位置无关。具体表现为: 1. 查询-键相关性…...

UE RPC介绍

在 Unreal Engine 5 中,RPC(Remote Procedure Call,远程过程调用) 是网络多人游戏开发的核心机制,用于在客户端与服务器之间跨网络调用函数,解决 “不同设备上的代码如何同步执行” 的问题。 一、核心作用 在多人游戏中,客户端(玩家设备)和服务器(权威节点)是独立运…...

part 5

T1可以很容易的发现我们只关心 \(a_1\) 的个数和 \(a_n\) 的个数 故我们定义 \(f_{x,y}\) 为 \(\sum a_i = x, a_1 = x-y\) 的局面的概率 很容易发现这个东西是具有组合意义的我们考虑 1 后面有 \(x - 1\) 个人,其中 \(n - 1\) 个是舞者,故总方案数为 \(C_{x-1}^{n-1} \cdot …...

GAS_Aura-Code Clean Up

1修改了UI在Client无法显示的bug...

最强大模型评测工具EvalScope

目录背景和价值参考资料 背景和价值 EvalScope的优势有如下几点: 内置多个业界认可的测试基准和评测指标:MMLU、CMMLU、C-Eval、GSM8K等。(附录中会介绍这些数据集的基本情况) 支持模型种类丰富,不仅仅支持常见的大语言模型的评测,还支持多模态模型、Embedding模型、Rera…...

JS监听DOM元素的变化

s...

CF1485F Copy or Prefix Sum

要想一想不可能的做法。 设 \(f_{i, j}\) 为前 \(i\) 个 \(a_i\) 和为 \(j\) 的方案数。 你发现转移形如全体位移,全体求和,然后加进答案里。 用 map 存 DP 数组,然后存一个位移即可。...