
指令集
杨枫_mind
这个作者很懒,什么都没留下…
展开
-
x86在虚拟机里对由另一个线程atomic修改的变量polling,出现了长时间拿不到更新的变量数据的情况,不知为何?
改由__atomic_load()之后可正常获得更新后的变量值。原创 2022-05-29 00:02:19 · 249 阅读 · 0 评论 -
Hypervisor这个层次对TLB的使用与EL0/1比有限制吗
我在利用虚拟化这篇文章中出现了一个错误,这是一个不起眼,但是细思恐极,再细思安心的错误,我有这样一句话:对于在EL2中,这条尤其重要,很多cortex都会有IPA-PA相对于VA-PA的缩水,所以EL2中的代码要怎么做也是需要思考的问题。当然,现在我已经在这段话后面添加了一些解释,表述了自己的错误,我之前想当然的认为了:1阶段页表的虚拟地址是VA,对应EL1/0所用的地址,2阶段页表的...原创 2020-03-27 10:02:20 · 769 阅读 · 0 评论 -
GICv3-4宏观视图
按照主题来讲,首先是GIC本身这个大主题的拆解。从功能器件来看GICv3-4已经开始对虚拟化提供大量支撑,从物理硬件上,按照功能器件可以拆解成:Distributor、ITS、Redistributor、CPU interface的集合。先将图给出来:Distributor其中Distributor连接外设承载SPI(Shared Pheripheral Interrupts)...原创 2020-03-13 20:26:31 · 2560 阅读 · 11 评论 -
SMMUv3(2)
流的编号做一次转换需要地址、size以及相关属性如读/写/安全域/非安全域/可共享性/可缓存性;如果超过1个client设备使用SMMU流量,那么他们还要有StreamID来区分;StreamID在系统里的构建传送是具体实现决定的,逻辑上讲,一个StreamID就关联到一个发起转换的设备。物理设备到StreamID的映射必须描述给系统软件,ARM推荐StreamID用密集命名空间,从0开始;每...原创 2020-02-10 20:35:40 · 3347 阅读 · 12 评论 -
SMMUv3 (1)
一些词汇。DVM: Distributed Virtual Memory,相互传递广播TLB维护操作的消息的协议;RC: PCI-E的Root Complex,如下图:Endpoint(EP): 一个PCIE功能,用于一个SMMU client节点设备的contextPASID: Process Address Space ID,一个PASID是一个Endpoint的本地ID,...原创 2020-02-10 20:34:32 · 5658 阅读 · 0 评论 -
GICv3-4零散的寄存器解读(1)
ICC_SRE_EL3:控制EL3下选择系统寄存器接口,或内存映射接口,作为GIC CPU接口;(非正规表述就是对ICC_*/ICH*寄存器的访问是通过寄存器接口还是内存映射接口,如果使用内存映射接口,则访问寄存器会发生异常,并被本异常等级捕获) bit3 Enable:使能低异常等级对ICC_SRE_EL1/2的访问; 0-将Secure/non-SecureEL1...原创 2020-02-04 14:35:34 · 1644 阅读 · 0 评论 -
DMA的经典解读
Today all computers are architectured the same way: a central processor and a number of peripherals. In order to exchange data, these peripherals are interconnected by a bus over which all communicati...原创 2020-01-15 14:24:14 · 717 阅读 · 0 评论 -
利用上虚拟化,说一下TLB,以及VHE
arm给出了基于虚拟化技术会产生的优势:1. 隔离: 虚拟化的核心是在单个物理系统上运行的虚拟机之间提供隔离。这种隔离允许在互不信任的计算环境之间共享物理系统。例如,两个竞争对手可以共享一个数据中心中的同一台物理计算机,而不必访问彼此的数据。2. 高可用性: 虚拟化允许在物理计算机之间无缝,透明地迁移工作负载。此技术通常用于将工作负载从可能需要维护和更换的故障硬件平台上迁移出去。...原创 2020-01-15 14:24:13 · 2985 阅读 · 4 评论 -
EL2异常捕获设置-HCR_EL2
前言 之前写了一点关于异常的东西,比较浅显的勾勒了一下异常的全貌,就像一幅20万像素的地球全景照,20万像素也就是能画出蓝白相间的圆;画成这个样子当然不会是我这种对吹牛都要持证上岗的人的作风。再写一篇或许更繁复但只求仅能部分指明要害的文章,以表述异常的一个重要分支,EL2层行为控制相关的寄存器HCR_EL2当然也顺手写到了EL1层同类型的寄存器SCTLR_EL1。为何选择HCR_E...原创 2020-01-14 15:46:03 · 5279 阅读 · 0 评论 -
2阶段页表转换过程
1.所有ARMv8指令集都提供返回页表转换结果的指令(作为指令的参数提供 并 使用指定的转换阶段或区域)2.指令仅执行-指令所在安全状态和异常等级能访问的-转换非安全态下的指令不能得到-Secure address-转换阶段的结果非安全态下,低异常等级下执行的指令,不能得到高异常等级控制的页表转换阶段3.AT <operation>,<Xt>operat...原创 2020-01-13 14:26:20 · 1367 阅读 · 0 评论 -
CPU的自我控制之(6)-后记
——————————————————————补充——————————————————————我把ARMv8-A指令集对异常的设计划分为指令、CPU状态和机制三部分,指令是编入指令流,在特定条件下能产生异常的指令;CPU状态由寄存器标志,这里说的状态就不止是EL0/1/2/3了,还包含ELx是否使能,两阶段MMU是否是能、cache/tlb归谁维护、异常优先级的配置,异常的屏蔽...原创 2020-01-13 14:24:56 · 288 阅读 · 0 评论 -
CPU的自我控制之(6)-结束
——————————————————————异常第四步 一些简单的东西——————————————————————给这么个题目就是想说,这步骤的划分其实是我捏造的,大概是这顺序,但没求证过!简单的东西不多栈指针的选择算是一个,哎呦,一不小心在前面写完了。。。参看一下SPSR下SP的描述。第二个简单的东西是清除物理SError中断异常,如果是虚拟SError...原创 2020-01-13 14:24:30 · 302 阅读 · 0 评论 -
CPU的自我控制之(5)-回头路ELR_ELx 与 指示器ESR_ELx
——————————————————————异常第二步 准备活动——————————————————————(下面一句为了承上启下,没什么卵用)SPSR搞好后,CPU状态可以保障了,开始可以做一些准备活动了把异常返回地址设好。首选的返回地址保存在ELR_ELx,x对应异常等级。啥叫首选的返回地址呢,异常一不小心或故意的发生了,PE二二虎虎的把SPSR_ELx套到...原创 2020-01-13 14:24:18 · 1597 阅读 · 4 评论 -
CPU的自我控制之(4)-异常的SPSR
——————————————————————异常第一步(xx纸尿裤) SPSR—————————————————————好了,题外背景总算是磕磕绊绊的描述完了,终于可以说点本文主题相关的事儿。当进入一次异常,首先是PSTATE,进入异常将要用的PSTATE,即PE状态会被放在异常等级对应的SPSR_ELx(估计会被复制到PSTATE里),x是EL等级,当然也就是会有多个...原创 2020-01-13 14:24:09 · 654 阅读 · 0 评论 -
CPU的自我控制之(3)-异常的同步与异步
——————————————————————异常 背景——————————————————————上面说了一大篇,对主题的意义就是表述清楚一件事:异常,使指令流直接在CPU上执行而不会劫持CPU。而我认为这是所谓CPU支持虚拟化的关键点,同样是系统调用的关键点(内核保护自己的保障,MMU也应该算在内,另说)。另外:Aarch64将异常划分了等级,我就不絮叨了,然后aarch3...原创 2020-01-13 14:23:57 · 2683 阅读 · 6 评论 -
CPU的自我控制-异常之于虚拟化
很难说直接从第一页开始阅读分析完所有ARMv8-A指令集后,就能搞清楚虚拟化与ARMv8-A指令集的事情,毕竟老虎咬天也是无处下口。不能广度优先搜索,就得先搞搞深度优先了,于是就要找一个关键的点作为入口,这个入口需要符合两个要素:1.足够关键:不是关键点不足以涉及关键问题,也不足以充分描述虚拟化与ARMv8-A的事情。2.有知识基础,但不是充足的知识基础:如果这个切入点上,连基本的断言...原创 2020-01-12 15:07:52 · 377 阅读 · 0 评论 -
CPU的自我控制-异常之于syscall
本质上讲,如果一个程序不使用任何库、系统调用,所有代码都是自包含的,它是可以直接在CPU上执行的,有疑问的话可以给我发邮件,我乐意受教。于是问题就来了,一个用户态的程序在调度到CPU上开始执行,这个程序的指令流是否可以为所欲为。很明显,这是不可能的,在没有内核的CPU上运行的指令流自己会照顾好自己,它确实可以为所欲为;但在用户态的程序,如果没有系统调用的话你会发现它没有任何操作硬件的能...原创 2020-01-12 15:02:16 · 536 阅读 · 0 评论