首页 > 其他分享 >幽灵和熔断+LR/SC的实现和使用+Consistent和Coherent+memory 属性 Device-nGnRnE+IP-XACT+vcs token is "until"

幽灵和熔断+LR/SC的实现和使用+Consistent和Coherent+memory 属性 Device-nGnRnE+IP-XACT+vcs token is "until"

时间:2023-12-24 15:22:50浏览次数:41  
标签:IP module 描述符 vcs LR lock SC nGnRnE CPU

幽灵和熔断

幽灵和熔断是基于瞬态指令流的缓存侧信道攻击。在瞬态指令流中被执行的内存加载指令如果将一个数据带入了缓存,则即使流水线回滚期间处理器丢弃了该指令返回的访存结果,已经被修改的缓存状态却无法撤销。由此,攻击者可以通过监测缓存的变化来推断受害者程序的访存地址,如果该地址本身包含敏感信息,就会引发信息泄露。
幽灵利用的是分支预测机制。
熔断利用的是乱序执行机制。
解决的办法可以是软件插入fence,硬件修改cache等。
代码复现:
https://github.com/Eugnis/spectre-attack
参考:
https://www.wenhui.space/docs/08-ic-design/cpu/meltdown-and-spectre/
https://zhuanlan.zhihu.com/p/583851306

LR/SC的实现和使用

  1. L3层不负责LR、SC指令的lock的monitor。LR、SC指令出现的lock bit一般存储在L1 cache中,每个核心都有。初始上电以后,当核心0和核心1同时发起LR访问,同时经过L3层,L3层进行仲裁,只能将数据存储在核心0或者核心1上,而另外一个核心虽然也拿到了数据,但影响到了第一个拿到数据的核心,从此两个核心中的L1 cache变成Shared Clean状态。但是只有第一个核心能获取到对该地址的lock位置写1。第二个core尝试作出的SC指令必定是失败的。后续无论第二个核心再执行多少条LR指令,都不会让第二个核心将第一个核心的lock位置变成1,因为第二个核心通过L3层观察到第一个core没有清除lock位置。
  2. LR、SC指令在多核之间,每个核心都有一个lock位置,因此其它核心拿到LR指令以后,不论LR和SC执行多少次,lock位置都不会为1,保证了独占性。
  3. LR和SC在单个核心上的使用会出现一致性问题,因为lock位置共享。对于单个核心的数据共享,不应该使用LR和SC,否则会存在一致性问题;而是手动设定软件的lock bit,拿到lock bit的线程可以执行。对于单个核心的软件lock,其实可以模拟cache的MESIbit,使得多个线程共享该bit,实现类似LR、SC的操作。

Consistent和Coherent

Consistent是由于多个Master对同一块内存区域的读写顺序造成的问题,只能由硬件提供相关的机制,由软件来保证。 而Coherent则是由于同一块内存区域可能有多份拷贝(主要是Cache)而造成的数据的不一致性,可以由硬件来保证。
参阅:
https://zhuanlan.zhihu.com/p/21387258

memory 属性 Device-nGnRnE

如何划分shareable domain是和系统设计相关,我们假设一个系统的domain分配如下:
(1)所有的cpu core属于一个inner shareable domain
(2)所有的cpu core和dma controller属于一个outer shareable domain。(这个如果硬件不支持就没有)

在ARM architecture中,对一个normal memory location而言,是否是coherent是和它的页表中的shareability attribute的设定相关。
(1)non-shareable。根本不会再多个agent之间共享,不存在coherent的问题。
(2)inner-shareable。说明inner shareable domain中的所有的agent在对该内存进行数据访问的时候,硬件会保证coherent。
(3)outer-shareable。说明outer shareable domain中的所有的agent在对该内存进行数据访问的时候,硬件会保证coherent。

