【机密计算顶会解读】11:ACAI——使用 Arm 机密计算架构保护加速器执行

ARM / RISC-V 芯片设计生成全流程深度报告(2026):工具链、技术栈与制造工艺 从产品定义一路走到量产爬坡:13 个阶段、4 大工程域、全阶段 EDA 工具矩阵、先进制程与封装工艺、成本与周期模型、签核清单与风险登记册,并标注 ARM 与 RISC-V 两条路线的真实差异。 阅读详情

导读:本文介绍ACAI,其构建一个基于CCA的解决方案,使得机密虚拟机能够安全地使用加速器,同时保持与现有应用程序的兼容性和安全性,能够实现对加速器的安全访问。

原文链接:ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture | USENIX

ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture

一、背景介绍

随着可信执行环境在CPU中的发展,机密计算取得一定成果,可以确保用户的代码和数据免受恶意租户和具有特权的管理员的侵害,但租户无法在可信执行环境的保护下安全使用GPU和FPGA等加速器。

在云计算环境下,用户希望在不可信云平台部署安全敏感应用,同时利用加速器满足大工作量需求,而当前可信执行主要在CPU层面,未延伸到加速器,这就需要解决机密计算在加速器使用上的安全和性能问题。

Arm在2021年宣布了机密计算架构(CCA)规范,它通过颗粒保护检查实现了硬件级别访问控制,隔离了机密虚拟机(Realm VMs)。作者尝试基于CCA进行设计,使得机密虚拟机可以安全地访问加速器。

二、 现状分析

为实现对加速器的安全访问,研究设立以下两个目标:

  1. 构建一个基于CCA的解决方案,使得机密虚拟机能够安全地使用加速器。
  2. 同时保持与现有应用程序的兼容性和安全性。

现有硬件对可信执行环境的支持如Intel SGX主要是进程级抽象,且在使用加速器方面存在不足。对于加速器与机密计算的结合,一些方案存在如需要硬件修改且性能和面积受限,以及加速器无法判断主机安全和CPU端TEE需考虑安全设备访问等问题。同时,现有如加密通信的bounce-buffer设计存在内存和计算开销大、兼容性差等缺陷。因此面临以下三个问题:

  1. 如何在不破坏CCA保护的情况下允许外部加速器访问Realm内存?
  2. 如何确保来自不同加速器的访问被隔离到与其连接的相应虚拟机的指定共享区域,并阻止恶意外设的访问?
  3. 如何隔离所有可能的I/O和内存访问路径,防止软件和物理对手的攻击?

三、应对设计

  • 选择Arm CCA:选择Arm CCA作为基础,因为它是即将推出的扩展,可在Arm的固定虚拟平台上实验,且其本身支持总线级访问控制和内存保护。CCA架构引入了粒度保护表(GPT)追踪物理地址,通过粒度保护检查(GPCs)对处理单元增强,GPCs根据GPT的限制对安全领域内存的访问进行检查,防止外部访问领域内存。同时因为有总线级别的加密性及完整性保护机制,物理攻击者无法篡改主内存的数据。
  • 设计思路:提出ACAI,扩展Arm CCA的安全常量到设备端访问。为设备安全标记为realm - mode以利用隔离,使用设备侧MMU(SMMU)实现VM级隔离,重新利用硬件加密支持保护设备通信,在VM创建流程中加入设备认证。以此身份与所有权的管理、内存区域保护和设备生命周期管理。
  • 身份与所有权:设备经过认证后被赋予唯一不可伪造身份,并仅能被一个realm VM访问和配置,确保设备与realm VM一对一绑定。同时保证设备与realm VM之间内存映射安全且兼容CCA,包括主机和设备侧的地址转换,以及两者的同步。
  • 创建保护内存区域:再realm VM和加速器之间建立共享保护内存区域,位于realm世界内存中。通过RMM和SMMU页表确定只有指定设备和realm VM可访问,防止恶意设备和VM干扰。同时利用GPT将SMMU数据结构标记为仅在根模式下可访问,防止还有hypervisor篡改映射,同时引入SMMU接口,让hypervisor按照规则请求更新。
  • 设备生命周期管理:设备连接时,在realm VM创建过程中附加加速器,确保相关内存区域符合安全常量。包括重置加速器、移动其配置空间到realm世界等操作。由monitor初始化设备并执行认证协议,确保设备正确初始化、认证、并收集报告,防止设备被篡改或替换。最后仅在realm VM销毁阶段允许hypervisor分离设备,确保设备内存和状态正确清理,防止数据泄露和安全漏洞。
  • 架构图:

四、技术解析

4.1 内存保护

在内存方面,ACAI设置了realm VM和设备间的共享内存区域(保护区域),通过多种机制确保内存访问的安全,如确保设备和realm的初始状态及身份映射,以及保证内存区域的安全访问和正确的地址转换。

4.2 设备管理

在设备管理上,利用IDE确保设备有唯一身份且不重叠,通过一系列流程如在创建VM时同时进行安全的加速器连接,在设备连接和初始化过程中保证配置正确和身份认证。

在应对恶意组件时,针对不可信hypervisor、恶意的co-tenants、其他的恶意设备和物理攻击者等可能的威胁,ACAI通过多种机制如密钥保护、身份验证、内存隔离和加密等措施进行防护,确保系统安全。

ACAI的安全常量有效保证了CPU和设备TEE的安全组合,各种攻击都难以突破其防御,维系了系统的保密性和完整性。

插图:(a)-(c)潜在的攻击,(d)ACAI保护

五、验证评估

实验设置:在Arm FVP和Cortex-A35板上进行原型实现,使用Rodinia测试集的GPU基准测试和自定义的FPGA基准测试,在不同配置下进行测量,包括原始设置、加密模式、ACAI保护模式以及优化模式等。

结果展示:结果表明ACAI在系统启动、realm创建、删除、SMMU操作等方面有一定的开销,但对正常世界执行影响较小,保持安全保证的同时具有可行性。与加密模式相比,ACAI显著减少了指令数,在GPU和FPGA上有一定的性能提升。

本账号发布内容均为原创,欢迎转载,转载请注明出处。更多资讯请移步【机密计算前沿技术】服务号,欢迎交流!

ARM机密计算架构 我们对Arm机密计算架构(CCA)的愿景是保护计算发生的任何地方的所有数据和代码——释放数据和人工智能的力量和潜力。Arm CCA是一系列硬件和软件架构创新的一部分,增强了Arm对机密计算的支持。Arm CCA是Armv9-A架构的关键组成部分,实现了我们将机密计算的好处带给每个行业的目标。 阅读详情

相关推荐

ARM机密计算组件

一、硬件架构 1、RME 二、软件和固件架构 1、RMM 2、其他固件标准(例如PSCI) 三、开源实现 1、TF-A 2、Veraison 3、工具链 四、动态TrustZone技术

AI-安全-功耗 1110

跨行业的计算安全

Arm 架构的安全功能是与我们的合作伙伴合作创建的,确保规范的制定具有业内最佳的安全专业知识。定期发布新的Arm 安全技术意味着设备可以支持最高级别的安全标准。 Arm 架构是高度标准化的,有助于确保实现兼容。这有助于避免碎片化,并减少合作伙伴为有效对策创建安全服务的自定义实现的需要。 Arm 致力于确保所有最新的架构安全功能得到所有领先操作系统和工具的广泛支持。和开源项目。这使得整个生态系统可以在 Arm 架构上无缝开发。因此,最新的 Arm 安全扩展被广泛采用于各种外形尺寸和市场。

pslyunhai3255的博客 682

船载 OpenHarmony AIS 航海工作台:桌面启动器与导航框架

本文介绍船载OpenHarmony AIS航海工作台的自研Launcher与导航框架。其桌面即工作台,集成多页应用网格、Dock栏、拖拽排序及U盘安装入口,统一管理系统与第三方应用。通过视图模型持久化布局,实现开机直入工作台。导航采用router与Navigation双范式并存,支持状态联动(如告警悬浮球、船舶弹窗),提升操作效率。设计注重性能优化与权限合规,为后续硬件数据接入奠定基础。

专注于计算机研发知识和资讯分享 14

[armv9]-ARMV9 CCA 机密计算简介

目录1、简介2、什么是机密计算?3、机密计算Realms4、动态Trustzone技术 1、简介 Arm CCA 的愿景是在计算发生的任何地方保护所有数据和代码,释放数据和人工智能的力量和全部潜力。 Arm CCA 是一系列硬件和软件架构创新的一部分,这些创新增强了 Arm 对机密计算的支持。 Arm CCA 是 Armv9-A 架构的关键组件,它将实现我们的目标,即为使用微处理器的每个行业领域释放机密计算的好处。 下图显示了 Arm 机密计算架构的组件。 2、什么是机密计算? 信息必须始终受到保护,无论

baron-周贺贺-代码改变世界ctw 7034

船载 OpenHarmony AIS 航海工作台:串口数据采集与 AIS / NMEA 解析

