0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

模拟技术学习

微云疏影 来源:csdn,qq_40316844 作者:csdn,qq_40316844 2023-02-13 09:37 次阅读

QEMU架构和内部

快速模拟(QEMU)

机器模拟器+虚拟器

模式:

用户模式模拟:允许为一个CPU构建的进程被另一个CPU执行

QEMU作为进程模拟器

系统模式模拟:允许模拟一个完整的系统,包括处理器和各种外围设备

QEMU作为系统模拟器

常用:

用于交叉编译开发环境

虚拟化,特别是设备模拟,象xen和kvm

安卓模拟器(SDK的一部分)

动态二进制翻译

动态翻译

第一种解释

以副产品的形式执行代码发现

翻译代码

象它被发现的那样递增的

将翻译后的块放入代码缓存中

把源到目标主机的映射保存到地址查询表中

模拟过程

运行完已经翻译的块

在表里寻找下一个资源主机

如果已经翻译了,跳转到目标主机

没有就直接翻译

象JIT编译器一样工作,但是不包括解释器

所有的客户代码都要经过二进制翻译

客户代码被划分成翻译块

一个翻译块和基本块相似,因为都是作为一个整体执行(整个块中没有跳转)

翻译块被翻译成一个单独的主机指令序列,被缓存到翻译缓存中。

缓存块使用客户虚拟地址(PC计数),所以他们能很容易的被发现

翻译块的缓存大小能够改变(通常是32M)

一旦缓存用完,整个缓存区清零

pYYBAGPplGqAD7TXAABIqiUrVCM940.jpg

先将源指令流(二进制)转换成更短小且更加简易的操作,即微指令(C语言),被GCC编译成对象文件(二进制),最后QEMU将对象文件链接成目标的指令流(二进制)。

poYBAGPplGqAJRRdAAAqwbKxV3c720.jpg

功能模拟

模拟处理器做的工作,而不是处理器怎么做

动态二进制翻译

解释器一次执行一条指令

固定的开销显著降低

反而,QEMU根据需要转换代码

翻译基本块 产生本地主机代码‘

把翻译块存储到翻译缓存中

微小代码发生器(TCG)

微操作(微指令)

固定的寄存器映射能够降低负载和存储字符串

翻译块

一个TCG基本块对应着一个被分支指令终止的指令列表

块链接

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzE2ODQ0,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzE2ODQ0,size_16,color_FFFFFF,t_70

cpu_exec() 在主函数的每一步都被调用

项目会一直执行除非遇到一个未连接的块

通过 结尾返回cpu_exec()

块链接

通常来说,每一个翻译块的执行都伴随这很多特殊代码块的执行

开始时初始化处理器来执行产生的主机代码,并跳转到代码块

结束时恢复正常状态并返回到主循环

返回主循环后,每一个块显著的增加了开销,增长的还很快

当一个块返回主循环,下一个块已经知道并且已经被翻译,QEMU能够修改源代码来直接跳转到下一个块,而不是跳转到结尾

直接在基本块之间跳转

为跳转准备空间,然后回到结尾

每一次一个块返回,都要尝试链接它

当是发生在几个连续的块上时,这些块会形成链接和循环

这允许QEMU模拟紧密的循环,而不需要运行额外的代码

在循环的条件下,这也意味除非执行到一个没有翻译或者没有链接的块,这个控件不会返回到QEMU

异步中断

如果一个硬件中断被挂起,QEMU不会检查每一个基本块。反而,用户必须要调用一个特殊的功能来告诉说有个中断被挂起

这个功能重置了当前执行的块的链接,返回到控制CPU模拟的主循环

寄存器映射

如果目标寄存器的数目大于源寄存器的数目(例如:翻译x86的二进制到RISC)(RISC精简指令集)

当目标寄存器的数量不够时,可能会基于每一个块,或者每一个追踪,或者每一个循环

不常用的寄存器(源)可能没有映射

如何处理项目计数器

目标主机不同于源主机

对于间接的分支,寄存器持有源主机 一定会提供一种将源主机映射到目标主机的方法

翻译系统需要时刻追踪源主机

其它主要组件

内存地址转换

由软件控制的MMU(模型)将目标虚拟地址翻译成主机虚拟地址

两级客户物理页描述符表

客户虚拟地址和主机虚拟地址之间的映射