对于device type,其总是non cacheable的,而且是outer shareable,因此它的attribute不多,主要有下面几种附加的特性:
(1)Gathering 或者non Gathering (G or nG)。这个特性表示对多个memory的访问是否可以合并,如果是nG,表示处理器必须严格按照代码中内存访问来进行,不能把两次访问合并成一次。例如:代码中有2次对同样的一个地址的读访问,那么处理器必须严格进行两次read transaction。
(2)Re-ordering (R or nR)。这个特性用来表示是否允许处理器对内存访问指令进行重排。nR表示必须严格执行program order。
(3)Early Write Acknowledgement (E or nE)。PE(Processor Element/Engine)访问memory是有问有答的(更专业的术语叫做transaction),对于write而言,PE需要write ack操作以便确定完成一个write transaction。为了加快写的速度,系统的中间环节可能会设定一些write buffer。nE表示写操作的ack必须来自最终的目的地而不是中间的write buffer。
https://blog.csdn.net/shenhuxi_yu/article/details/90617675
http://www.wowotech.net/kernel_synchronization/Why-Memory-Barriers.html

DMA和CPU访问一致性的方法

使用描述符。

描述符是的本质就是4个32位的内存,描述符的Status表示该描述符的状态和控制信息。因为描述符是DMA和CPU二者之间的共享内存,既然是共享资源,就需要进行保护,当DMA在使用的时候,CPU就不能使用,当CPU在使用的时候,DMA就不能使用。这个使用权的控制,就通过TDES0寄存器中的OWN位体现出来,对应到发送描述符结构体就是Status变量的最高位。
image
当OWN位为0的时候,表示CPU可以将要发送的数据拷贝到描述符中,拷贝完成以后,CPU手动将描述符的OWN位设置为1,以此来告诉DMA控制器,CPU已经拷贝完数据了,DMA可以从描述符中取出数据进行发送了。这时候DMA就会取出描述符中的数据,将数据发送出去,DMA在操作完描述符以后,自动将OWN位设置为0,告诉CPU,DMA已经发送完数据,CPU可以拷贝下一帧数据到描述符上了。
https://blog.csdn.net/qq_22902757/article/details/104275441

IP-XACT

xml格式的IP生成后的规格表,比如ralgen软件可以利用这个xml或者ralf,生成寄存器模型
https://www.ip-soc.com/jishu/213.html

IP-XACT首先由SPIRIT Consortium发布的标准,其唯一目标是在设计社区内促进IP的可重用性。它使IP提供商能够为组件和设计提供可读和可机器处理的IP的单一描述,并与其他所需的数据一起分享给IP用户。IP-XACT还描述了系统设计和IP之间的互连以及其他细节,如地址映射、接口等。提供了一个通用的设计表示,可供IP供应商、设计集成商和EDA工具提供商在其流程内进行交换。

vcs token is "until"

vcs的一些sva使用拓展的形式,因此需要额外的编译命令:

-assert svaext

vcs编译解决 module名重复的冲突问题

https://blog.csdn.net/cy413026/article/details/102738194
在工作目录下,顶层是top.v,下面两个文件夹guest0和guest1,每个文件夹是相同名字的module,为不同的add.v。在顶层集成的时候,如果是要编译成以下的形式,需要借助lib_map。其中的g0用guest0下的,g1用guest1下的内容。
image
编译的时候,使用的filelist.f,不能将两个add模块编译成库(cell,否则检测到重复后只会编译某个而不是报错),而是要让它们编译成module。
需要编写lib_map,lib_map格式如下,可以使用相对路径,但是语句要增补分号。
image
两步法编译选项需要增补的命令,指定lib_map文件。三步法没有尝试,两步法可用。
image

Webhook

和Jenkins、CI、CD等可以联动。
https://zhuanlan.zhihu.com/p/580322982

  1. 企业微信群机器人提供一个Webhook地址,通过这个地址,就可以自动触发企业微信群机器人发出对应的消息。
  2. 腾讯兔小巢提供一个Webhook地址,对应的Webhook地址就可以把消息和企业微信群机器人打通,发送对应的用户反馈消息。
  3. 腾讯云Hiflow场景连接器提供Webhook地址,可以通过这个这个地址连接企业自己的系统/数据库/手机快捷指令等应用,并向后连接腾讯文档/企业微信机器人等300+应用。