本文介绍船载OpenHarmony AIS航海工作台的串口数据采集与解析架构:通过后台线程实现GNSS/NMEA与AIS报文的稳定读取,利用原生库高效解码,数据经解析后存入本地关系库,再由轮询线程回传至主线程刷新船舶列表。设计强调解析下沉、原生加速与可靠性机制,确保UI不卡顿,为后续融合气象、潮汐等外部信息奠定基础。

专注于计算机研发知识和资讯分享 109

船载 OpenHarmony AIS 航海工作台:告警与防碰撞预警系统

船载OpenHarmony AIS航海工作台的告警与防碰撞系统,集成十余类告警(超速、偏航、会遇、SOS等),通过网格空间索引实现高效邻近判定,保障实时性。告警管理器统一调度规则、去重、通知与日志,支持悬浮球、语音、跑马灯、弹窗多渠道触达,确保航行安全。SOS紧急通道独立运行,避免干扰。系统设计强调性能优化与多场景适配,为航海安全提供核心支撑。

专注于计算机研发知识和资讯分享 119

2021极术通讯-Arm CCA赋能开发者拥有机密计算能力

首发极术社区 如对Arm相关技术感兴趣,欢迎私信 aijishu20加入技术微信群。 导读:极术社区与E-learning平台联合推出极术通讯,引入行业媒体和技术社区、咨询机构优质内容,定期分享产业技术趋势与市场应用热点。 芯方向 Arm CCA赋能开发者拥有机密计算能力 Arm在6月24日发表全新Arm®v9架构的安全性功能Arm 机密计算架构(Arm Confidential Compute Architecture, Arm CCA)的初步技术规格。Arm年初推出的Armv9架构将是未来3,0.

weixin_47569031的博客 493

使用GDScript(godot)生成仿杀戮尖塔地图

使用GDScript(godot)生成仿杀戮尖塔地图 extends Node2D export (PackedScene) var Ball var 被连接数 = {} # 每个怪物被下层怪物连接的数量 最多为2 var 连接1 = {} # 第一次连接的上层怪物位置 var 连接2 = {} # 第二次连接的上层怪物位置 var 怪物数量 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0] # 每层怪物的数量 var 总层数 =8 # 总层数 var 怪物坐标行 = {} #

weixin_45038716的博客 3010

【论文分享】ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture 24‘USENIX

多种现有和即将推出的 CPU 中的可信执行环境展示了机密计算的成功,但需要注意的是,租户无法安全地使用 GPU 和 FPGA 等加速器。在本文中,我们重新考虑 Arm 机密计算架构 (CCA) 设计,这是 Armv9-A 中即将推出的 TEE 功能,以解决这一差距。我们观察到 CCA 提供了正确的抽象和机制,允许机密虚拟机将加速器用作一流的抽象。我们构建了 ACAI,这是一种基于 CCA 的解决方案,其原则性方法是将 CCA 安全不变量扩展到设备端访问,以解决几个关键的安全漏洞。

谈论现实 1939

Android PackageManagerService 总结(一)应用市场下载安装apk流程

前言: 本篇文章是对系统包安装流程的总结,基于Android12 上 com.android.packageinstaller 源码的分析,第三方应用商城(华为商城,小米商城,应用宝,豌豆荚,酷安等)下载安装应 用,在普通安装和静默安装app两种方式下,对代码流程的梳理和讲解。 触发安装: 当你在商城界面中点击安装按钮,应用会自动下载,下载完成后就会调起系统安装应用的界面,此种触发方式一般是通过Intent 隐式调用的,我们先阅读如下代码: ......

u012514113的专栏 1万+

onnx入门教程(一):解决模型部署中的难题

直接使用 PyTorch 模型的话,我们修改几行代码就能实现模型输入的动态化。但在模型部署中,我们要花数倍的时间来设法解决这一问题。现在,让我们顺着解决问题的思路,体验一下模型部署的困难,并学习使用自定义算子的方式,解决超分辨率模型的动态化问题。刚刚的报错是因为 PyTorch 模型在导出到 ONNX 模型时,模型的输入参数的类型必须全部是 torch.Tensor。而实际上我们传入的第二个参数" 3 "是一个整形变量。这不符合 PyTorch 转 ONNX 的规定。我们必须要修改一下原来的模型的输入。

图像学习之旅 1128

为什么学习率预热(warmup)能显著改善Transformer等大模型的训练稳定性?