地址转换缓存(tlb_table)直接将目标虚拟地址翻译成主机虚拟地址

客户虚拟地址和该设备注册的I/O功能之间的映射

用于内存I/O映射的缓存(iotlb)

设备模拟

i440FX主机PCI网桥,Cirrus CLGD 5446 PCI VGA卡,PS/2鼠标和键盘,PCI IDE接口(HDD, CDROM), PCI和ISA网络适配器,串口,PCI UHCI USB控制器和虚拟USB hub,…

软件地址转换

虚拟到物理地址的转换时在每一次内存访问时完成的

地址转换缓存加速了转换

为了避免每次MMU映射改变时刷新已经翻译代码的缓存,QEMU使用的是物理索引的翻译缓存

每一个基础块都使用他的物理地址索引

当MMU映射改变时,只有基础块的链接被重置,(例如一个基础块不能直接跳转到另一个)

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzE2ODQ0,size_16,color_FFFFFF,t_70

QEMU存储堆栈

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzE2ODQ0,size_16,color_FFFFFF,t_70

应用和客户内核的工作类似于裸金属

客户通过仿真硬件与QEMU对话

QEMU代表客户对一个镜像文件执行I/O

主机内核对待客户I/O就像任何用户应用程序一样

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzE2ODQ0,size_16,color_FFFFFF,t_70

来源:csdn,qq_40316844

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    795

    浏览量

    41663
  • C语言
    +关注

    关注

    180

    文章

    7605

    浏览量

    136907
  • 模拟器
    +关注

    关注

    2

    文章

    877

    浏览量

    43242
收藏 人收藏

    评论

    相关推荐

    华为模拟技术讲义

    华为模拟技术讲义,学习一下,对你肯定很有帮助!
    发表于 07-08 09:41

    模拟电子技术

    模拟电子技术学习下吧
    发表于 03-24 18:42

    模拟电子技术基础

    求推荐学习模拟电子技术基础的软件
    发表于 08-19 15:46

    我的模拟技术学习心得

    和ADI都是很好的模拟技术学习的大学,从各种运放,精密的,低噪的,高速的,低功耗,差分的都有很好的涉及,在ADI和TI的帮助下我对运放的认识越来越深,能熟练地读懂数据手册,能够有SPICE模型并借助仿真
    发表于 03-13 19:38

    模拟电子电路学习教程

    模拟电子电路学习教程:从最基础的入门,并配有图解详细说明,步步深入,非常适合初学模拟电子技术学习
    发表于 01-18 15:04 145次下载
    <b class='flag-5'>模拟</b>电子电路<b class='flag-5'>学习</b>教程

    模拟电子技术基础》习题答案

    模拟电子技术的课后习题进行了详细解答,能有效帮助对模拟电子技术基础的学习
    发表于 11-17 11:23 89次下载

    模拟电路学习笔记

    模拟电子的相关知识学习教材资料——模拟电路学习笔记
    发表于 09-20 16:10 0次下载

    模拟电路和数字电路学习笔记

    模拟电子的相关知识学习教材资料——模拟电路和数字电路学习笔记
    发表于 09-20 16:10 0次下载

    模拟电路和数字电路的学习笔记

    模拟电子的相关知识学习教材资料——模拟电路和数字电路的学习笔记
    发表于 09-20 16:10 0次下载

    Google与NASA合作 将利用模拟和机器学习技术搜索外星生命

    Google Cloud与NASA的前沿开发实验室合作,利用模拟和机器学习技术搜索外星生命。
    发表于 10-22 16:47 1004次阅读

    实例解读模拟电子技术 完全学习与应用pdf

    实例解读模拟电子技术 完全学习与应用pdf
    发表于 12-09 16:08 0次下载

    模拟电子电路学习教程分享

    模拟电子电路学习教程分享。
    发表于 03-10 14:36 0次下载

    模拟电子技术基础

    模拟电子技术基础 用于学习模拟电路需要的必备资料。
    发表于 10-17 14:20 186次下载

    模拟电子:掌握信号滤波技术

    掌握信号滤波技术是指学习如何使用模拟电子技术来处理信号,以获得更好的信号质量。掌握信号滤波技术需要学习
    发表于 02-17 15:05 864次阅读

    模拟电子电路学习教程

    电子发烧友网站提供《模拟电子电路学习教程.pdf》资料免费下载
    发表于 04-14 09:40 41次下载