标签:IP,module,描述符,vcs,LR,lock,SC,nGnRnE,CPU
From: https://www.cnblogs.com/bai2022/p/17924324.html

相关文章

  • 报错Module was compiled with an incompatible version of Kotlin. The binary versi
    报错ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmetadatais1.8.0,expectedversionis1.6.0.报错原因Kotlin的编译链版本不对ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmet......
  • SAP ABAP 更新函数(Update Function Module)执行出错的原因分析试读版
    本教程前一篇文章,我们已经介绍了SAPABAPUpdateWokeProcess和UpdateFunctionModule的基本概念。129.SAPABAPUpdateProcess(更新进程)的概念和设计动机解析回到笔者知识星球朋友的提问:我们通过一个实战例子来消化前一篇文章学到的理论知识。本教程之前介绍了SA......
  • ModuleNotFoundError: No module named 'numpy'解决方案
    1.使用numpy提示ModuleNotFoundError:Nomodulenamed'numpy' 2.切换到Python的安装路径下面想要安装numpy模块,报错提示“Unknownoption:ignore-installed“”Unknownorunsupportedcommand'install'” 3.看到有大佬说要切换到Scripts文件夹下面下载numpy,但是发现还......
  • syslog:action 'action-8-builtin:omfwd' suspended (module 'builtin:omfwd')
    参考文档Syslog-FluentBit:OfficialManualLinux-rsyslogd:操作“action-3-builtin:omfwd”已挂起-堆栈溢出(stackoverflow.com)背景介绍在研究FluentBit做日志数据采集端时看到官方实例syslogtcp方式采集后进行本地尝试,结果出现了如下错误:action'action-8-builtin:......
  • module java.base does not export sun.net.util to unnamed module
    目录使用jdk17启动flink1.15报错:java.lang.reflect.InaccessibleObjectException:Unabletomakefieldprivatefinalbyte[]java.lang.String.valueaccessible:modulejava.basedoesnot"opensjava.lang"tounnamedmodule@6e60f18解决办法:启动参数添加add-opens......
  • JavaTimeModule 所在包
    JavaTimeModule是jackson转换java8时间类的需要的typo包,但是jackson-databind包中不存在这个类,JavaTimeModule所在包为jackson-datatype-jsr310,maven坐标如下:<!--https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310--><dependency......
  • Git:submodule子模块操作
    一、子模块添加gitsubmoduleadd<url><path>gitsubmoduleaddhttps://github.com/../.gitthemes/MeiFixIt二、子模块更新gitsubmoduleupdate--remote--merge三、下载子模块同父模块一起下载子模块gitclone--recurse-submodules<repository-url>父模块......
  • CBAM: Convolutional Block Attention Module
    CBAM:ConvolutionalBlockAttentionModule*Authors:[[SanghyunWoo]],[[JongchanPark]],[[Joon-YoungLee]],[[InSoKweon]]doi:https://doi.org/10.48550/arXiv.1807.06521初读印象comment::(CBAM)提出了卷积块注意力模块。沿着空间和通道推断注意力特征,然后将......
  • ElasticSearch之Index modules
    索引的参数,分为两类:静态参数,仅支持在创建索引时指定,或者关闭索引后指定。动态参数,允许在索引工作期间指定或者修改。静态参数index.number_of_shards默认值为1。本参数用于控制主分片的数量,仅支持在创建时指定,对于已关闭的索引,修改本参数不会生效。es.index.max_number_o......
  • vscode调试import文件报错: ModuleNotFoundError No module named 'libs'
    vscode调试python时出现import其他文件夹找不到路径的报错,需要设置正确的workingdirectory(cwd)和PYTHONPATH(env){"version":"0.2.0","configurations":[{"name":"Python:CurrentFile",&quo......