t$ 的分母 $(1-\beta_2^t)$ 极小,导致方差估计值波动剧烈。若此时 $\eta$ 较大,更新步长 $\Delta \theta$ 将不可控。Adam 优化器的参数更新公式为 $\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}{warmup}$ 时人为压低 $\eta_t$,从而保证 $\Delta \theta$ 的数值稳定性。在训练初期($t$ 很小),$\hat{v}{warmup}}$,在 $t < T。

2402_84593233的博客 182

在CoppeliaSim里实现一个最简单的强化学习

前言 上一篇文章中介绍了CoppeliaSim的一些基本知识和一个简单的用python去控制CoppeliaSim里面四旋翼无人机运动的一个例子。文章链接 :https://blog.youkuaiyun.com/qq_37051669/article/details/115324851 本文将继续介绍如何利用CoppeliaSim的物理环境去实现一个最简单的强化学习。 如何实现强化学习 强化学习(Reinforcementlearning)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利.

qq_37051669的博客 3765

ARM 内存管理

最早期的计算机,程序是打在卡片上的,CPU 读一张卡片执行一条指令,效率极低。后来有了内存,程序要先加载到内存再执行,也就是 “存储程序” 概念,这才开启了操作系统的发展。1. 单道编程的内存管理2. 多道编程的内存管理:解决 “同时跑多个程序” 的问题为了提升资源利用率,出现了。

qq_52240295的博客 364

XSS漏洞之PDF生成:从XSS到服务端任意文件读取

XSS是最为常见的Web漏洞之一,多年来连续入选OWASP TOP10,相信大家都耳熟能详。 它是一种代码注入类的攻击,是一种客户端侧的攻击,攻击者通过在Web应用中注入恶意JavaScript代码,通过点击URL,最终在受害者浏览器端执行的一种漏洞。主要有反射型XSS、存储型XSS、基于DOM的XSS三类。XSS一些比较常规的危害大概有:重定向浏览器、窃取Cookie、浏览器劫持等。本文章侧重于发现XSS后的进一步利用。 主要介绍在某次实际测试过程中,发现XSS漏洞之后,如何进一步的利用,最终通过XSS达

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3780

27、VXLAN BGP EVPN网络的自动化部署与运维管理

本文深入探讨了VXLAN BGP EVPN网络从初始配置到运维管理的全生命周期自动化流程,涵盖Day-0设备自动上线、Day-0.5增量变更与连接验证、Day-1覆盖服务配置与计算集成,以及Day-2监控与故障排查。详细介绍了推送与拉取两种配置模型、主流工具如Cisco VTS、NFM、DCNM的功能特点,以及开源自动化工具的应用。通过流程图和命令示例,系统展示了MAC/IP学习、BGP通告和VXLAN封装的验证方法,为构建高效、可扩展的数据中心网络提供了全面的技术指导。

banana的博客 81

OpenHarmony 应用无感读写公共目录方案:不改设备形态,跳过权限弹窗

方案用户感知是否改设备形态适用场景运行时权限弹窗有感(需点允许)否标准形态设备,用户可接受交互改 devicetype=tablet无感是(全 ROM 迁移,风险大)需整机形态迁移的产品系统预授权(推荐)完全无感否需公共目录读写且用户不可感知的场景应用沙箱完全无感否仅供本应用使用的私有文件最终建议:在不修改设备形态标识的前提下,通过系统配置文件按“包名 + 签名指纹”做安装时预授权,是实现 OpenHarmony 应用无感读写公共目录的最务实路径。

qq_44160056的博客 259

YOLOv8/v9工业零件缺陷检测实战指南:从原理到产线部署

摘要:本文系统介绍基于YOLOv8/v9的工业零件缺陷检测技术,从工业质检背景与需求出发,详解缺陷检测原理、算法构建与模型训练,提供从数据集准备到移动端部署的全流程实操方案。包含多尺度检测、纹理分析等高级技术,适配工业相机的环境优化策略,以及完整质检系统代码实现。适合工业视觉领域新手与进阶开发者,助力快速构建高鲁棒性的缺陷检测系统。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1306

React Native for OpenHarmony 实战:react-native-file-logger 日志库鸿蒙化适配

本文记录了将 react-native-file-logger 适配至 OpenHarmony 的实战过程。基于鸿蒙 7.0 模拟器,通过 5 个 TurboModule 方法实现日志落盘、轮转、列举与删除,采用 fileIo 实现核心功能,支持按大小和跨天轮转,归档文件命名精确至毫秒。邮件发送功能因平台限制按能力边界处理,明确拒绝并提示用户手动导出。验证通过,日志文件结构清晰,内容完整,产出 HAP 示例与独立 HAR 库,中英双语文档齐全,为鸿蒙应用日志管理提供可靠方案。

m0_62930060的博客 274

【人工智能论文发表】基于医学病例文本和多模态大模型的医疗影像分割方法研究

摘要:本研究提出MMS-Former,一种基于级联多模态Transformer的文本引导医学图像分割框架。该模型创新性地将临床文本信息深度融入图像分割全过程,通过SwinUNETR提取视觉特征,ClinicalBERT编码病历文本,并在解码器的每个上采样阶段通过交叉注意力模块实现多级文本特征融合。实验表明,相比纯视觉模型,MMS-Former在Dice系数和IoU指标上分别提升3%以上,在处理边界模糊目标时表现尤为突出。模型还设计了结合Dice损失和图文对比损失的复合目标函数,确保分割精度与语义对齐。代码实

u012133341的博客 141

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Docker 部署 devkitARM:轻松搭建掌机自制程序编译环境

devkitARM 是一款面向掌机自制程序的开源交叉编译工具链,旨在为 Game Boy Advance、Nintendo DS、Nintendo 3DS、GP32 和 GP2X 提供编译器与开发库,并把源码编译成对应平台的程序文件。本文将介绍如何通过 Docker Compose 部署 devkitARM,搭建掌机自制程序编译环境,帮助开发者在容器里编译这些程序,适合不想在本机安装整套工具链,以及要在持续集成里固定工具链的场景。

java_logo的专栏 370

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

云手机私有化部署完整方案:基于ARM服务器搭建私有安卓云集群

ARM 服务器是私有化安卓云集群最优硬件底座,原生架构匹配 Android,高密度、低损耗,非常适合企业内网场景。整套私有化方案的核心,从来不是 “跑起来安卓”,而是隔离可控、可审计、可运维、可扩容。两条路线各有取舍:开源自建灵活、门槛高;商用私有化交付开箱即用、安全能力完备,是当前企业生产环境主流方案。六边云手机私有化方案,补齐了自建方案在驱动适配、管控平台、审计合规、信创适配上的短板,适合对数据主权、内网隔离有强需求的政企、自研 App、垂直行业客户。

a598652的博客 336

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ARM 汇编入门(六):栈、子程序与 AAPCS64 调用约定

AArch64汇编中,函数调用依赖AAPCS64 ABI协议,确保跨语言、跨编译器的二进制兼容。核心规则包括:寄存器分工明确(caller-saved可覆盖,callee-saved需保存)、栈指针SP必须16字节对齐、栈帧大小为16字节倍数;参数通过X0~X7(整数)和V0~V7(浮点/SIMD)传递,超出则压栈;大结构体传指针,小结构体拆入寄存器;非叶子函数须保存LR(X30),否则返回错误;标准prologue/epilogue维护调用链与栈安全。掌握这些规则,方能实现手写汇编与高级语言的无缝协作,避

m0_58087444的博客 247

openharmony 设备录像「无声音」全流程排查与修复

录制视频没有声音」从最初的恐慌排查,最终落在了一个系统级代码分支的选择问题上。最终解法:把走禁用分支的条件去掉,让系统走自己的正常音频准备流程。技术要点写在代码注释里了:一句 ARM64 分支指令,让整个媒体引擎重新学会「听」。

qq_44160056的博客 206

2026.11.9录屏笔记

e.g:服务器划分出一个目录作为可访问的目录,客户端通过网络发起标准的fs请求来读取,主机上所有的数据存放在磁盘,磁盘的格式是xfs,访问时所用到的也是xfs格式,这是一个标准的网络协议而不是本地文件类型格式,后期客户端将这个文件理解为基础的网络文件,用mount连接。每一个层级的域对应一个服务器(根域---根域服务器,顶级域---顶级域服务器,目的是为了在全球获取到唯一性备案)根域名服务器记录六个顶级域名服务器的域名和ip,顶级域名服务器记录二级以此类推。重置时间(发起再次请求的时间间隔<同步时间)

ever_you_love的博客 95

#OpenHarmony 权限体系拆解:user_grant、system_grant 与权限定义表

文件分区内容system(只读)权限定义表读的就是它system(只读)预授权清单:按应用包名 + 签名证书哈希匹配,安装时自动授予 user_grant 权限access_token 数据库data每个应用 token 的实际授权状态(持久化的 grantStatus)

qq_44160056的博客 133
上一篇: 【机密计算顶会解读】10:WAVEN——用于 Enclaves 的 WebAssembly 内存虚拟化
下一篇: 【机密计算科普】02:机密计算标准化进程成果汇总(国内外)
ZeroClave
博客等级 码龄2年 248粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值